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