我有一台主机,它必须管理端口 25 上的流量,并将 postfix 守护进程路由到 KVM 机器上的端口 25,如下所示:
WAN --> (25) HOST_MACHINE --> (25) KVM_VM_WITH_POSTFIX_DOVECOT
我已经打开了端口 25(和其他端口)并将此规则添加到 iptables:
iptables -t nat -A PREROUTING -p TCP --dport 25 -j DNAT --to-destination 192.168.122.201:25
现在,我可以从我的笔记本电脑连接到 Postfix 服务器并发送电子邮件,但 KVM 机器无法连接到其他邮件服务器(连接超时)。
因此,我尝试使用以下命令从 KVM 机器连接到另一台邮件服务器:
telnet mail.example.com 25
启用上述 iptables 规则后,我无法连接。但如果我从链中禁用它,我就可以连接到外部服务器。
我哪里错了?
答案1
您的DNAT
规则将路由所有 TCP 流量,由 KVM 主机在端口 25 上接收到,然后发送到 KVM 客户机,无论接口或目标是什么。您应该在其中添加接口或目标 IP(或两者)DNAT
:
iptables -t nat -A PREROUTING -i your_pub_if -p TCP --dport 25 -j DNAT --to-destination 192.168.122.201:25
或者
iptables -t nat -A PREROUTING -d your_pub_IP/32 -p TCP --dport 25 -j DNAT --to-destination 192.168.122.201:25
或者
iptables -t nat -A PREROUTING -i your_pub_if -d your_pub_IP/32 -p TCP --dport 25 -j DNAT --to-destination 192.168.122.201:25