![iptables-router 后面的 smtp 请求不起作用](https://linux22.com/image/686857/iptables-router%20%E5%90%8E%E9%9D%A2%E7%9A%84%20smtp%20%E8%AF%B7%E6%B1%82%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我在 Ubuntu 16.04 Server 版本上设置了一个带 ip-forwarding 的路由器。我在 /etc/sysctl.conf 中启用了 ip-forwarding。我设置了
net.ipv4.ip_forward=1
并执行
sysctl -p /etc/sysctl.conf
我使用了以下 iptables 命令:
iptables -A FORWARD -i ${PRV_IF} -s ${PRV_NET} -o ${PUB_IF} -j ACCEPT
iptables -A FORWARD -i ${PUB_IF} -d ${PRV_NET} -o ${PRV_IF} -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -o ${PUB_IF} -j MASQUERADE
我在 ${PRV_NET} 中的路由器后面有一台不同的本地 Linux 机器,我想从该机器访问互联网上的服务器端口,如 22、25、80 等,例如在 myserver.com 上
例如,从我的本地机器访问 myserver.com 上的端口 22 和 80 是可行的
telnet myserver.com 22 ... works
telnet myserver.com 80 ... works
但是我无法从本地机器访问 myserver.com 上的邮件服务器:
telnet myserver.com 25 ... hangs up
最后一个命令挂断并且永不返回。
如何从本地网络访问邮件服务器?iptables 命令中是否存在任何错误?