如何允许 VPN 客户端访问 LAN 服务器

如何允许 VPN 客户端访问 LAN 服务器

我需要一些帮助来了解如何允许 vpn 客户端访问“内部网”上的服务器。

我在 ovh 有一台专用/物理服务器(如果这很重要的话),还有 4 个额外的 IP。安装的操作系统是 proxmox,我有两个网络设备(它们的类型是“Linux 桥接器”)。其中一个分配了服务器的公共 IP(vmbr0),另一个(vmbr1)的 IP 为 172.20.0.1,网络掩码为 255.252.0.0。

我创建了一些仅分配了 vmbr1 的虚拟机。我可以顺利地在这些机器之间 ping 通。我还可以从这些机器访问互联网,就像它们位于我的家用路由器后面一样。如果重要的话,在 172.20.0.2 上我有一个 dhcp 服务器,在 172.20.0.3 和 172.20.0.4 上我有两个 dns 服务器。

我创建了另一台虚拟机,其中分配了 vmbr0 和 vmbr1。我在 vmbr0 上配置了一个额外的公共 IP,我可以通过 ssh 进入它。我还安装了 openvpn 并对其进行了配置,以便客户端可以通过 vpn 服务器访问互联网。vpn 客户端从 10.8.0.0/24 网络获取 IP。

我现在想要做的是允许来自 172.20.0.0/14 的所有服务器 ping/ssh/etc 到 10.8.0.0/24 网络上的 vpn 客户端。

我发现我需要让 openvpn 服务器向客户端推送一些路由(以便客户端了解其他网络);

我很确定我需要在 proxmox 主机本身上做一些事情(因为有 172.20.0.0/14 网络的网关)并且我相信我还必须在 openvpn 服务器本身上添加一些 iptable 规则以便转发/伪装网络之间的流量,但我不明白具体是什么规则。

所以我的问题是:在这种设置下,我需要做什么才能允许 vpn 客户端访问虚拟服务器?

答案1

如果 OpenVPN 主机上没有防火墙,它将默认允许流量,因此您可以忽略它。

客户端需要推送路由,以确保发往内部子网的流量通过 VPN 路由。这可能是默认路由(导致所有流量都通过 VPN 从客户端发送)或内部子网的特定路由。您已确定您可以在 VPN 配置中推送此路由(前提是您使用基于证书的身份验证)。

您需要在 OpenVPN 主机上启用 IP 转发。使用 将sysctl的值设置net.ipv4.conf.all.forwarding为 1。添加一个文件以/etc/sysctl.d确保此设置可在重新启动后继续有效。

本地主机还需要路由来确保它们知道如何访问 OpenVPN 子网。您可以:

  • 在 OpenVPN 主机中使用 NAT,使转发的数据包看起来好像来自其内部 IP。这隐藏了 10.8.0.0/24 子网的存在,因此无需任何其他设备知道它,但意味着所有 VPN 客户端的所有流量似乎都来自单个主机。

  • 设置路由以确保发往 10.8.0.0/24 的流量被定向到 OpenVPN 主机。这些可以在每个虚拟机或主机上添加。使用该route工具,并将命令添加到网络接口声明中,以确保它们在重新启动后仍然存在。

相关内容