edit: sou novato em networking e descobrindo coisas novas :)
Eu criei uma interface TUN programaticamente e capaz de interagir.
Eu configurá-lo e executá-lo por
ifconfig myTun 10.10.1.1/24 up
e está funcionando como eu posso ver ifconfig
e ping10.10.1.1
e para ter 100% de certeza se minha interface TUN está funcionando com meu problema escrito, fiz o seguinte:
Fiz o ping 10.10.1.2
e o pacote foi recebido no meu programa, escrevi de volta no tun e recebi novamente em um loop.
agora tenho certeza de que todos os pacotes FROM ou TO 10.10.1.x
estão sendo recebidos e gravados no TUN sem nenhum problema.
quando escrevo um pacote com qualquer IP de destino fora dele, ele 10.10.1.x
é gravado com sucesso no TUN, mas nenhuma resposta é recebida no TUN.
depois de pesquisar e ler muitos artigos, percebi que estava sendo descartado silenciosamente pelo kernel.
Eu li muitas perguntas e respostas sobre interfaces TUN em serverfault.com e descobri que perdi uma parte séria da minha lógica que é ROUTING .
meu entendimento final é: o pacote está OK e recebido pela pilha de rede no linux, mas o kernel não sabe o que fazer com o pacote por causa de seu destino estranho. então descobri que devo especificar algum roteamento para o kernel no iptables e habilitar, net.ipv4.ip_forward
mas não sei como.
meu objetivo final é:
quando envio algum pacote com qualquer destino externo 10.10.1.x
ao TUN, ele deve ser roteado para minha interface principal (que tem acesso a internet, e é wlps020f3
) e qualquer resultado desse pacote recebe de volta para minha interface TUN
como configurar o NAT no iptables para contornar?
Agradeço antecipadamente
Habilitar encaminhamento IPv4 :
Tráfego NAT da interface do túnel por trás do seu endereço sem fio:
Nenhuma dessas alterações sobreviverá a uma reinicialização. O link superior e este têm mais informações sobre esse aspecto.