NAT con iptables reescribe la IP de origen en los registros

NAT con iptables reescribe la IP de origen en los registros

Cuento con la siguiente infraestructura:

enrutador de Internet [fuera de 81.xxx] [dentro de 192.168.1.1]
                                    | [red 192.168.1.0/24]
                                    |
                                   servidor de correo [192.168.1.2]

En el enrutador (DD-WRT) con iptables. Tengo NAT habilitado porque quiero que mi servidor de correo responda por la IP externa. Tengo la siguiente configuración:

iptables -t nat -I PREROUTING -d 81.x.x.x -j DNAT --to 192.168.1.2 
iptables -t nat -I POSTROUTING -s 192.168.1.2 -j SNAT --to 81.x.x.x 
iptables -I FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT

con algunos otros puertos abiertos también.

Sin embargo, cuando el correo llega al postfix del servidor de correo, se muestra el siguiente mensaje:

postfix/smtpd[6964]: connect from unknown[192.168.1.1]

Todos los correos que vienen del exterior parecen venir con los enrutadores dentro de la dirección IP. ¿Qué me falta para que se muestre la dirección IP original, en lugar de los enrutadores dentro de la IP?

Respuesta1

Parece que has configurado una NAT 1 a 1 con las dos primeras reglas de iptables, pero luego agregaste una tercera regla bastante curiosa:

iptables -I FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT

Estas reglas no son necesarias cuando se realiza NAT 1 a 1 y, en realidad, no hacen nada útil. De la información que ha proporcionado, esta parece ser la causa más probable del problema. Simplemente retírelo.

iptables -D FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT

Respuesta2

Rarezas de ISTR como esta antes, pero falta algo como usted dice. La siguiente información puede resultar útil del enrutador:

iptables -t nat -L -n
iptables -L -n
ip route

Y esto del servidor de correo:

iptables -t nat -L -n
ip route
grep . /proc/sys/net/ipv4/conf/*/rp_filter

Sin esa información, creo que simplemente borraría el firewall existente y haría algo más específico:

iptables -t nat -F  # also on server
iptables -t nat -I PREROUTING -p tcp -d 81.x.x.x --dport 25 \
    -j DNAT --to 192.168.1.2:25

Y vea lo que está sucediendo en los registros de correo. Si necesita SNAT para SMTP saliente, algo como:

iptables -t nat -I POSTROUTING -p tcp -s 192.168.1.2 --dport 25 \
    -m multiport --sports 1024:65535 -j SNAT --to 81.x.x.x:25

Y si un solucionador de DNS local es insuficiente:

iptables -t nat -I POSTROUTING -p udp -s 192.168.1.2 --dport 53 \
    -j SNAT --to 81.x.x.x

información relacionada