
As extensões do Netfilterpágina de manualafirma que:
MASQUERADE: Este alvo só é válido na
nat
tabela, naPOSTROUTING
cadeia
PERGUNTA: Como clonar osaídado MASQUERADE
alvo com um TEE
alvo?
Se você observar o diagrama netfilter/iptables
abaixo, 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.POSTROUTING
corrente...ou existe?
Veja tambémesse.
PS
Qual é a justificativa para processar as mangle
tabelas nat
e na mesma ordem na interface outbound
e 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.8
apó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.