是否可以设置 openvpn,以便客户端以 p2p 模式相互通信,这样数据就不会通过服务器流动?服务器将仅充当会合点。我想减少服务器负载。
类似于这张图片中的内容:
答案1
这通常称为“全网状路由”。 “打洞”是一种 NAT 遍历技术。你真的需要这个吗?我的意思是,VPN 的负载是多少,所以你需要减少它,这个 VPN 是什么,所以你需要你的客户端(辐条)相互通信那么多?在我看来,建立直接辐条连接的主要动机不是减少服务器(集线器)的负载,而是减少 IP 电话辐条之间的网络延迟(往返时间)。
这在 OpenVPN 中是不可能的。使用 OpenVPN 你能做的最好的事情就是设置更多的 VPN 服务器,并在客户端配置中拥有多个连接配置文件;然后你可以在客户端上打乱配置文件的顺序,或者使用连接配置文件随机化,这样负载就会分散到多个服务器上(此外你还会获得冗余)。
此类解决方案的实际标准是 Cisco DMVPN。在第 2 阶段,分支安装直接隧道,流量不通过集线器,NAT 遍历借助 IPSec NAT-T 实现。可以使用 Linux 运行兼容 Cisco 的 DMVPN 路由器开放的NHRP软件,但设置时需要运气,尤其是与 IPSec 加密和 OSPF 动态路由一起使用时。
更简单的是设置锡克,它实现了全网状路由直接辐射连接(如果可能),其中包括 NAT 遍历。要将节点添加到网格中,您需要为它们生成密钥,并仅将公钥添加到您的中心节点(您应该有多个中心以实现冗余)。
WireGuard 似乎也朝这个方向思考,推出了wg-动态工具,但网状路由尚未实现。您已经可以迁移到 WireGuard,它在 CPU 使用率方面比 OpenVPN 高效得多(大约高效 8 倍),因此您可以减少服务器负载。当他们实现全网状路由时,您也可以免费获得这一点。