自定義路由在 Windows 上不起作用
我的 Windows 筆記型電腦直接連接到 192.168.1.0/24(無線區域網路)。我通過連接到兩個網路的路由器訪問 10.21.0.0/16。路由在此配置下工作正常。
我有一個連接到 10.0.0.0/8 的 VPN。VPN 網路實際上不使用 10.21.0.0/16 範圍內的任何 IP。所以我應該能夠將我的路由表配置為通過無線區域網路路由所有 10.21.0.0/16 IP,並通過 VPN 路由所有其他 10.0.0.0/8。
我的理解是,如果 10.21.0.0 的指標低於 10.0.0.0 的指標,我可以這樣做。VPN (10.0.0.0) 自動分配度量 20。我已手動為 WLAN 分配度量 1。我使用以下命令手動將條目添加到路由表:
route add 10.21.0.0 mask 255.255.0.0 192.168.1.201 metric 1
然後為路由分配一個度量 2(這是預期的)。
問題是它不起作用。我無法 ping 10.21.0.0 網路上的任何機器。但我可以訪問 10.0.0.0 上的其他內容。我還可以訪問 192.168.1.0 上的內容。
為了調試這個,我做了以下事情。
- 在路由器 (192.168.1.201) 上執行 tcpdump。我可以驗證沒有 10.21.0.0 的數據包到達該介面。
- 禁用路由器上的 iptables。禁用windows防火牆。
- 在我的筆記型電腦上執行 wireshark,嘗試查看 ping 請求到哪個介面。但我不能看到他們去任何地方!
- ping 命令不會收到任何“無法訪問目標”消息。
這是路由表的相關部分。
IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.1.201 192.168.1.18 2 10.0.0.0 255.0.0.0 On-link 10.55.44.203 20 10.21.0.0 255.255.0.0 192.168.1.201 192.168.1.18 2
更新
根據要求,這是
route print 10.21.0.1
C:\>route print 10.21.0.1 =========================================================================== Interface List 17...02 50 f2 00 00 05 ......AGN Virtual Network Adapter 16...a0 88 b4 e1 8f 20 ......Intel(R) Centrino(R) Advanced-N 6205 1...........................Software Loopback Interface 1 10...00 00 00 00 00 00 00 e0 Microsoft Teredo Tunneling Adapter 11...00 00 00 00 00 00 00 e0 Microsoft 6to4 Adapter 18...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter 47...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2 =========================================================================== IPv4 Route Table =========================================================================== Active Routes: None Persistent Routes: None IPv6 Route Table =========================================================================== Active Routes: None Persistent Routes: None C:\>
很好,這可能是問題所在。但是,即使為我知道已啟動的特定主機添加路由也不起作用。
C:\>route print 10.* =========================================================================== Interface List 17...02 50 f2 00 00 05 ......AGN Virtual Network Adapter 16...a0 88 b4 e1 8f 20 ......Intel(R) Centrino(R) Advanced-N 6205 1...........................Software Loopback Interface 1 10...00 00 00 00 00 00 00 e0 Microsoft Teredo Tunneling Adapter 11...00 00 00 00 00 00 00 e0 Microsoft 6to4 Adapter 18...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter 47...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2 =========================================================================== IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 10.0.0.0 255.0.0.0 On-link 10.76.206.8 20 10.21.0.0 255.255.0.0 192.168.1.201 192.168.1.18 2 10.21.61.1 255.255.255.255 192.168.1.201 192.168.1.18 2 10.76.206.0 255.255.255.0 On-link 10.76.206.8 276 10.76.206.8 255.255.255.255 On-link 10.76.206.8 276 10.76.206.255 255.255.255.255 On-link 10.76.206.8 276 10.255.255.255 255.255.255.255 On-link 10.76.206.8 276 =========================================================================== Persistent Routes: None C:\>ping 10.21.61.1 Pinging 10.21.61.1 with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. Ping statistics for 10.21.61.1: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
如果我連接到路由器 (192.168.1.201) 並執行 tcpdump,我在筆記型電腦所連接的介面上看不到任何到 10.21.0.0/16 的數據包。
您在本地網路介面上有 10/8。Windows 不會嘗試將數據包路由到 10/8 子網(10.21/16 是 10/8 的子網);根本不涉及路由。
您的路由表看起來正確。您的 VPN 網路過濾器驅動程序可能不使用路由表,而是將發往 10.21.0.0/16 的數據包直接路由到 VPN 適配器,甚至丟棄它們。
您可以嘗試相同的配置,但在網路連接屬性中禁用您的 VPN 過濾器驅動程序嗎?您應該會在屬性中看到 VPN 軟體的項目,只需取消選中它並點擊“確定”將其禁用。下圖來自我的電腦,所以沒有。如果您也沒有看到任何與 VPN 相關的項目,那麼 VPN 軟體畢竟必須使用路由表,因為我不明白沒有自己的過濾驅動程序如何繞過它。
作為記錄,我在我的電腦上添加了相同的路由並使用
route print
命令得到了相似的結果,所以我不確定它們是否表明有任何問題,即使令人驚訝的是 10.21.0.1 沒有匹配。我過濾了輸出以僅顯示相關部分。C:\>route print 10.* =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 10.0.0.0 255.0.0.0 192.168.1.1 192.168.1.2 1 10.21.0.0 255.255.0.0 192.168.1.1 192.168.1.2 1 Default Gateway: 192.168.1.1 =========================================================================== Persistent Routes: None C:\>route print 10.21.* =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 10.21.0.0 255.255.0.0 192.168.1.1 192.168.1.2 1 Default Gateway: 192.168.1.1 =========================================================================== Persistent Routes: None C:\>route print 10.21.0.1 =========================================================================== Active Routes: Default Gateway: 192.168.1.1 None Persistent Routes: None
具有最長匹配前綴的路由始終是首選,因此路由度量在這種情況下不起作用。僅當有兩條具有相同前綴的路由時才使用該度量。