具有客户端到客户端直接连接的 VPN?

具有客户端到客户端直接连接的 VPN?

在设置 VPN 时,客户端(例如客户端 1 和客户端 2)通常会向服务器进行身份验证,三者共同构成 VPN。当客户端 1 希望向客户端 2 发送数据包时,该数据包通常会通过服务器进行路由。

是否存在产品/配置蓝图,可以将数据包直接从客户端 1 发送到客户端 2,而无需通过服务器?(如果底层网络拓扑允许,例如没有防火墙)

如果没有,那么有没有办法让客户端 1 通过服务器向客户端 2 发送数据包,而服务器无法窥探数据包的内容?(例如,因为数据包是使用客户端 2 的公钥加密的)

我刚刚在 OpenVPN 论坛上问过,得到的答案是“OpenVPN 不行”。所以我的问题是:还有其他产品可以做到这一点吗?开源优先...

一个用例:客户 1 和客户 2 通常位于不同的办公室,但发现他们都在总部。他们是否仍需要通过公共互联网相互通信?

感谢提供链接。谢谢。

答案1

是否存在产品/配置蓝图,可以将数据包直接从客户端 1 发送到客户端 2,而无需通过服务器?(如果底层网络拓扑允许,例如没有防火墙)

我不知道是否存在精简版解决方案,但编写脚本应该相对容易。概述:

  • 在客户端 1 上,提供报告其可公开寻址 IP 的服务。
  • 在客户端 1 上,在其公共 IP 上运行 OpenVPN 服务。
  • 在客户端 2 上,当连接到中央 OpenVPN 服务器时,使用“up”脚本连接到客户端 1 并获取其 IP。将此 IP 写入 openvpn 配置片段(例如“remote 1.2.3.4”)。
  • 在客户端 2 上,使用包含上述自动生成的代码片段的配置启动一个新的 OpenVPN 实例。

当然,由于多种原因,这并非万无一失(如果客户端 1 上的服务不可用怎么办?如果客户端 2 在客户端 1 之前连接到中央服务器怎么办?等等),但原理是正确的。

有没有一种方法可以让客户端 1 通过服务器向客户端 2 发送数据包,而服务器无法窥探数据包的内容?(例如,因为数据包是使用客户端 2 的公钥加密的)

是的。在客户端 1 和客户端 2 之间建立单独的 OpenVPN(或者 IPSec)会话。此子隧道可以使用其他 OpenVPN 链接作为其传输。

相关内容