Como preparar um servidor para proxy no Ubuntu 16.04

Como preparar um servidor para proxy no Ubuntu 16.04

Estou tentando preparar um servidor proxy usando Ubuntu 16.04, meu servidor possui as seguintes nics:

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 é WAN nic, conectado à Internet. enp6s0 é LAN nic.

Eu os configurei como estão ativados /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 recebeu ip da seguinte forma, extraído 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;
}

SeguindoNairabytes.net, apliquei algumas regras do iptables conforme a seguir:

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

Então as regras do iptables ficaram como segue:

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

Mas o que não consigo entender é por que apenas uma das duas placas funciona corretamente por vez. Embora este servidor possa se comunicar com a LAN pelo enp6s0, ele não pode se conectar à Internet.

Então eu aplico esta rota a ele:

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

E a coisa vai revertida! Agora o servidor pode se conectar à Internet, mas fica inacessível à LAN.

Minha pergunta original erauma tentativa de definir um gateway, mas parece impossível, pois enp6s0 é LAN nic, e está conectado a uma VLAN, melhor dizendo, esta VLAN já possui um Gateway (172.24.0.1) e quero tornar este servidor visível para todas as outras sub-redes (não apenas 172.24.0.1 mas temos outras 12 sub-redes todas vinculadas à máscara de rede 172.24.0.0).

Então decidi criar um proxy, não um gateway. Instalei o squid, mas preciso fazer a conectividade funcionar antes de terminar a configuração do squid. Meu esquema de rede é como nesta figura:insira a descrição da imagem aqui O que estou fazendo de errado?

informação relacionada