
我在 Debian 伺服器上設定了 OpenVPN。客戶端可以連接,並且客戶端可以 ping 並存取伺服器上的資源(Samba 共用和 Intranet)。
但是,伺服器無法 ping 客戶端 - 它只是超時。
圖表
Client OpenVPN assigned IP: 10.67.15.26
↓ UDP on 1194
Internet
↓
Router port-forwards 1194 to server
↓
Server LAN IP: 10.67.5.1
伺服器 OpenVPN 設定(相關位元)
port 1194
proto udp
dev tun
server 10.67.15.0 255.255.255.0
push "route 10.67.5.0 255.255.255.0"
伺服器路由表
Destination Gateway Genmask Flags Metric Ref Use Iface
10.67.15.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.67.15.0 10.67.15.2 255.255.255.0 UG 0 0 0 tun0
10.67.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 10.67.5.254 0.0.0.0 UG 0 0 0 eth1
伺服器防火牆
我暫時停用了伺服器的防火牆,所有鏈的策略都已接受,並且所有轉送標誌都已設定:
1 : /proc/sys/net/ipv4/conf/all/forwarding
1 : /proc/sys/net/ipv4/conf/default/forwarding
1 : /proc/sys/net/ipv4/conf/lo/forwarding
1 : /proc/sys/net/ipv4/conf/eth1/forwarding
1 : /proc/sys/net/ipv4/conf/tun0/forwarding
1 : /proc/sys/net/ipv4/ip_forward
測試用例:
客戶:ping 10.67.5.1
有效,其他資源也有效。
伺服器:ping 10.67.15.26
超時。
答案1
透過比較兩個不同的客戶,我能夠識別並解決兩個問題。
問題一:路由
由於某種原因(我不確定我是否已經解決了這個問題),伺服器的路由表總是忘記往返其 LAN (10.67.5.0/24) 的路由。這導致所有出站 LAN 流量都通過其主網關,而不會路由到 OpenVPN LAN (10.67.15.0/24)。這導致從 OpenVPN 網路發送到 LAN 的流量在主網關處失敗;因此正在發送 ping,但回復被丟棄。
編輯:不幸的是,我不知道是什麼導致這條路線被放棄;正如您所看到的,它位於上面的路由表中。我嘗試將路由命令添加到 /etc/network/interfaces 中,但最終得到了兩條重複的、相同的路由,所以我再次將其取出。這是我的韌體建構器導致此路由被刪除的配置:在設定 eth1 適配器時,我給了 /32 網路遮罩(即主機)而不是 /24(用於 LAN)。
透過測試 Debian 用戶端,我能夠解決這個問題,之後它可以工作,但 Windows 7 用戶端卻不能。
問題 2:Windows 7 防火牆/配置
Windows 設定有兩個問題。
Windows 必須為 TAP 適配器設定「工作」專用設定檔
更新截至2020年6月11日
您可以使用以下兩個 powershell 命令將介面變更為私有:
# this first one will let you see the available connections,
# find the interface index of the one you would like to change
Get-NetConnectionProfile
Set-NetConnectionProfile -InterfaceIndex NN -NetworkCategory Private
在「網路和共享中心」中,您應該會看到(至少)2 個「活動網路」。我有無線網絡,然後是“身份不明的網絡”。後者是 OpenVPN TAP 設備,它有一個公園長椅圖標,這意味著它被視為公共的、不受信任的。為了能夠更改此設置,您需要為適配器添加預設網關。
啟動 DOS/Cygwin 終端作為管理員。 (啟動 Orb > 搜尋 CMD > 右鍵單擊它 > 以管理員身份運行)。
然後做route print -4
。您將看到一個介面清單。每行都以數字開頭,在右側您會看到名稱。確定 TAP-Win32 適配器的介面號碼。我的那年17歲。
現在新增路線:
route -p add 0.0.0.0 mask 0.0.0.0 1.2.3.4 metric 500 if 17
其中 1.2.3.4 需要是 OpenVPN 閘道的 IP(在前面命令輸出的「網關」欄位中顯示),17 需要是您的 TAP 介面號碼。此-p
選項使路線永久化。我首先在沒有這個的情況下進行了測試。這確實假設客戶端的 OpenVPN 網關 IP 在連線之間不會更改。
完成後,會彈出一個對話框,要求您對新網路進行分類。選擇工作。
此時,我能夠將流量從公司 LAN 傳送到客戶端(使用 netcat 進行測試),但 ping 仍然沒有得到答案。
告訴 Windows 允許 ping (ICMPv4)
啟動 Orb > 具有進階安全性的 Windows 防火牆,然後前往入站規則和新規則...
- 自訂規則
- 所有節目
- 協定:ICMPv4
- 允許連接
- 申請私人檔案
- 命名它。
最後回傳了 ping。