![無法 ping OpenVPN 伺服器後面的子網](https://rvso.com/image/1568464/%E7%84%A1%E6%B3%95%20ping%20OpenVPN%20%E4%BC%BA%E6%9C%8D%E5%99%A8%E5%BE%8C%E9%9D%A2%E7%9A%84%E5%AD%90%E7%B6%B2.png)
這是我的基礎建設:
dns of mydomain.com:
vpn A 90.90.90.1
vpn A 90.90.90.2
client vpn config:
client
dev tun
proto udp
nobind
remote vpn.mydomain.com 1394
server1
net.ipv4.ip_forward = 1
iptables:
FORWARD defaults to ACCEPT
vpn config:
dev tun
topology subnet
port 1394
proto udp
server 10.10.1.0 255.255.255.0
push "route 10.90.90.0 255.255.255.0"
interfaces:
ifpub: 90.90.90.1/24
ifpriv: 10.90.90.1/24
ifvpn: 10.10.1.1/24
routes:
10.10.1.0/24 src 10.10.1.1 dev ifvpn
10.10.2.0/24 via 10.90.90.2 dev ifpriv
server2
net.ipv4.ip_forward = 1
iptables:
FORWARD defaults to ACCEPT
vpn config:
dev tun
topology subnet
port 1394
proto udp
server 10.10.2.0 255.255.255.0
push "route 10.90.90.0 255.255.255.0"
interfaces:
ifpub: 90.90.90.2/24
ifpriv: 10.90.90.2/24
ifvpn: 10.10.2.1/24
routes:
10.10.1.0/24 via 10.90.90.1 dev ifpriv
10.10.2.0/24 src 10.10.2.1 dev ifvpn
問題是,從我的客戶端我可以 ping 通我所連接的 OpenVPN 伺服器,但無法 ping 通 10.90.90.0/24 子網路中的其他伺服器。
tcpdump
顯示 ICMP 請求在同一台伺服器上從 發送到 ,ifvpn
但ifpriv
ICMP 請求封包永遠不會繼續前進。
將日誌記錄新增至 iptables 還顯示 ICMP 請求封包進入 POSTROUTING 狀態而沒有被丟棄,但封包從未到達目的地,我不知道這裡發生了什麼,我沒有解決方案。
我知道我可以偽裝我的資料包,但我不想這樣做,因為不建議這樣做(https://community.openvpn.net/openvpn/wiki/NatHack),否則這將是我最後的解決方案。
答案1
如果遠端伺服器“公開子網路”,則您必須有一個ccd
包含帶有指令的檔案的目錄iroute
,如 OpenVPN 文件中詳細描述的那樣。您還必須route
向客戶推播指令。
當一切正常運作時:
- 客戶端發送 ping。
- 用戶端的作業系統有一個路由命令,可將此流量傳送到本機 OpenVPN 伺服器。
- 訊息
ccd
告訴OpenVPN連接到哪個遙控器發送流量進行交付。 - 交通出現在這個遠端並繼續前往目的地。
- 對於回程,遠端系統必須也有一個作業系統路由將流量傳回它是OpenVPN 伺服器。