In summary, I would like to have Tun device traffic forwarded
back and forth through another network interface that has internet
connection. While I can see the traffic going out to internet and coming back, it is not routed back to my Tun device.
Aqui está minha configuração:
Eu tenho uma configuração muito simples usando o Mint Linux 15 VM no VirtualBox com o Win7 como host.
Dentro da VM, existem duas interfaces de rede - eth0 e tun0.
Eu configurei minha regra iptables para mascarar todo o tráfego que sai pela eth0.
iptables -I FORWARD -i tun0 -o eth0 -s 10.0.5.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Eu testei a regra usando um simples ping -I
. Então, até certo ponto, minhas regras de iptable estão funcionando.
ping -I 10.0.5.1 google.com
PING google.com (74.125.228.65) from 10.0.5.1 : 56(84) bytes of data.
64 bytes from iad23s07-in-f1.1e100.net (74.125.228.65): icmp_req=1 ttl=55 time=7.46 ms
Meu próximo passo é criar um pacote de solicitação ICMP com src = 10.0.5.1 e dst = 74.125.228.6 (google.com). Isto foi feito através de uma captura do tcpdump, então eu sei que os campos de pacotes / soma de verificação são todos válidos. E estou enviando este pacote para um soquete IP bruto usando um script Python muito simples.
- Python send_packet.py: link
Antes de eu executar o script python, eu configurei tshark para monitorar eth0 e tun0.
tshark -i eth0
tshark -i tun0
Então eu corro o script. Do console do tshark, posso ver o pedido do ICMP saindo, e a resposta do ICMP voltando do google.
1811.947250 192.168.1.115 -> 74.125.228.6 ICMP 98 Echo (ping) request id=0x0990, seq=1/256, ttl=64
1811.955146 74.125.228.6 -> 192.168.1.115 ICMP 98 Echo (ping) reply id=0x0990, seq=1/256, ttl=55
E na janela do tun0 tshark, não vejo nada.
Na minha opinião, como o pacote de solicitação do ICMP é definido como source = 10.0.5.1, eu esperaria que o IPTable desative a resposta do ICMP quando ele voltar. Isso não está acontecendo.
Portanto, minha configuração do IPTables está incorreta ou estou simplesmente interpretando mal o conceito do dispositivo Tun. Qualquer orientação seria muito apreciada.
Peço desculpas se eu uso mal qualquer terminologia. Eu sou um novato quando se trata de redes.