我有两台服务器:
服务器 1:
IP1=8.8.8.1
IP2=8.8.8.2
服务器2:
IP1=8.8.8.3
我想将对 IP 8.8.8.2 的所有访问重定向到 8.8.8.3。因此我激活了 IP 转发
sysctl net.ipv4.ip_forward=1
并安装 IP 表:
iptables -t nat -A PREROUTING -d 8.8.8.2 -j DNAT --to-destination 8.8.8.3
iptables -t nat -A POSTROUTING -s 8.8.8.3 -j SNAT --to-source 8.8.8.2
我的问题是,这不起作用。如果我现在 ping 我的 IP 地址 8.8.8.2,我期望从 8.8.8.3 得到答案,但我却得到了超时。
我做错了什么?谢谢
编辑:
服务器通过互联网连接,因此所有IP都是公网IP。
由于 ISP 的规定,服务器 2 的 IP 每 2-3 个月更改一次。因此,我想为服务器 2 使用服务器 1 的静态 IP。
子网为 /32。所以我只拥有这三个特定的 IP 地址。
服务器 1 是 Strato Vserver。服务器 2 是我家的 Vserver Host。
编辑 2:隧道是一个不错的选择,但是它能与 IP 表一起使用吗?
我不完全清楚双重 nat 能起到什么作用,因为第二台服务器可以通过互联网访问,不需要通过路由器进行 nat。(这是我知道可以使用双重 nat 的地方)
答案1
尝试
iptables -t nat -A POSTROUTING -d 8.8.8.3 -j SNAT --to-source 8.8.8.2
代替
iptables -t nat -A POSTROUTING -s 8.8.8.3 -j SNAT --to-source 8.8.8.2
虽然不太明显,但你的情况一般是发夹型NAT。因此你需要强制网络传递返回包通过同一个 NAT 设备(否则网络的集体路由表没有理由将其传递这么远的距离)。