我有以下的基础设施:
互联网[81.xxx之外]路由器[在192.168.1.1内]
| [networking192.168.1.0/24]
|
邮件服务器[192.168.1.2]
在路由器(DD-WRT)与iptables。 我有NAT启用,因为我想我的邮件服务器响应外部IP。 我有以下设置:
iptables -t nat -I PREROUTING -d 81.xxx -j DNAT --to 192.168.1.2 iptables -t nat -I POSTROUTING -s 192.168.1.2 -j SNAT --to 81.xxx iptables -I FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT
与其他一些开放的端口以及。
但是,当邮件到达邮件服务器后缀时,显示以下消息:
postfix/smtpd[6964]: connect from unknown[192.168.1.1]
所有来自外部的邮件似乎都与IP地址内的路由器通信。 我错过了什么,以便显示原始IP地址,而不是IP内的路由器?
你似乎已经build立了一个1对1的NAT与前两个iptables规则,但是,你已经添加了第三个,很奇怪的规则:
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
ISTR之前的怪异之处,但是你说的有些缺失。 以下信息可能对路由器有用:
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.xxx --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.xxx:25
如果本地的DNSparsing器不足:
iptables -t nat -I POSTROUTING -p udp -s 192.168.1.2 --dport 53 \ -j SNAT --to 81.xxx