Configuração:
cadeias e NAT são criados de acordo com o wiki oficial do nftables :
% nft add table nat
% nft add chain nat prerouting { type nat hook prerouting priority 0 \; }
% nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
Por esta configuração, o dnat funciona como esperado, por exemplo:
% nft add rule nat prerouting tcp dport 15000 dnat 192.168.0.50:20000
redireciona todos os pacotes TCP recebidos da porta 15000 para 192.168.0.50: 20000 e vice-versa.
No entanto, nenhuma regra de snat é processada (nenhuma regra de):
% nft add rule nat postrouting counter ip saddr 192.168.0.50 snat 1.2.3.4
% nft add rule nat postrouting counter tcp sport 20000 snat 1.2.3.4:1234
% nft add rule nat postrouting counter ip protocol tcp drop
Eu tentei estas regras separadamente ou em variações (oif, ip + tcp, ...) - os pacotes ainda estão passando inalterados (provados pela WireShark) ou não foram descartados. Embora:
type nat hook input/output
de acordo com a sugestão da AB ainda não resolver o problema. Então, como escrever uma regra de snatch nftables?
Tags networking nat linux