Linux、Quagga 和 OpenVPN 的棘手路由問題
設置
我有一個充當中央路由器的 OpenVPN 伺服器。它使用“拓撲子網”命令進行配置。客戶端是 Debian Linux 節點,每個節點都有一個(或多個)子網直接連接到它們。
目標是讓任何連接到 VPN 的客戶端都能夠訪問連接在其他客戶端后面的子網。
為了傳播路由資訊,我們在客戶端和伺服器上安裝了 Quagga。使用 OSPF 守護程序可以正常工作。在所有客戶端和伺服器上也啟用了路由。
路由表
伺服器上的路由表如下:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.2.10.1 10.8.0.4 255.255.255.255 UGH 20 0 0 tun0 192.168.100.0 10.8.0.4 255.255.255.0 UG 20 0 0 tun0 192.168.1.0 10.8.0.4 255.255.255.0 UG 20 0 0 tun0
我要訪問的子網是 192.168.100.0/24。有問題的網關響應非常好,我可以正常連接到它。
我認為這沒有任何用處,但這是客戶端路由表的一部分:
10.2.10.1 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
事情開始南下的地方
從伺服器 (10.8.0.1) ping 到 192.168.100.0/24 子網中的任何主機(包括 VPN 客戶端介面)失敗。如果我 tcpdump VPN 客戶端上的 tun 介面,我看不到相關的包。如果我 tcpdump VPN 伺服器上的 tun 介面,我會看到有問題的包被發送出去。
真正前衛的是,當我跟踪路由到 192.168.100.0 子網中的有效 IP 時,它沒有發現任何躍點(應該只有一個)。如果我直接跟踪路由到下一個躍點(10.8.0.4),它的響應很好。
我真的希望我很清楚,因為這是一個相當複雜的問題。我很樂意應您的要求提供額外資訊。
我覺得奇怪的是客戶端的路由表沒有指向任何地方(0.0.0.0)。對於本地網路來說沒問題,但對於通過隧道的 10.2.10.1 來說,這可能是個問題。
我原以為指向 VPN 隧道的預設路由足以讓客戶端能夠路由到其他客戶端(只要 VPN 集中器允許),而無需執行路由守護程序個人客戶。
查看路由表,我懷疑問題在於客戶端無法訪問路由更新中攜帶的“下一跳”,它沒有忽略路由,而是使用未知的下一跳安裝它。
如果您停用 Quagga 而只是使用預設路由,指向 VPN 隧道,會發生什麼情況?