为了在我的家庭连接上拥有多个公共IP,我租了一个带有几个IP的VPS,我设置了一个openvpn服务器以及我家中需要公共IP的所有服务器,有一个VPN连接,我正在做DNAT/SNAT在 VPS 上,通过 openvpn 将发往特定公共 IP 的流量重定向到我的家庭服务器。
-A PREROUTING -d xxx.xxx.xxx.xxx/32 -j DNAT --to-destination 172.17.0.6
-A POSTROUTING -s 172.17.0.6/32 -j SNAT --to-source xxx.xxx.xxx.xxx
它在邮件服务器/网络/等上像这样工作了一年多......,这非常酷
我只有一个问题,我的服务器上的传入数据包与 VPN 服务器 ip 相关,因此我无法使用基于 ip 的访问列表,也无法使用邮件服务器上的 RBL。
有没有办法告诉 iptable 重定向流量而不进行 NAT?
在我的客户端上,默认网关是我的 VPN 服务器,因此数据包将以任何方式返回到 VPN。
谢谢
答案1
如果您想更改目的地而不是源,只需摆脱“SNAT”规则即可。
抱歉没有仔细阅读问题。
比方说,我的服务器 yyyy 正在 ping xxxx,它出现在我的 VPN 服务器上,我 dnat“目标 xxxx 到 172.17.0.6,在我的家庭服务器上我收到源为 172.17.0.1 的数据包
DNAT仅有的更改连接的目标,而不是源。如果您看到的源是 172.17.0.1,那么您必须有另一个影响数据包的问题中未列出的 SNAT 或 MASQUERADE 规则。您需要删除该规则或限制其范围,以便它不会影响进入家庭服务器的连接。
如果您需要进一步的帮助,请发布您的服务器的 iptables 规则的完整列表,而不仅仅是您认为相关的规则。
它返回到我的 VPN 并获取 snat 返回 yyyy
不,它使用处理(伪)连接的第一个数据包时建立的状态跟踪进行反向转换。 iptables nat 表仅处理连接的第一个数据包。