Como rotear todo o tráfego que vai para um endereço específico para localhost usando NFT?

Como rotear todo o tráfego que vai para um endereço específico para localhost usando NFT?

Preciso interceptar o tráfego que vai para o IP externo e redirecioná-lo para o host local. É bem simples usar o iptables, mas não consegui entender como fazer funcionar através do nft. Eu criei tabela e cadeia dentro do nft, mas não consegui criar a regra, o nft diz que a operação não é suportada.

Tabelas

sudo /usr/sbin/nft list ruleset
table ip filter {
        chain OUTPUT {
                type filter hook output priority filter; policy accept;
        }
}

Regra

sudo /usr/sbin/nft  add rule ip filter OUTPUT ip daddr $EXTERNAL_ADDRESS counter dnat to 127.0.0.1
Error: Could not process rule: Operation not supported

Módulos do kernel

lsmod | grep nf_tables
nf_tables             360448  1 nft_nat
libcrc32c              12288  3 nf_conntrack,nf_nat,nf_tables
nfnetlink              20480  1 nf_tables

O que há de errado com minha regra, ou ela poderia ser simplificada?

Responder1

Atribua o endereço IP ao host. Rotear todo o tráfego é a finalidade da tabela de encaminhamento, o firewall pode fazer isso, mas muitas vezes isso não é necessário.

Por exemplo, atribuindo um endereço IP que criei para loopback no Linux:

  ip a add 2001:db8:114:6402::1020 dev lo

Como rota de host único, ela terá prioridade mesmo que normalmente exista em outro lugar na Internet. Em uma interface de loopback, outros hosts não saberão disso, sendo acessíveis apenas pelo tráfego que "sai" do mesmo host.

Se o host for um roteador, decida se deseja que isso seja anunciado para outros roteadores ou não.

Exercícios para o leitor: registre isso no IPAM e no DNS. Torne-o persistente com o gerenciador de rede da sua distribuição.

informação relacionada