OpenVPN 伺服器無法 ping 用戶端

OpenVPN 伺服器無法 ping 用戶端

我在 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 適配器設定「工作」專用設定檔

本節歸功於 kalwi

更新截至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。

相關內容