Proxmox 上 nat 后面的 VM 无法从内部网络访问端口

Proxmox 上 nat 后面的 VM 无法从内部网络访问端口

问题是,我能够从外部(公共互联网)访问 NAT 后面的本地网络中的特定机器的端口 25,但无法 hotmail-com.olc.protection.outlook.com[104.47.51.225]:25从本地机器访问公共机器上的端口 25。

网络图如下:

在此处输入图片描述

从 Proxmox 服务器到 OPNsense 路由器是 maquerade 的规则

iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o enp0s31f6 -j MASQUERADE

iptables通过以下方式创建从 Proxmox 服务器到 OPNSense 路由器的端口转发 ->

iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 10.10.10.10:25

也可以通过 Web 界面从 OPNSense 路由器连接到本地计算机。当我尝试从网络外部远程登录到端口 25 时,一切正常,数据包被转发到正确的计算机,也可以通过其他端口正确接收电子邮件。

但是,当尝试从本地计算机 telnet 到端口 25 上的另一个公共 smtp 服务器时,无法连接并超时...

端口 25 上的传出连接也是允许的,因为我可以直接从 Proxmox 服务器通过端口 25 远程登录到公共服务,但不能从 OPNSense(NAT)后面的本地机器远程登录到公共服务……

我是不是遗漏了什么?

答案1

我不知道为什么,但解决方案是为PREROUTING规则提供一个接口(-i):

iptables -t nat -A PREROUTING -i enp0s31f6 -p tcp --dport 25 -j DNAT --to-destination 10.10.10.10:25

这样它就起作用了。有人能更好地解释一下为什么它以这种方式工作,并且在不提供 (-i) 规则时它不起作用吗?

相关内容