Como faço para encaminhar o tráfego entre o dispositivo Tun e o eth0?

5

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.

    A
  • interface eth0 está conectada à internet e é atribuída como 192.168.1.115/24 .
  • A interface tun0 é atribuída como 10.0.5.1/24 .

    ip tuntap add dev tun0 mode tun user askldjd
    ip link set tun0 up
    ip addr add 10.0.5.1/24 dev 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.

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.

    
por askldjd 22.11.2013 / 06:02

1 resposta

2

Seu principal erro é: supor que esse tipo de tráfego será encaminhado. Este não é o caso. Este é o tráfego de saída, não encaminhado, para a perspectiva da VM. As respostas do ICMP chegam ao eth0 e vão até a pilha do protocolo, portanto, você não pode veja-os no dispositivo tun0. Para mais detalhes, você pode procurar aqui: link

    
por 24.11.2013 / 16:02