Cómo preparar un servidor para proxy en Ubuntu 16.04

Cómo preparar un servidor para proxy en Ubuntu 16.04

Estoy intentando preparar un servidor proxy usando Ubuntu 16.04, mi servidor tiene las siguientes NIC:

enp4s0    Link encap:Ethernet  HWaddr 00:15:c5:f6:c0:36
          inet addr:192.168.0.101  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::215:c5ff:fef6:c036/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5118 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3065 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7474529 (7.4 MB)  TX bytes:254689 (254.6 KB)
          Interrupt:16

enp6s0    Link encap:Ethernet  HWaddr 00:08:54:31:8f:79
          inet addr:172.24.3.19  Bcast:172.24.3.255  Mask:255.255.252.0
          inet6 addr: fe80::208:54ff:fe31:8f79/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7573 errors:0 dropped:334 overruns:0 frame:0
          TX packets:2756 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:756664 (756.6 KB)  TX bytes:881724 (881.7 KB)

enp4s0 es WAN nic, conectado a Internet. enp6s0 es una tarjeta LAN.

Los configuré tal como está en /etc/network/interfaces:

allow-hotplug enp4s0
iface enp4s0 inet dhcp

allow-hotplug enp6s0
iface enp6s0 inet static
address 172.24.3.19
netmask 255.255.252.0
gateway 172.24.0.1
dns-nameservers 172.24.3.1

enp4s0 recibió la ip de la siguiente manera, extraída de /var/lib/dhcp/dhclient.enp4s0.leases:

lease {
  interface "enp4s0";
  fixed-address 192.168.0.101;
  option subnet-mask 255.255.255.0;
  option routers 192.168.0.1;
  option dhcp-lease-time 7200;
  option dhcp-message-type 5;
  option domain-name-servers 192.168.0.1,8.8.8.8;
  option dhcp-server-identifier 192.168.0.1;
  renew 5 2018/06/08 16:03:17;
  rebind 5 2018/06/08 16:59:19;
  expire 5 2018/06/08 17:14:19;
}

SiguienteNairabytes.net, apliqué algunas reglas de iptables de la siguiente manera:

iptables -t nat -A POSTROUTING -o enp4s0 -j MASQUERADE
iptables -A FORWARD -i enp4s0 -o enp6s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp6s0 -o enp4s0 -j ACCEPT

Entonces las reglas de iptables quedaron de la siguiente manera:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Pero lo que no puedo entender es por qué sólo una de ambas NIC funciona correctamente a la vez. Si bien este servidor puede comunicarse con LAN mediante enp6s0, no puede conectarse a Internet.

Entonces le aplico esta ruta:

sudo /sbin/route add -net 0.0.0.0 gw 192.168.0.1 enp4s0

¡Y la cosa se revierte! Ahora el servidor puede conectarse a Internet, pero resulta inaccesible a la LAN.

Mi pregunta original eraun intento de establecer una puerta de enlace, pero parece imposible, porque enp6s0 es LAN nic y está conectado a una VLAN, mejor dicho, esta VLAN ya tiene una puerta de enlace (172.24.0.1) y quiero que este servidor sea visible para todas las demás subredes (no solo 172.24.0.1 pero tenemos otras 12 subredes. ¡Todas ellas vinculadas a la máscara de red 172.24.0.0).

Así que decidí crear un proxy, no una puerta de enlace. Instalé Squid, pero debo hacer que la conectividad funcione antes de finalizar la configuración de Squid. Mi esquema de red es como en esta figura:ingrese la descripción de la imagen aquí ¿Qué estoy haciendo mal?

información relacionada