我正在搭建一个 openvpn 服务器,该服务器将支持多个客户端进入私有子网。因此,在私有子网上,连接的客户端将获得 IP 地址,例如 10.8.0.10、10.8.0.11 等。
我需要的功能之一是客户端能够相互找到对方。有没有简单且普遍接受的方法让客户端查看已分配给所有客户端的 IP 地址列表?
我不需要 DNS 名称或类似的东西。
答案1
在 OpenVPN 服务器配置文件中,先决条件是以下指令:
# Uncomment this directive to allow different
# clients to be able to "see" each other.
# By default, clients will only see the server.
# To force clients to only see the server, you
# will also need to appropriately firewall the
# server's TUN/TAP interface.
client-to-client
为了方便客户端轻松找到彼此,我建议将动态 DNS 作为(几乎)始终存在的企业解决方案。要显示活跃客户端列表,您可以:
- 找到一种向客户端分发或提供 openvpn-status.log 的方法?
- 将 ping 脚本或类似脚本分发给客户端,也许对每个实时主机进行反向 DNS 查找?
- 让客户端在连接时在自定义数据库或文件中注册/注销自己,并采用某种清理机制。这种替代方案似乎完全是重新发明轮子,但毫无疑问,这是一种有趣的消磨时间的方式,对整个 IT 世界没有任何帮助。
答案2
这是支持 OpenVPN 2.x 客户端到客户端功能的原始链接:
https://openvpn.net/index.php/open-source/documentation/howto.html#scope
取消注释此指令以允许不同的客户端能够“看到”彼此。默认情况下,客户端只能看到服务器。要强制客户端只能看到服务器,您还需要适当地对服务器的 TUN/TAP 接口设置防火墙。
;client-to-client
如果您希望连接的客户端能够通过 VPN 互相访问,请取消注释上述客户端到客户端指令。默认情况下,客户端只能访问服务器。
接下来,问问自己是否要允许客户端 2 的子网 (192.168.4.0/24) 与 OpenVPN 服务器的其他客户端之间的网络流量。如果是,请将以下内容添加到服务器配置文件中。
client-to-client
push "route 192.168.4.0 255.255.255.0"
这将导致 OpenVPN 服务器将 client2 的子网通告给其他连接的客户端。