我有一个 IPsec 网关给客户,VPN 隧道已启动,问题是他们不允许我使用我的私有地址,因为它被他们使用的另一个 VPN 使用。我们的网关是一个托管在 Amazon Cloud 上的 EC2 实例,具有公共弹性 IP:
我这边的 gw:10.0.3.22 --> 弹性 IP:1.1.1.1 --> 他们的 IPsec gw 2.2.2.2
我必须连接到其 IPsec gw 后面的服务器 3.3.3.3,并且当我尝试时数据包不会返回:
$ telnet 3.3.3.3 443 (the only opened port)
10.0.3.22 > 2.2.2.2 (ESP traffic, seq=0x1)
10.0.3.22 > 2.2.2.2 (ESP traffic, seq=0x2)
... until timeout
客户可以确认 VPN 隧道已启动,并且他们在日志中看到流量,但在到达 3.3.3.3 之前被防火墙丢弃。他们将只接受 1.1.1.1 作为源。所以我必须隐藏我的私有 IP 10.0.3.22,并使用 NAT 到 1.1.1.1。
使用 iptables 可以实现吗?我尝试过 SNAT 和 DNAT,但是没有用:
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.1.1.1
sudo iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 10.0.3.22