(pergunta dublicada do AskUbuntu) Eu tenho um diagrama de rede a seguir:
diagrama de rede
192.168.0.0/24 rede com 4 servidores da web (.1, .2, .3, .4).
Existem 2 Ubuntu 14.04 (VM1 e VM2) nele.
Eles possuem duas interfaces físicas (eth0 e eth1). E um túnel ethernet L2TP, configurado dessa forma:
root@vm1:~# modprobe l2tp_eth
root@vm1:~# ip l2tp add tunnel tunnel_id 1000 peer_tunnel_id 2000 encap udp local 10.0.0.1 remote 10.0.1.1 udp_sport 6000 udp_dport 5000
root@vm1:~# ip l2tp add session tunnel_id 1000 session_id 3000 peer_session_id 4000
root@vm2:~# modprobe l2tp_eth
root@vm2:~# ip l2tp add tunnel tunnel_id 2000 peer_tunnel_id 1000 encap udp local 10.0.1.1 remote 10.0.0.1 udp_sport 5000 udp_dport 6000
root@vm2:~# ip l2tp add session tunnel_id 2000 session_id 4000 peer_session_id 3000
Em cada VM eu tenho um brigde configurado entre eth1 (conectado a 192.168.0.0 net) e interface l2tpeth0 (o túnel). Em /etc/network/interfaces
da VM2:
auto l2tp
iface l2tp inet static
address 192.168.0.6
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
bridge_ports l2tpeth0 eth1
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Agora, um servidor em 192.168.0.5 envia um pacote para o endereço remoto de 172.0.0.1. Seu caminho é mostrado com linha pontilhada de laranja (ele é capturado por brigde e enviado via túnel).
Minha tarefa é fazê-lo seguir o caminho pontilhado azul - tem NATted na VM1 e passar pela interface eth1.
Na VM2 eu tenho um NAT simples configurado:
iptables -t nat -A POSTROUTING -o eth0 -j LOG
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Mas isso não ajuda - eu não vejo pacotes em questing em /var/log/syslog
(existem alguns embora).
Apenas no caso:
root@vm2:~# cat /proc/sys/net/bridge/bridge-nf-call-iptables
1
root@vm2:~# cat /proc/sys/net/ipv4/ip_forward
1
Então a questão é como o pacote NAT destinado apenas a determinados destinos? Eu estou bem que, por exemplo, o tráfego de 192.168.0.4 para 192.168.0.1 usa túnel e não recebe NATted (por isso que eu tenho um túnel em primeiro lugar)