Linux

Linux、Quagga 和 OpenVPN 的棘手路由問題

  • October 20, 2010

設置

我有一個充當中央路由器的 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 隧道,會發生什麼情況?

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