O pacote foi clonado por iptables-mod-tee
ir após a clonagem quando adiciono uma regra como esta?:
iptables -t mangle -A POSTROUTING -o eth2 -j TEE --gateway 192.168.0.3
Consulte o diagrama abaixo. Eu acho que é óbvio que com o comando acima, o iptables-mod-tee
módulo usa o POSTROUTING chain
como fontemangle table
de clonagem , mas o que acontece com o pacote depois que ele é clonado? ou seja, para qual cadeia e tabela o clone vai?
EDIT: Adicionada uma linha tracejada vermelha ao diagrama acima, para descrever o caminho do pacote clonado descrito na resposta.
O pacote clonado através do TEE , é configurado para ser não rastreado pelo conntrack , impedido de ser duplicado novamente e emitido através da parte de saída local da pilha de roteamento, então visto pela primeira vez por raw/OUTPUT (você também pode consultar este fluxo de pacotes no Netfilter e esquema geral de rede : isso seria logo após o processo local). Isso seria o mesmo se a duplicação fosse feita antes (por exemplo, em mangle ou raw PREROUTING) para um pacote roteado. Isso torna difícil (mas não impossível ) receber tratamento adicional como um nat adicional, pois não será rastreado e é difícil distingui-lo do original.
Aqui está um exemplo de captura de TRACE (usando a versão do iptables-legacy) em uma configuração semelhante a OP's de um ping feito de 192.168.0.2 a 8.8.8.8: a captura foi no roteador usando
iptables -t raw -A OUTPUT -j TRACE
. O pacote roteado original não aparecerá, pois teria que ser capturado de raw/PREROUTING, validando assim a explicação acima informando que é feito a partir da saída.