我有一个运行 OpenVPN 服务器的云虚拟机,另一方面,我在专用网络内有一台 Synology NAS。
我想从服务器访问客户端的LAN(192.168.1.0/24)。
在服务器上,我固定了它的 VPN IP,并发iroute
送到客户端:
$ cat /etc/openvpn/ccd/hodor
ifconfig-push 192.168.2.142 255.255.255.0
iroute 192.168.1.0 255.255.255.0
我还配置了/etc/openvpn/server/server.conf
到客户端的路由:
push "route 192.168.1.0 255.255.255.0"
route 192.168.1.0 255.255.255.0
现在我可以从服务器 ping 客户端(192.168.2.142 和 192.168.1.20):
server$ ping -c1 192.168.1.20
PING 192.168.1.20 (192.168.1.20) 56(84) bytes of data.
64 bytes from 192.168.1.20: icmp_seq=1 ttl=64 time=14.8 ms
server$ ping -c1 192.168.2.142
PING 192.168.2.142 (192.168.2.142) 56(84) bytes of data.
64 bytes from 192.168.2.142: icmp_seq=1 ttl=64 time=14.1 ms
从客户端我可以看到 ARP 请求:
client$ tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
20:37:17.666777 IP 192.168.2.1 > 192.168.1.20: ICMP echo request, id 14, seq 1, length 64
20:37:17.666813 IP 192.168.1.20 > 192.168.2.1: ICMP echo reply, id 14, seq 1, length 64
20:37:21.022983 IP 192.168.2.1 > 192.168.2.142: ICMP echo request, id 15, seq 1, length 64
20:37:21.023026 IP 192.168.2.142 > 192.168.2.1: ICMP echo reply, id 15, seq 1, length 64
但是,我无法访问/ping 客户端 LAN 接口上的其他设备,但我有很多设备:
client$ sudo ip neigh
192.168.1.31 dev ovs_eth3 lladdr a8:a1:59:83:83:0c REACHABLE
192.168.1.3 dev ovs_eth3 lladdr 3c:6a:9d:13:d1:86 STALE
192.168.1.2 dev ovs_eth3 lladdr ec:b5:fa:09:07:ac STALE
172.17.0.4 dev docker0 lladdr 02:42:ac:11:00:04 STALE
192.168.1.1 dev ovs_eth3 lladdr 44:fe:3b:f9:05:1a REACHABLE
172.17.0.6 dev docker0 lladdr 02:42:ac:11:00:06 STALE
192.168.1.18 dev ovs_eth3 lladdr 02:11:32:20:17:25 REACHABLE
172.17.0.2 dev docker0 lladdr 02:42:ac:11:00:02 STALE
192.168.1.11 dev ovs_eth3 lladdr 60:fb:00:8f:cb:8e REACHABLE
172.17.0.3 dev docker0 lladdr 02:42:ac:11:00:03 REACHABLE
192.168.1.9 dev ovs_eth3 lladdr 5c:ea:1d:74:fa:bb STALE
192.168.1.15 dev ovs_eth3 lladdr 9e:12:c6:2f:1a:0b STALE
当然,我可以从客户端访问/ping 我的设备。
如何配置我的 NAS 以允许 VPN 服务器访问客户端的设备?
答案1
您必须配置 OpenVPN 以重定向来自其他子网的流量。
首先,我建议通过取消注释以下行来启用客户端的对等配置/etc/openvpn/server/server.conf
:
client-config-dir /etc/openvpn/ccd
然后创建一个/etc/openvpn/ccd/client-name
包含以下内容的文件:
ifconfig-push 192.168.2.142 255.255.255.0
iroute 192.168.1.0 255.255.255.0
配置push
通知客户端获取192.168.2.142
IP 地址。因此,对于该客户端来说,这将是静态的。
然后该iroute
命令将允许192.168.1.0/24
通过此 VPN 链接。
由此,您应该能够为服务器上的任何客户端运行 ICMP 命令,并评估它是从客户端接收到的tcpdump
。
通常,这不会允许您访问该客户端,因为客户端的 LAN 端口上未启用伪装。为此,您应该在 eth0 (ovs_eth0?) 端口上启用 IP 转发和伪装:
ip -t nat -A 后路由 -j 伪装 -o eth0
那么它应该可以工作。
确保保存 iptables 配置。您可以在 NAS 启动后使用以下脚本进行配置/usr/local/etc/rc.d/iptables_nat.sh
: