
Ich habe die folgende Infrastruktur eingerichtet:
Internet [außen 81.xxx] Router [innen 192.168.1.1] | [Netzwerk 192.168.1.0/24] | Mailserver [192.168.1.2]
Auf dem Router (DD-WRT) mit iptables. Ich habe NAT aktiviert, da mein Mailserver auf die externe IP antworten soll. Ich habe das folgende Setup:
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
auch mit einigen anderen offenen Ports.
Wenn jedoch E-Mails beim Mailserver eintreffen, zeigt Postfix die folgende Meldung an:
postfix/smtpd[6964]: connect from unknown[192.168.1.1]
Alle von außen kommenden E-Mails scheinen mit der internen IP-Adresse des Routers zu kommen. Was übersehe ich, damit die ursprüngliche IP-Adresse angezeigt wird, statt der internen IP des Routers?
Antwort1
Sie scheinen mit den ersten beiden iptables-Regeln ein 1:1-NAT eingerichtet zu haben, haben dann aber eine dritte, ziemlich merkwürdige Regel hinzugefügt:
iptables -I FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT
Solche Regeln sind bei 1-zu-1-NAT nicht notwendig und haben eigentlich keinen Sinn. Nach den von Ihnen angegebenen Informationen scheint dies die wahrscheinlichste Ursache des Problems zu sein. Entfernen Sie es einfach.
iptables -D FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT
Antwort2
Ich habe solche Merkwürdigkeiten schon einmal gehört, aber wie Sie sagen, fehlt etwas. Die folgenden Informationen vom Router könnten nützlich sein:
iptables -t nat -L -n
iptables -L -n
ip route
Und das vom Mailserver:
iptables -t nat -L -n
ip route
grep . /proc/sys/net/ipv4/conf/*/rp_filter
Ohne diese Informationen würde ich wahrscheinlich einfach Ihre vorhandene Firewall löschen und etwas Spezifischeres tun:
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
Und sehen Sie, was in den Mail-Logs passiert. Wenn Sie den SNAT für ausgehendes SMTP benötigen, etwa so:
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
Und wenn ein lokaler DNS-Resolver nicht ausreicht:
iptables -t nat -I POSTROUTING -p udp -s 192.168.1.2 --dport 53 \
-j SNAT --to 81.x.x.x