Routing

OpenVPN 使用了錯誤的 IP 地址

  • December 2, 2012

我已經在客戶端(在 NAT-Router 後面)和 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 容器)。

抱歉,這是我忘記的 iptables 規則。

ifconfig使用或ip addr命令確定隧道介面的 IP 地址。根據您的路由表,我希望它是 192.168.11.1。其他隧道將是 192.168.11.5、192.168.11.9。您還應該能夠從客戶端的路由表中確定此地址。

嘗試在 ping 命令中使用隧道伺服器端的 IP 地址代替 192.0.2.1 ping -I 192.0.2.1:。這應該強制 ping 使用所需的地址。某些版本的 ping 將綁定到介面,並且無法在不同的介面上發送 ping。

當您執行隧道或其他路由可能不對稱的情況時,您看到的情況相對常見。在這種情況下:

  • 來自公共地址的 Ping 被路由到 tun0。
  • 來自客戶端的回复通過正常介面路由回您的伺服器。
  • 伺服器無法辨識回复,因為源地址不匹配。

引用自:https://unix.stackexchange.com/questions/57218