转发 192.168.1.x 至 95.211.xx

转发 192.168.1.x 至 95.211.xx

我想将内部 IP 地址转发到外部 IP 地址。

所以我的做法是这样的:

echo 1 > /proc/sys/net/ipv4/ip_forward

然后我使用 iptables:

iptables -t nat -A PREROUTING -s 192.168.1.x  -j DNAT --to-destination 95.211.y.z
iptables -t nat -A POSTROUTING -j MASQUERADE

在此之后,当我 ping 192.168.1.x 时,我希望能够到达 95.211.yz 的服务器。换句话说,我希望所有指向内部 IP 的流量都能转换为该外部 IP,但这并没有发生。

我哪里错了?

答案1

在这种情况下,不一定,例如,您在 ICMP 客户端中看到的内容就是实际发生的情况。DNAT 连接将按预期工作,但 ICMP 客户端将继续向您显示私有 IP 地址。

确保允许目标服务器向您的客户端/网络做出响应。

http://www.mad-hacking.net/documentation/linux/security/iptables/nat.xml

答案2

我假设您的意思是您希望能够使用私有 IP 空间中的地址从 LAN 上的主机访问 WAN 上的主机。如果这不正确,那么这个答案可能没有帮助。

您需要将到达 LAN 接口的流量与设置为要重新映射的私有地址的目标进行匹配 ( 192.168.1.5)。您还需要MASQUERADE将离开 WAN 接口的流量也匹配。

iptables -t nat -A PREROUTING -i ethLAN -d 192.168.1.5 -j DNAT --to-destination 95.211.1.1
iptables -t nat -A POSTROUTING -o ethWAN -j MASQUERADE

您的主要错误是 应该-s-d,但您还应该指定接口。您还需要确保您选择的私有空间地址不与您 LAN 上的任何网络位于同一子网中。这是必要的,因为如果您使用同一子网上的地址,则原始主机将发出 ARP 请求,而不是沿默认路由发送数据包。没有人会回答 ARP 请求,您尝试创建的路径将不起作用。

相关内容