OpenVPN:允许特定客户端仅访问 OpenVPN 服务器后面的特定 LAN

OpenVPN:允许特定客户端仅访问 OpenVPN 服务器后面的特定 LAN

我在一台 Ubuntu 18.04 机器上运行了一个 OpenVPN 服务器,还有多个 OpenVPN 客户端连接到该服务器。其中一些客户端是路由器,每个路由器后面都有一个 192.168.0.0/24 LAN。其他客户端是 Windows、macOS 和 iOS 设备。

目标是特定(Windows、macOS 或 iOS)客户端只能访问特定 LAN(路由器 OpenVPN 客户端后面)。例如,某部 iPhone 只能通过 OpenVPN 服务器访问 LAN_1,而另一部 iPhone 必须始终仅连接到 LAN_2,等等。

  • 我该如何确立这一区别?

我已经创建了目录/etc/openvpn/ccd并添加了带有 LAN 名称的文本文件。由于每个文件都包含行iroute 192.168.0.0 255.255.255.0,因此除了名称之外没有其他区别。

  • 是否有可能通过使用具有完全相同名称的客户端配置文件来实现我的目标?
  • 此访问限制是否可以基于客户端配置文件而不是设备,以便特定的 iPhone 可以连接到 LAN_1 以及 LAN_2,具体取决于激活了哪个客户端配置文件?

答案1

每个客户端都会通过其路由器连接到您的服务器,因此 routerX 后面的 clientA 和 clientB 似乎来自同一个地方。

我认为你不能根据你的问题对某些用户使用某些规则。如果某些设计选择意味着你想保留问题中的概念,那么你可以分配客户端的静态 IP在 OpenVPN 中...您可以将规则应用于这些 IP,以允许它们通过您的特定 VPN。

答案2

我找到了解决问题的方法,但我必须补充一点,它远非理想。

我发现,只需将多个server.conf配置文件添加到/etc/openvpn目录中,就可以在一台机器上拥有多个 OpenVPN 服务器实例。然后,OpenVPN 会为每个实例创建一个虚拟 tun 接口,我所要做的就是为每个实例选择一个新的 VPN 子网和端口号。

在此处输入图片描述

现在,每个路由器 VPN 客户端都将连接到一个唯一的子网(OpenVPN 服务器实例),并且 iPhone、MacBook 等上的每个客户端配置文件都将执行相同操作。因此,通过激活某个客户端配置文件,我实际上选择了某个子网。

相关内容