Em primeiro lugar, a excelente figura ligada à página wiki iptables do ArchLinux é útil para identificar o fluxo de pacotes através das várias iptables chains (na parte inferior da resposta).
Backup
iptables-save > back.up.file
Verifique seu sabor da distribuição do Linux, eu precisei adicionar sudo porque eu não era root.
Questão 2 (a), 2 (b)
Para determinar os endereços de origem e destino, encontrei as funções LOG e TRACE muito úteis:
iptables -t filter -I OUTPUT -m limit --limit 5/m --limit-burst 10 -j LOG --log-prefix "ABC-LOG-PREFIX "
A tabela padrão é filter , mas a afirmei explicitamente para que você possa ver a sintaxe, especialmente se quiser explorar outras tabelas mangle , nat etc. Inseri a regra -I porque Eu queria que os pacotes fossem registrados antes que outras regras fossem aplicadas. Adicionado um limite de taxa para que o arquivo de log não fique saturado -m limit --limit 5/m --limit-burst 10 . Finalmente, acrescentou um prefixo para que o arquivo de log possa ser pesquisado facilmente --log-prefix . Por exemplo, no Linux Mint:
cat /var/log/kern.log | grep "ABC-LOG-PREFIX"
Em segundo lugar, para depuração, o comando TRACE rastreará um pacote durante todo o processo:
IPTABLES -t raw -A PREROUTING -p tcp -j TRACE
Atenção, isto irá rastrear all pacotes tcp, para mais informações veja Admin Berlin
Pergunta 3
Como as duas interfaces ( eth0 e tun0 ) estavam no mesmo host, no diagrama de filtro de pacotes abaixo você pode ver para o tráfego de saída que elas começam no mesmo ponto. A rota que um pacote toma é determinada pelo gateway padrão e sua interface associada, que pode ser determinada usando iproute2 executando:
ip route
Isso mostrará o gateway padrão, quais interfaces são usadas para quais intervalos de endereço.
Diagrama de Fluxo de Pacotes