Linux

使用拆分 openvpn 網路,無法通過 vpn 連接到遠端伺服器

  • June 29, 2013

我正在執行 ubuntu 12.04,並且只想要可以綁定到 vpn 埠(地址)的特定應用程序的 vpn。如果我使用通過 VPN 埠路由的所有流量連接到 VPN,一切正常(如下面的第二條路線所示)。如果我選中“僅將此連接用於其網路上的資源”選項,該路由看起來就像我期望的那樣,並且其他程序可以訪問網際網路,但我無法連接到綁定到 vpn 埠的遠端伺服器,例如“ telnet google.com 80 -b 10.187.1.9" 似乎我可以將數據包取出,但可能無法輸入。有人知道路由有什麼問題嗎?

使用“僅將此連接用於其網路上的資源”設置:(無法僅使用 tun0 (10.187.1.9) 連接到遠端伺服器

0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth2
10.187.1.1      10.187.1.9      255.255.255.255 UGH   0      0        0 tun0
10.187.1.9      0.0.0.0         255.255.255.255 UH    0      0        0 tun0
130.185.155.58  192.168.1.1     255.255.255.255 UGH   0      0        0 eth2
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth2
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth2
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 eth2

預設選項:(我可以使用 tun0 連接到遠端伺服器,但所有流量都通過 tun0 路由)

0.0.0.0         10.187.1.9      0.0.0.0         UG    0      0        0 tun0
10.187.1.1      10.187.1.9      255.255.255.255 UGH   0      0        0 tun0
10.187.1.9      0.0.0.0         255.255.255.255 UH    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth2
185.3.135.58    192.168.1.1     255.255.255.255 UGH   0      0        0 eth2
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth2
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 eth2

OpenVPN 使用一個 entre 子網來容納其伺服器端的虛擬介面以及連接的客戶端。在您的情況下,此子網似乎配置為 10.187.1.0/24。OpenVPN 為伺服器端分配 10.187.1.1,並將子網的其餘部分拆分為每個客戶端連接的較小子網。預設情況下,出於兼容性原因,它將使用 /30 和 2 個可用地址、一個網路地址和一個廣播地址,並將第一個可用地址分配給伺服器,第二個分配給連接的客戶端。在您的範例中,這將是 10.187.1.9(伺服器)和大概 10.187.1.10(客戶端)。

因此,您的第一個問題正在執行telnet google.com 80 -b 10.187.1.9- 您正在指示telnet綁定到一個非本地地址,這是行不通的。第二個問題是 Linux 在預設情況下*僅通過評估目標地址來進行路由決策。*正如google.com解析不是您的網路本地且未被任何其他路由覆蓋的內容一樣,數據包通過預設路由中繼,在您的情況下為 192.168.1.1 並且可能對 10.187.1.0/24 子網一無所知,所以它有效地丟棄了數據包。如果您需要此流量通過 路由tun0,您應該明確告訴 Linux:

echo "200   vpn" >> /etc/iproute2/rt_tables
ip rule add from 10.187.1.0/24 table vpn
ip route add table vpn default dev tun0

這將創建一個名為 的附加路由表註冊,vpn如果數據包來自 10.187.1.0/24 子網,則添加使用此路由表的規則,並添加通過 tun0 的預設路由(這是一個點對點介面,因此路由規範不需要網關地址)用於通過vpn表路由的所有流量。

引用自:https://serverfault.com/questions/519559