OpenVPN 使用错误的 IP 地址

OpenVPN 使用错误的 IP 地址

我已经在客户端(NAT 路由器后面)和 VPS 服务器上安装了 OpenVPN。隧道已建立。但是,只能从客户端到服务器执行 ping 操作。当尝试 ping 客户端时,服务器使用 tun0 上的公共 IP 地址:

13:03:56.766564 IP publicIP > 192.168.11.8: ICMP echo request, id 12279, seq 46, length 64

路由表似乎是正确的:

root@:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.11.2 * 255.255.255.255 UH 0 0 0 tun0
184.x.x.x * 255.255.255.0 U 0 0 0 venet0
192.168.11.0 192.168.11.2 255.255.255.0 UG 0 0 0 tun0
default * 0.0.0.0 U 0 0 0 venet0

怎么了?为什么要用公网IP呢? (它是一个 OpenVZ 容器)。

答案1

ifconfig使用或命令确定隧道接口的 IP 地址ip addr。根据您的路由表,我预计它是 192.168.11.1。其他隧道为 192.168.11.5、192.168.11.9。您还应该能够从客户端的路由表中确定该地址。

尝试使用隧道服务器端的 IP 地址代替 ping 命令中的 192.0.2.1:ping -I 192.0.2.1。这将强制 ping 使用所需的地址。某些版本的 ping 将绑定到接口,并且无法在不同的接口上发送 ping。

当您运行隧道或路由可能不对称的其他情况时,您所看到的情况相对常见。在这种情况下:

  • 来自公共地址的 Ping 被路由到 tun0。
  • 来自客户端的回复从正常接口路由回您的服务器。
  • 由于源地址不匹配,服务器无法识别回复。

答案2

抱歉,这是我忘记的 iptables 规则。

相关内容