OpenVPN - 了解路由表 + 如何透過 VPN 僅將流量路由到特定 IP

OpenVPN - 了解路由表 + 如何透過 VPN 僅將流量路由到特定 IP

我正在使用 OpenVPN 連接到 VPN 服務,一切正常。連接後,這些規則將自動設定:

root@linux:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:AA:1B:01:AC:FB  
          inet addr:192.168.1.201  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46867 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:37977382 (36.2 MiB)  TX bytes:5098121 (4.8 MiB)
          Interrupt:16 

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.7.7.126  P-t-P:10.7.7.125  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:23284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5817 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:31366374 (29.9 MiB)  TX bytes:308591 (301.3 KiB)

root@linux:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.7.7.125      128.0.0.0       UG    0      0        0 tun0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
5.120.121.114   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
10.7.7.1        10.7.7.125      255.255.255.255 UGH   0      0        0 tun0
10.7.7.125      *               255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.7.7.125      128.0.0.0       UG    0      0        0 tun0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

這是我的理解:

  • 我的本地IP位址是192.168.1.201
  • 本地網關是191.168.1.1
  • 5.120.121.114是VPN公網ip
  • tun0 是 VPN 隧道,我的機器的位址是 10.7.7.126
  • 10.7.7.125是ptp位址,我理解是VPN的另一個“端”

關於路由表我的理解是:

  • 預設情況下,所有流量都透過介面 tun0 上的 10.7.7.125 發送(但為什麼要使用這個遮罩?)
  • 10.7.7.1 可透過 tun0 訪問
  • VPN 的公共 IP 可透過 eth0 存取

我不明白第二個預設網關,這是VPN未啟動時的預設網關,是否只是被繞過?

10.7.7.1 怎麼樣?看起來這是VPN的網關...

為什麼目的地是 128.0.0.0?

OpenVPN 會自動建立所有這些規則。但這些是基於什麼而創建的呢?

我無法控制 VPN 的伺服器端,只能控制客戶端設定。

現在如果我想:

  • 強制所有到 216.58.213.174 的流量都通過 VPN tun0,而其餘所有流量都通過 eth0?
  • 我可以在啟動 VPN 時自動建立它嗎?

感謝您的建議和支持,以幫助理解這一點。

KR, dk

編輯:

root@linux:~# ip route list
0.0.0.0/1 via 10.7.7.125 dev tun0 
default via 192.168.1.1 dev eth0 
5.152.210.249 via 192.168.1.1 dev eth0 
10.7.7.1 via 10.7.7.125 dev tun0 
10.7.7.125 dev tun0  src 10.7.7.126 
128.0.0.0/1 via 10.7.7.125 dev tun0 
192.168.1.0/24 dev eth0  src 192.168.1.201 

答案1

我不明白第二個預設網關,這是VPN未啟動時的預設網關,是否只是被繞過?

這是 OpenVPN 的一種技巧,可以透過隧道路由流量,同時維護預設閘道。 0.0.0.0/1 和 128.0.0.0/1 路由優先於 0.0.0.0/0 路由,因為它們更具體,同時仍符合所有位址。在 OpenVPN 文件中搜尋“def1”以獲取更多詳細信息

10.7.7.1 怎麼樣?看起來這是VPN的網關...

可能是

OpenVPN 會自動建立所有這些規則。但這些是基於什麼而創建的呢?

它們可能是從伺服器推送的。如果您可以在客戶端啟動時提供客戶端的輸出以及您的配置文件,我可以提供更多信息

我無法控制 VPN 的伺服器端,只能控制客戶端設定。

是的,但是客戶端是高度可配置的,因此您可以覆蓋伺服器希望客戶端執行的幾乎任何操作。儘管如此,您仍然需要滿足提供者的基本要求才能進行連線。您還應該檢查您的提供者的“使用條款”,以確保您不會惹惱他們。

現在如果我想:

強制所有到 216.58.213.174 的流量都通過 VPN tun0,而其餘所有流量都通過 eth0?

是的,在您的配置中包含「route 216.58.213.174 255.255.255.255 10.7.7.125」。這應該可以設定您想要的路線。您應該能夠透過從配置中刪除“redirect-gateway”選項來保留其他路由

我可以在啟動 VPN 時自動建立它嗎?

是的,見上文

我所描述的所有選項以及更多內容都可以在 OpenVPN 的線上文件中找到。 https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage

相關內容