OpenVPN 客户端无法访问 LAN 机器

OpenVPN 客户端无法访问 LAN 机器

我在用着https://github.com/kylemanna/docker-openvpn在我的 LAN 服务器 ( ) 上设置 OpenVPN 服务器,192.168.2.10该服务器位于路由器 ( 192.168.2.1) 后面,并有其他几台机器 ( 192.168.2.11192.168.2.12等)。此 OpenVPN 容器直接使用主机网络 ( --network host) 以简化路由配置。

问题:我希望 VPN 客户端能够访问这些192.168.2.0/24机器,反之亦然。

OpenVPN 服务器位于192.168.255.0/24子网上。它通过 OpenVPN 配置将此路由推送到 VPN 客户端:

push "route 192.168.2.0 255.255.255.0"

但从 VPN 客户端 ( 192.168.255.20) 我只能:

  • ping 192.168.2.10192.168.2.0/24这是子网上的 OpenVPN 服务器 IP
  • ping 192.168.255.1192.168.255.0/24这是子网上的 OpenVPN 服务器 IP

并且无法 ping 通192.168.2.1192.168.2.11或者192.168.2.12但是从 OpenVPN 服务器容器,我可以。

我不是网络专家,所以我肯定我误解了一些东西,但是是什么呢?

答案1

您的其他机器需要对面的通过 OpenVPN 服务器到达 VPN 客户端的路由。(普通数据包路由是无状态的,因此仅仅因为你有正确的路由,发送ping 并不意味着接收者始终能够回复返回给您 – 它不能“搭载”原始请求。)

添加一条到您的 LAN 路由器 (.2.1) 的192.168.255.0/24网络路由。192.168.2.10

或者,您也可以向每个单独的 LAN 设备添加相同的路由,甚至通过 DHCP 分发该路由(使用“无类静态路由”DHCP 选项)。


如果 LAN 路由器绝对不支持静态路由配置,一个常见的替代方法是在 OpenVPN 服务器的防火墙上启用 SNAT - 让它伪装来自 VPN 客户端的所有数据包,就好像它们实际上来自 192.168.2.10(VPN 服务器本身)。

这将允许 LAN 主机回复(因为它们认为它们正在回复另一个本地 LAN 设备),但不允许它们发起新的连接VPN 客户端。(除非您添加“端口转发” DNAT 规则……)

相关内容