我需要设置从本地网络到 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 网络)
现在假设本地 vpn 服务器是 LAN 的默认网关,每一方都应该能够路由到另一方。
你是这个意思吗?