是否可以使用 iptables 将公共 IP 转换为私有 IP?

是否可以使用 iptables 将公共 IP 转换为私有 IP?

我在云中拥有许多具有私有和公共 IP 的主机。到目前为止,我可以以任何我想要的方式公开访问所有主机。现在,我想禁用从外部对所有这些主机的某些访问,并设置 VPN。

我已经创建了一个 VPN 服务器,一切运行正常——我可以轻松查看我的内部网络。现在我面临一个问题。所有主机都通过公共 DNS 进行访问,并且此 DNS 为所有主机提供公共 IP。

我想要一种方法将所有公共 IP 转换为私有 IP。例如,假设我有 2 个主机,它们的 IP 如下:

Host 1:
Private IP: 10.1.0.5
Public IP: 1.2.3.4

Host 2:
Private IP: 10.1.0.6
Public IP: 5.6.7.8

如果我访问 5.6.7.8(1.2.3.4),我希望服务器将其转换为 10.1.0.6(10.1.0.5)。

可以通过 iptables 实现吗?到目前为止,我尝试了以下方法,但没有任何变化:

iptables -t nat -A OUTPUT -d 5.6.7.8 -j DNAT --to-destination 10.1.0.6

答案1

使用 iptables 拦截流量并路由到 IP

iptables -t nat -I PREROUTING -d 5.6.7.8 -j DNAT --to-destination 10.1.0.6
iptables -t nat -I PREROUTING -d 1.2.3.4 -j DNAT --to-destination 10.1.0.5

iptables -t nat -I POSTROUTING -o eth1 -j MASQUERADE

在您的示例中,您尝试根据规则路由流量OUTPUT,但路由决策为时已晚。在此示例中,我假设您的出站接口是 eth1。请确保您有此设备的控制台访问权限,以防因配置错误或我们之间缺乏信息交换而将自己锁定在外。

相关内容