到目前为止,我已经成功在 DigitalOcean 上安装了 OpenVPN 服务器,并在 Raspberry Pi 上安装了 OpenVPN 客户端。我的 Raspberry Pi 的 OpenVPN IP 是 10.8.0.6,我可以从 OpenVPN 服务器 ping 通它。现在,此 RPi 通过 IP 10.1.2.14 连接到 LAN 网络(网关 10.1.1.253,子网掩码:255.255.252.0)。有另一个 Linux 系统连接到此客户端(RPi)的网络,其 IP 是 10.1.2.2。
现在我想通过 VPN 从 OpenVPN 服务器访问 10.1.2.2。有人能解释一下我该怎么做吗?
编辑:根据@masgo的建议,我做了以下事情
- 在
server.conf
文件中,添加client-config-dir /etc/openvpn/ccd
,route 10.1.0.0 255.255.252.0
和push "route 10.1.0.0 255.255.252.0"
- 在 /etc/openvpn/ccd/lappy 文件中,添加
iroute 10.1.0.0 255.255.252.0
- 现在我可以从 OpenVPN 服务器 ping 到 ip 10.1.2.14(OpenVPN 的客户端),但不能 ping 到 ip 10.1.2.2。我在客户端路由中遗漏了什么?
答案1
两件事情:
你确定你的本地网络没问题吗?如果网关是 10.1.1.253,网络掩码是 255.255.255.252,那么 10.1.2.2 和 10.1.2.14 电脑不是与网关位于同一网络上。
Ocean 服务器发出的数据包带有 OpenVPN 隧道另一端的 IP 地址,大概是 10.8.0.1。当到达 10.1.2.2 时,它会发现自己属于不同的子网,因此会尝试以它唯一知道的方式转发回复,IE通过网关,而不是通过 OpenVPN 客户端。因此,返回的 ping 永远不会回来。
避免此问题的方法是
iptables
在 RPI 上添加以下规则:iptables -t nat -A POSTROUTING -d (here your local network) -j MASQUERADE
这样数据包就会被发送回 OpenVPN 客户端。我没有插入你的网络,因为不清楚是哪一个:如果是10.1.2.0/30请插入该内容,或者进行相应修改。
答案2
你想做的事叫做局域网到局域网解决方案是让 VPN 客户端和 VPN 服务器上的路由正确。通常,您可以通过将路由信息从服务器“推送”到客户端来进行客户端配置。
看看这个: https://community.openvpn.net/openvpn/wiki/RoutedLans
还: https://serverfault.com/questions/593314/openvpn-routing-for-lan-to-lan-through-tun