Estou tentando enviar pacotes para um aplicativo que escuta na eth0 do espaço do usuário da máquina como se eles estivessem vindo de uma máquina remota.
O que não consigo encontrar uma boa documentação é a maneira exata como um dispositivo TUN/TAP interage com o restante da pilha de rede? Os pacotes são encaminhados para eth0 se forem destinados a um host remoto? Os pacotes endereçados para o host local serão encaminhados para o aplicativo do espaço do usuário por padrão? Em que estágios os pacotes aparecem no kernel em relação à pilha do Netfilter?
O comportamento não parece bem documentado (http://openvpn.net/archive/openvpn-users/2005-05/msg00224.html,https://www.kernel.org/doc/Documentation/networking/tuntap.txt)).
Responder1
O dispositivo tun tap parece o mesmo para o kernel, pois não pode dizer se os dados vêm de um fio conectado a uma interface Ethernet ou de um aplicativo de usuário. Quando os dados são gravados, eles são encaminhados para o aplicativo do usuário, em vez de para um dispositivo de interface física, por exemplo. eth0
A interface para a qual um pacote é encaminhado será baseada na tabela de roteamento usual, que você pode visualizar com ip route
ou netstat -r
. Isso também se aplicará aos pacotes endereçados ao host local.
Além disso, a interface TUN/TAP também pode ser usada como interface para uma rota que aparece na tabela de roteamento.