從 LAN 路由到 OpenVPN
我需要設置從本地網路到 VPN 的路由。也就是說,區域網路內的任何人都應該能夠與 VPN 中的機器進行通信,而無需自己成為 VPN 客戶端。問題是,說到網路,我有點傻……
本地網路有一個 8 位範圍,192.168.2.X VPN 伺服器本身在另一個網路中,在 192.168.3.20(8 位) VPN 網路有一個 16 位範圍,10.8.XX
執行openvpn伺服器的機器的eth0介面有一個靜態IP在192.168.3.20。vpn伺服器本身的tun0介面監聽10.8.0.1
我們已經在做的是將本地網路中到 10.8.xx 的數據包重新路由到伺服器:
traceroute to 10.8.0.1 (10.8.0.1), 30 hops max, 60 byte packets 1 gateway (192.168.2.1) 2.508 ms 2.364 ms 2.325 ms 2 10.8.0.1 (10.8.0.1) 1.898 ms 1.895 ms 1.911 ms
所以我已經可以通過 10.8.0.1 ssh 進入它,這很好。
但是,當我嘗試訪問 VPN 中的客戶端時,結果卻大不相同:
traceroute to 10.8.0.178 (10.8.0.178), 30 hops max, 60 byte packets 1 gateway (192.168.2.1) 2.315 ms 2.152 ms 2.036 ms 2 192.168.3.20 (192.168.3.20) 1.764 ms 1.760 ms 1.776 ms 3 * * * etc...
讓我有點惱火的是,對伺服器的直接請求在 10.8.0.1 終止,而我原本預計它要麼不起作用,要麼在 192.168.3.20 終止。所以很明顯我不太了解這裡發生了什麼……
從那裡開始,我想我可以通過將 eth0 上的流量轉發到 tun0 來解決這個問題:
sudo iptables -A FORWARD -i eth0 -o tun0 -d 10.8.0.0/16 -j ACCEPT
但這沒有任何效果。這幾乎就是我卡住的地方。我嘗試了上述的一些變體,並在 OpenVPN 配置中使用了路由,所有這些都沒有任何明顯的變化。
有趣的是,跟踪活動實際上顯示在
*VPN log, but I don't understand much of what's going on here either: Fri Oct 19 11:57:53 2018 us=219532 GET INST BY VIRT: 10.8.0.158 -> y18022c/185.184.117.20:1194 via 10.8.0.158 Fri Oct 19 11:57:53 2018 us=219539 y18022c/185.184.117.20:1194 TUN READ [60] Fri Oct 19 11:57:53 2018 us=219544 y18022c/185.184.117.20:1194 TLS: tls_pre_encrypt: key_id=0 Fri Oct 19 11:57:53 2018 us=219555 y18022c/185.184.117.20:1194 ENCRYPT IV: 14c0471a 9fe7860f Fri Oct 19 11:57:53 2018 us=219580 y18022c/185.184.117.20:1194 ENCRYPT FROM: 000000ae fa450000 3cac0400 000b1135 5ec0a803 010a0800 9e98b682 bf00282[more...] Fri Oct 19 11:57:53 2018 us=219612 y18022c/185.184.117.20:1194 ENCRYPT TO: 14c0471a 9fe7860f 00bbfc72 b50c8915 8390d362 82f0a84c c22803b1 2a7ceca[more...] Fri Oct 19 11:57:53 2018 us=219622 PO_CTL rwflags=0x0002 ev=4 arg=0x5654a4302150 Fri Oct 19 11:57:53 2018 us=219629 PO_CTL rwflags=0x0000 ev=5 arg=0x5654a4302068 Fri Oct 19 11:57:53 2018 us=219637 I/O WAIT Tr|Tw|Sr|SW [0/63574] Fri Oct 19 11:57:53 2018 us=219646 PO_WAIT[0,0] fd=4 rev=0x00000004 rwflags=0x0002 arg=0x5654a4302150 Fri Oct 19 11:57:53 2018 us=219652 event_wait returned 1 Fri Oct 19 11:57:53 2018 us=219658 I/O WAIT status=0x0002 Fri Oct 19 11:57:53 2018 us=219696 y18022c/185.184.117.20:1194 UDPv4 WRITE [101] to [AF_INET]185.184.117.20:1194: P_DATA_V1 kid=0 DATA c15dc78e ddd12705 8c3a860c 9cd9fe1e da29c4b2 14c0471a 9fe7860f 00bbfc7[more...] Fri Oct 19 11:57:53 2018 us=219707 y18022c/185.184.117.20:1194 UDPv4 write returned 101 Fri Oct 19 11:57:53 2018 us=219715 PO_CTL rwflags=0x0001 ev=4 arg=0x5654a4302150 Fri Oct 19 11:57:53 2018 us=219722 PO_CTL rwflags=0x0001 ev=5 arg=0x5654a4302068 Fri Oct 19 11:57:53 2018 us=219730 I/O WAIT TR|Tw|SR|Sw [0/63574] Fri Oct 19 11:57:53 2018 us=231770 PO_WAIT[0,0] fd=4 rev=0x00000001 rwflags=0x0001 arg=0x5654a4302150 Fri Oct 19 11:57:53 2018 us=231782 event_wait returned 1 Fri Oct 19 11:57:53 2018 us=231789 I/O WAIT status=0x0001 Fri Oct 19 11:57:53 2018 us=231799 UDPv4 read returned 53 Fri Oct 19 11:57:53 2018 us=231809 GET INST BY REAL: 185.184.117.20:1194 [succeeded] Fri Oct 19 11:57:53 2018 us=231837 y18022c/185.184.117.20:1194 UDPv4 READ [53] from [AF_INET]185.184.117.20:1194: P_DATA_V1 kid=0 DATA 1196c495 845bb7fd e61cc8d8 ed4d427a b901d6c8 e81fe5a9 3ab1acce b5687f0[more...] Fri Oct 19 11:57:53 2018 us=231846 y18022c/185.184.117.20:1194 TLS: tls_pre_decrypt, key_id=0, IP=[AF_INET]185.184.117.20:1194 Fri Oct 19 11:57:53 2018 us=231859 y18022c/185.184.117.20:1194 DECRYPT IV: e81fe5a9 3ab1acce Fri Oct 19 11:57:53 2018 us=231876 y18022c/185.184.117.20:1194 DECRYPT TO: 00000036 fa2a187b f3641eb4 cb07ed2d 0a981fc7 48 Fri Oct 19 11:57:53 2018 us=231897 y18022c/185.184.117.20:1194 PID_TEST [0] [SSL-0] [>EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE] 0:53 0:54 t=1539943073[0] r=[0,64,15,0,1] sl=[11,53,64,528] Fri Oct 19 11:57:53 2018 us=231905 y18022c/185.184.117.20:1194 RECEIVED PING PACKET*
我最大的問題是我真的不知道這裡到底發生了什麼……為什麼對 10.8.0.1 的請求沒有通過 192.168.3.20 路由?我的意思是,在終止 VPN 之前必須通過實際伺服器是合乎邏輯的……?當請求到達 eth0 時(從 192.168.3.20 顯示在跟踪中可以看出),為什麼不將它們轉發到 tun0?openVPN 本身是否在這裡阻止了某些東西?
我沒有足夠的評論點,但我想知道你是如何連接 192.168.2.X 和 192.168.3.X 的?猜測一下,您需要將 192.168.3.X 的路由推回 VPN 的另一端。在 /etc/openvpn/server.conf 中添加到 192.168.2.X 的路由:(你可能已經有 192.168.3.X 網路)
# /etc/openvpn/server.conf # Router Subnet route 192.168.3.0 255.255.255.0 push "route 192.168.3.0 255.255.255.0" # The other local Subnet that you need to tell the far end about route 192.168.2.0 255.255.255.0 push "route 192.168.2.0 255.255.255.0"
現在假設本地 vpn 伺服器是 LAN 的預設網關,每一方都應該能夠路由到另一方。
你是這個意思嗎?