Cómo enrutar paquetes cuyo destino está en un ipset a una interfaz nat

Cómo enrutar paquetes cuyo destino está en un ipset a una interfaz nat

Tengo una interfaz llamada em2, que es una interfaz nat. Quiero enrutar todos los paquetes cuyo destino está en un ipset llamado prueba a em2.

Si no uso ipset y enrutamiento de políticas, funciona bien

iptables -A POSTROUTING -t nat -o em2  -j MASQUERADE
ip route add 1.1.1.1 via 10.1.1.13 dev em2

Pero si uso políticas de enrutamiento e ipset

iptables -A POSTROUTING -t nat -o em2  -j MASQUERADE
ip rule add fwmark 1 lookup 100
ip route add default via 10.1.1.13 dev em2 table 100
ipset create test hash:ip
ipset add test 1.1.1.1
iptables -t mangle -N TEST_ROUTE
iptables -t mangle -A TEST_ROUTE -m set --match-set test dst -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -j TEST
iptables -t mangle -A PREROUTING -j TEST

El problema es que todos los paquetes se enrutan perfectamente a em2, pero no se puede recibir el paquete de respuesta. Según la captura de tcpdump, parece que el paquete de respuesta no realizó el nat correctamente. ¿Qué me perdí?

La captura de tcpdump se muestra a continuación, 10.1.1.14 es la dirección de em2

18:57:39.696669 IP 10.1.1.14.40169 > 1.1.1.1.53: 28094+ [1au] A? www.google.com. (55)
18:57:39.753114 IP 1.1.1.1.53 > 10.1.1.14.40169: 28094 1/0/1 A 142.250.66.100 (59)
18:57:44.701781 IP 10.1.1.14.40169 > 1.1.1.1.53: 28094+ [1au] A? www.google.com. (55)
18:57:44.745936 IP 1.1.1.1.53 > 10.1.1.14.40169: 28094 1/0/1 A 142.250.66.100 (59)
18:57:49.706916 IP 10.1.1.14.40169 > 1.1.1.1.53: 28094+ [1au] A? www.google.com. (55)
18:57:49.750357 IP 1.1.1.1.53 > 10.1.1.14.40169: 28094 1/0/1 A 142.251.220.4 (59)

Puedo ver la respuesta 1.1.1.1 con el paquete, pero la búsqueda no obtuvo nada.

información relacionada