¿Cómo enrutar todo el tráfico que va a una dirección específica a localhost usando nft?

¿Cómo enrutar todo el tráfico que va a una dirección específica a localhost usando nft?

Necesito interceptar el tráfico que va a una IP externa y redirigirlo al host local. Es bastante simple usar iptables, pero no pude entender cómo hacerlo funcionar a través de nft. Creo una tabla y una cadena dentro de nft, pero no pude crear una regla, nft dice Operación no compatible.

Mesas

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

Regla

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 del núcleo

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

¿Qué hay de malo en mi regla? ¿O podría simplificarse?

Respuesta1

Asigne la dirección IP al host. La tabla de reenvío sirve para enrutar todo el tráfico; el firewall puede hacerlo, pero a menudo eso no es necesario.

Por ejemplo, asignando una dirección IP que inventé para loopback en Linux:

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

Como ruta de un solo host, tendrá prioridad incluso si normalmente existe en otro lugar de Internet. En una interfaz loopback, otros hosts no lo sabrán y sólo podrán acceder a ellos mediante el tráfico que "sale" del mismo host.

Si el host es un enrutador, decida si desea que se anuncie a otros enrutadores o no.

Ejercicios para el lector: regístrelo en IPAM y DNS. Hazlo persistente con el administrador de red de tu distribución.

información relacionada