
次のようなインフラストラクチャを導入しています。
インターネット [外部 81.xxx] ルーター [内部 192.168.1.1] | [ネットワーク 192.168.1.0/24] | メールサーバー [192.168.1.2]
ルーター (DD-WRT) で iptables を使用します。メール サーバーが外部 IP に応答するようにしたいので、NAT を有効にしています。設定は次のとおりです。
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
他のポートもいくつか開いています。
ただし、メールがメールサーバーに到着すると、postfix は次のメッセージを表示します。
postfix/smtpd[6964]: connect from unknown[192.168.1.1]
外部から来るすべてのメールは、ルーターの内部 IP アドレスで来ているようです。ルーターの内部 IP ではなく、元の IP アドレスが表示されるのはなぜですか?
答え1
最初の 2 つの iptables ルールで 1 対 1 NAT を設定したようですが、その後、3 番目の、かなり奇妙なルールを追加しました。
iptables -I FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT
このようなルールは、1 対 1 NAT を実行するときには不要であり、実際には何の役にも立ちません。提供された情報によると、これが問題の原因である可能性が最も高いようです。削除してください。
iptables -D FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT
答え2
以前にもこのような奇妙な現象に遭遇したことがありますが、おっしゃるとおり何かが欠けています。ルーターから次の情報が役立つかもしれません:
iptables -t nat -L -n
iptables -L -n
ip route
メール サーバーからのメッセージは次のとおりです。
iptables -t nat -L -n
ip route
grep . /proc/sys/net/ipv4/conf/*/rp_filter
その情報がなければ、既存のファイアウォールを削除して、より具体的な操作を行うだけだと思います。
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
メール ログで何が起こっているかを確認します。送信 SMTP に SNAT が必要な場合は、次のようになります。
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
ローカル DNS リゾルバが不十分な場合は、次のようになります。
iptables -t nat -I POSTROUTING -p udp -s 192.168.1.2 --dport 53 \
-j SNAT --to 81.x.x.x