Vpn

OpenVPN 伺服器向客戶端發送虛假的預設網關資訊?

  • December 11, 2015

儘管 VPN 客戶端成功連接到 OpenVPN 伺服器,但無論 server.conf 文件中的push "redirect-gateway local def1"和/或push "route 10.240.0.0 255.255.0.0"放置/註釋/取消註釋的排列方式如何,它似乎都設置了一個不正確和虛假的網關。

server.conf 文件有這個聲明server 10.8.0.0 255.255.255.0,並且確實分配了伺服器10.8.0.1,但由於某種原因,客戶端解釋了在 VPN 啟動期間發送的消息,它應該通過分配的預設網關路由流量10.8.0.5。根據 Wireshark 的說法,任何後續數據包都被發送到 10.8.0.5 並且永遠不會收到任何響應,就好像這些數據包到達 VPN TCP 端點一樣,它們似乎永遠不會到達伺服器的 tun0 介面(tcpdump根據 server.

以下是 OpenVPN 客戶端 (Tunnelblick) 日誌的相關行,指示成功連接到 VPN 後立即更改路由表:

2015-12-11 02:25:18 /sbin/ifconfig utun0 10.8.0.6 10.8.0.5 mtu 1500 netmask 255.255.255.255 up
2015-12-11 02:25:18 /Applications/Tunnelblick.app/Contents/Resources/client.up.tunnelblick.sh -d -f -m -w -pxxxxxxxxxxx utun0 1500 1543 10.8.0.6 10.8.0.5 init
                                       **********************************************
                                       Start of output from client.up.tunnelblick.sh
                                       No network configuration changes need to be made.
                                       Will NOT monitor for other network configuration changes.
                                       DNS servers '8.8.8.8 208.67.222.222' will be used for DNS queries when the VPN is active
                                       The DNS servers include only free public DNS servers known to Tunnelblick.
                                       Flushed the DNS cache via dscacheutil
                                       /usr/sbin/discoveryutil not present. Not flushing the DNS cache via discoveryutil
                                       Notified mDNSResponder that the DNS cache was flushed
                                       End of output from client.up.tunnelblick.sh
                                       **********************************************
                                       add net 104.196.7.35: gateway 192.168.0.1
                                       add net 0.0.0.0: gateway 10.8.0.5
                                       add net 128.0.0.0: gateway 10.8.0.5
                                       add net 10.240.0.0: gateway 10.8.0.5
                                       add net 10.8.0.0: gateway 10.8.0.5
2015-12-11 02:25:20 Initialization Sequence Completed

有什麼辦法可以強制 OpenVPN 向客戶端發送正確的資訊?還是我錯了,是否還有其他原因正確發送到 OpenVPN TCP 埠的數據包沒有tun0到達 OpenVPN 伺服器上的介面?

不,這是正確的。

您的 OpenVPN 在“net30”拓撲模式下工作。在這種模式下,OpenVPN 程序本身就是一個路由器。實際上,虛擬網路架構如下所示:

                                  Client3
                                10.8.0.14/30
                                   |
                                10.8.0.13/30
Server 10.8.0.1/30 --- 10.8.0.2/30 OpenVPN 10.8.0.5/30 --- 10.8.0.6/30 Client1
                                10.8.0.9/30
                                   |
                                10.8.0.10/30
                                  Client2

包括伺服器在內的每個人都通過 10.8.0.x 擁有額外的路由 10.8.0.0/24(x - 他們各自的內部 OpenVPN 下一跳地址)。

即 10.8.0.5 實際上是 OpenVPN 路由器的地址,它“隱藏在程序中”。如果您想將 Windows 加入您的 VPN,這是必需的,因為在 Windows 中無法創建真正的 TUN 介面,並且它可以通過 TAP 和上面的設置進行模擬。

這也是“iroute”選項存在的原因。它用於在此虛擬路由器內部設置路由。

如果您從不想將 Windows 客戶端包含到您的 VPN 中,您可以將拓撲模式設置為 p2p 並期望客戶端上的直接 .1 路由。

詳情請參閱 OpenVPN 手冊https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage拓撲模式部分。

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