无法通过 VPN 路由 IP 进行 NAT

无法通过 VPN 路由 IP 进行 NAT

我有一台运行 Centos7 的 Linux 服务器,它使用 VPN 路由到远程网络中的公共 IP。我想通过使用 PPP 设备的 VPN 连接,从该远程网络上的 IP 地址 NAT 到本地子网。当我的隧道启动时,我可以从公共互联网 ping 203.0.113.5 IP 地址,但我似乎无法使 NAT 语句正常工作。

地图:

203.0.113.1              ROUTER TO INTERNET
  |
  |eth0                  VPN Server Public Interface
-----------------------
|VPN Server           |
-----------------------
203.0.113.2              VPN Public IP
  ||ppp0                 Tunnel Virtual Device
  ||10.0.0.1/24          Tunnel Gateway IP
  ||
  ||
  ||10.0.0.10/24         Tunnel Client IP
  ||ppp0                 Tunnel Client Device
198.51.100.129                  Broadband Public IP
   |eth0                 Public Interface
-----------------------
|THIS SERVER          |  
-----------------------
eth1|         |eth2
203.0.113.5/32   192.168.1.1/24

203.0.113.5 是公共 IP。192.168.1.1/24 是私有网络。VPN 带有 10.0.0.0/24 网络,通过隧道客户端 IP 路由 203.0.113.5(通过 10.0.0.1 路由 203.0.113.0/30,默认通过 203.0.113.1)让我可以从公共互联网 ping 10.0.1.5。这是有效的,我已确认是此服务器在响应。我想使用公共 IP 203.0.113.5 来 nat VPN。这似乎不起作用。我尝试了以下 NAT 语句:

  iptables -t nat -A POSTROUTING -s 192.168.1.1/24 -o ppp0 -j MASQUERADE --to-source 203.0.113.5
  iptables -t nat -A POSTROUTING -s 192.168.1.1/24 -o ppp0 -j SNAT --to-source 203.0.113.5

我看不到通信,无法执行名称查找,也无法从 192.168.1.1 网络中的机器执行 ping 操作。

任何意见,将不胜感激

答案1

MASQUERADE通常不需要--to-source,因为它通常用于接口地址可能发生变化的动态环境中。

您的源地址应该是 VPN 接口的地址 10.0.0.10,或者换句话说,参数接口的地址-o,这里ppp0。由于该地址不是公开的,您还需要在 VPN 服务器上进行 NAT。您也可以只在 VPN 服务器上进行 NAT,而忽略“此服务器”上的 NAT。

203.0.113.5/32eth1 上的 有什么用?/32以太网接口上的地址不适用于此卡,您至少需要/30。该地址是否应该可从互联网直接访问,或者该地址是否可通过 203.0.113.1 处的路由器和 VPN 隧道访问?如果是这样,将此地址添加到 ppp0 接口会更有意义。

相关内容