Routing
OpenVPN 使用了錯誤的 IP 地址
我已經在客戶端(在 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。
- 來自客戶端的回复通過正常介面路由回您的伺服器。
- 伺服器無法辨識回复,因為源地址不匹配。