我想根据客户端使用的证书有条件地为其分配子网。每个用户都会获得自己的证书和密钥,但随后会在所有设备上使用它。
期望的最终结果是特定用户连接到服务器的所有设备都能够通过 VPN 相互通信,但不能与其他用户的设备通信。
经过多次 Google 搜索,我仍无法找到配置 OpenVPN 以允许此操作的方法。我目前仍在规划服务器的设置,因此如果使用其他软件可以更轻松地完成此操作,我愿意听取建议。非常感谢。
答案1
OpenVPN 的一个特定实例使用单个配置文件运行,而该文件又只能操作单个 TUN/TAP 网络接口。要求 OpenVPN 操作两个接口根本是不可能的。
但是,没有什么可以阻止您创建两个 OpenVPN 实例,每个实例都有自己的接口,监听不同的端口(数字 1194 不是正式标准,任何端口号都可以)。您可以:
- 如果您拥有或可以使用/配置多个 CA,则仅允许特定 CA 颁发的证书连接到每个实例
- 使用单独的配置每个实例TLS 身份验证文件,并与相应的客户端共享这些文件,以便只有拥有正确文件的用户才能连接到他们自己的实例
- 使用TLS 验证可以自己测试证书的功能,也许针对每个 OpenVPN 实例的预先批准的证书列表,或者匹配证书的专有名称中的部门。
为了获得更好的安全性,将上述方法结合起来效果会更好。