Como clonar a saída do alvo MASQUERADE com um TEE?

Como clonar a saída do alvo MASQUERADE com um TEE?

As extensões do Netfilterpágina de manualafirma que:

MASQUERADE: Este alvo só é válido na nattabela, na POSTROUTINGcadeia

PERGUNTA: Como clonar osaídado MASQUERADEalvo com um TEEalvo?

Se você observar o diagrama netfilter/iptablesabaixo, notará que nat.POSTROUTINGé a última cadeia a ser avaliada antes do pacote ser enviado para a interface de saída. Não existe uma raw.POSTROUTINGcorrente...ou existe?

insira a descrição da imagem aqui Veja tambémesse.

PS
Qual é a justificativa para processar as mangletabelas nate na mesma ordem na interface outbounde inbound, quando os dados fluemdireções opostasatravés dessas interfaces (saída e entrada)?

Responder1

Pelo que eu saiba, como não é possível ter umtabelas de ipregra executada depoisnat/POSTROUTING, que é o último gancho fornecido portabelas de ip, não é possível usartabelas de ippara capturar um pacote pós-NAT.


Mas isso é possível ao usarnftáveis, desde oa prioridade do gancho é definida pelo usuário.nftdeidiotadeclaração é um substituto direto paratabelas de ip'TE. É possível misturarnftáveisetabelas de ipcontanto que ambos não estejam fazendo NAT (o recurso nat é especial e não pode ser compartilhado corretamente entretabelas de ipenftáveis). Usandoiptables sobre nftablesversão detabelas de iptambém funcionará (deve-se ter cuidado ao liberar conjuntos de regras) e, claro, usar apenasnftpois tudo também funcionaria.

Aqui está um prontonftconjunto de regras para isso em um roteador com uma LAN NAT ligadaeth1e seu lado WAN ligadoeth2, para enviar uma cópia para 192.168.0.3 no lado da LAN. como descrito em umoutra pergunta do OP. Para ser colocado em algum arquivo chamadoforwireshark.nfte ser "carregado" usando nft -f forwireshark.nft:

table ip forwireshark {
        chain postnat {
                type filter hook postrouting priority 250; policy accept;
                oif eth2 counter dup to 192.168.0.3 device eth1
        }
}

O que importa aqui é que o valor 250 foi escolhido para ser maior quetabelas de ip'NF_IP_PRI_NAT_SRC(100).

Aqui está o que normalmente receberia o host wireshark quando o host ping o fizesse ping -c1 8.8.8.8após alguma inatividade (observe a estranha solicitação ARP do IP "errado", que pode não ser aceita por padrão em alguns sistemas):

root@ns-wireshark:~# tcpdump -e -n -s0 -p -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:06:03.074142 82:01:54:27:4d:d7 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.1 tell 192.168.0.2, length 28
21:06:03.074301 9a:80:fb:e6:6a:0a > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.3 tell 140.82.118.4, length 28
21:06:03.074343 7e:0a:6c:12:00:61 > 9a:80:fb:e6:6a:0a, ethertype ARP (0x0806), length 42: Reply 192.168.0.3 is-at 7e:0a:6c:12:00:61, length 28
21:06:03.074387 9a:80:fb:e6:6a:0a > 7e:0a:6c:12:00:61, ethertype IPv4 (0x0800), length 98: 140.82.118.4 > 8.8.8.8: ICMP echo request, id 1633, seq 1, length 64

Não sei a justificativa da ordem demangle/POSTROUTINGenat/POSTROUTING. De qualquer forma, isso faz partetabelas de ip' limitações, porque emnftáveis, além do equivalente amangle/SAÍDAque é especialdigite rotagancho para redirecionamento, todos os outros usos equivalentes demanglefazem partetipo filtro: não há realmente um separadomangledigite mais. Ser capaz de escolher a ordem das prioridades permite fazer mais.

informação relacionada