OpenVPN 和單向 ping
網路配置
我已經建立了一個網路:
電腦的適當埠
192.168.87.0/24
被轉發TP-LINK router
到“全世界”。啟用 IP 轉發
OpenVPN server
。我能夠從 OfficeB 連接
client1
到OpenVPN server
OfficeA。client1
並server
看到對方——他們回复 ping(在網路192.168.87.0/24
和10.8.0.0/24
網路中)、發送數據、創建連接(即 ssh)。
TP-LINK router
(a.b.c.d
是 WAN IP)上的路由表:DST MASK GATEWAY IFACE a.b.c.d 255.255.255.255 0.0.0.0 WAN 192.168.87.0 255.255.255.0 0.0.0.0 LAN & WLAN 10.8.0.0 255.255.255.0 192.168.87.2 LAN & WLAN (route added by hand) 239.0.0.0 255.0.0.0 0.0.0.0 LAN & WLAN 0.0.0.0 0.0.0.0 a.b.c.d WAN
問題
現在……從任何一台電腦上
192.168.87.0/24
,我都可以ping通10.8.0.6
。不幸的是,10.8.0.6
只能 ping 通87.1
,87.2
。但是……只有當我首先從這台電腦 ping
10.8.0.6
到87.0/24
:87.104``10.8.0.6
10.8.0.6
:ping 192.168.87.104
– 失敗,超時。192.168.87.104
:ping 10.8.0.6
– 好的。10.8.0.6
:ping 192.168.87.104
– 好的。我檢查過的
我已經檢查過
tcpdump
,192.168.87.104
確實總是收到來自 ping 的請求發送回复10.8.0.6
。但是這些回复似乎沒有通過網關傳TP-LINK router
回——我在兩個介面上都看10.8.0.6
不到它們。tcpdump``OpenVPN server
我還檢查過,如果我在以下位置添加了一條路線
192.168.87.104
:(1) route add 10.8.0.0 netmask 255.255.255.0 gw 192.168.87.2
then
10.8.0.6
總是會得到一個 ping 回复,即使我之前沒有 ping 過它192.168.87.104
。我發現的另一件事是:ping from
192.168.87.104
to10.8.0.6
向路由記憶體(route -C
)添加一個條目(1)
。在 ,,first ping’’ 中(在添加條目之前)我得到:PING 10.8.0.6 (10.8.0.6) 56(84) bytes of data. 64 bytes from 10.8.0.6: icmp_req=1 ttl=127 time=37.0 ms From 192.168.87.1: icmp_seq=2 Redirect Host(New nexthop: 192.168.87.2) 64 bytes from 10.8.0.6: icmp_req=2 ttl=127 time=93.0 ms
我讀到,這是正常行為,因為網關
10.8.0.0
位於同一網段。並且icmp redirect host
在路由記憶體中創建了一個新條目之後。Web 配置面板中的
TP-LINK router
有一個複選框SPI Firewall - Stateful Packet Inspection
。禁用它並不能解決問題。我的問題
我不明白為什麼一個 ping 回复
192.168.87.104 > 10.8.0.6
沒有通過,TP-LINK router
儘管TP-LINK router
知道路由到10.8.0.0
並且 ping 請求從192.168.87.104
to10.8.0.6
確實通過了。所以我的問題是:原因是什麼?我可以做些什麼來解決這種情況(除了
(1)
在 OfficeA 中的每台電腦上添加路由……)?我個人認為問題出在TP-LINK router
.
OpenVPN server
配置文件:port 1194 proto udp dev tun ca keys/ca.crt cert keys/server.crt key keys/server.key dh keys/dh1024.pem server 10.8.0.0 255.255.255.0 push "route 192.168.87.0 255.255.255.0" client-to-client keepalive 10 120 comp-lzo persist-key persist-tun
我的猜測是,由於有狀態的防火牆規則,TP-LINK 最初會丟棄 ping
.87.104
回复.0.6
。請注意,當.0.6
ping時.87.104
,TP-LINK 路由器永遠不會看到 ping 請求數據包。從狀態防火牆的角度來看,如果它從未看到原始 ping 請求朝著相反的方向前進,那麼丟棄 ping 回復是完全合理的。稍後,在.87.104
向 發送了一些 ping 請求後,防火牆可以允許來自的.0.6
ping 回复,因為它最近看到了與 的通信。.84.104``.0.6``.87.104``.0.6
可以修改 TP-LINK 的防火牆規則。但由於它是“預算”品牌路由器,我懷疑您的選擇將僅限於“狀態防火牆開/關”複選框。或者你甚至可能不明白。
一種可能的解決方案是向 Debian OpenVPN 伺服器添加第二個 NIC,並使其成為 Office A 的網際網路網關路由器。這樣一來,Office A 客戶端上的預設網關路由也適用於
10.8
流量,您不必向所有客戶端的路由表添加額外條目。作為額外的獎勵,您將有機會iptables
根據自己的意願定制防火牆規則。