Linux iptables DNAT en paquetes entrantes sin conntrack (sin estado)

Linux iptables DNAT en paquetes entrantes sin conntrack (sin estado)

En mi caja de Linux 10.20.1.1, tengo dos aplicaciones UDP vinculadas al puerto 46000 (App A)y 36000(App B)respectivamente. Las aplicaciones se comunican con dos servidores UDP vinculados como 10.10.1.1:36000 (Srv X)y 10.10.1.2:36000 (Srv Y)respectivamente.

Cuando envío el paquete, tengo el requisito de usar siempre el puerto UDP src como 36000. El paquete en el cable siempre será 36000 - 36000los puertos src y dst.

Mis reglas de iptables son las siguientes. Mi intención es enviar DNATel paquete entrante del Srv X desde el puerto 36000 to 46000para que la aplicación A lo reciba.

*nat
-A PREROUTING -s 10.10.1.1/32 -p udp --dport 36000 -j DNAT --to-destination :46000

*raw
-A PREROUTING -p udp --dport 36000 -j CT --notrack
-A PREROUTING -p udp -j ACCEPT
-A OUTPUT -p udp --dport 36000 -j CT --notrack
-A OUTPUT -p udp -j ACCEPT

*filter

-A INPUT -p udp -m udp --dport 36000 -j ACCEPT --> rule 1
-A INPUT -p udp -m udp --dport 46000 -j ACCEPT --> rule 2
-A OUTPUT -p udp -m udp --dport 36000 -j ACCEPT -> rule 3

Cuando envío un paquete, App A to Srv Xva bien. No hay /proc/net/ip_conntrackcoincidencias de paquetes de entrada y salida de conntrack rule 3. Cuando la respuesta proviene de Srv X to App A, el paquete atraviesa la tabla sin formato, pero DOES NOTpasa DNATy salta directamente a la regla 1 de la tabla de filtro. Esto significa que la respuesta Srv X llega a mi casilla pero va a la aplicación B en lugar de a la aplicación A.

Preguntas:

  1. La tabla RAW indica que no hay archivos CONNTRACK. Sin embargo, el comportamiento anterior indica que algún módulo está rastreando el primer paquete App A -> Srv Xcon el puerto src y dst en algún lugar. 36000 - 36000Por lo tanto, la respuesta de Srv X -> App Ano parece someterse a DNAT. ¿Cómo evito esto CONNTRACK?

  2. ¿Cómo garantizar que cada paquete entrante de Srv X con el puerto dst 36000 siempre pase por DNAT?

Gracias de antemano, Télex.

Respuesta1

Al mirar elDocumentación de Netfilter, se dice que"El seguimiento de conexiones es fundamental para NAT", por lo tanto no puedes tener DNAT sin habilitarconectar.

información relacionada