是否可以设置 OpenVPN,以便服务器不具有作为 VPN 一部分的接口?

是否可以设置 OpenVPN,以便服务器不具有作为 VPN 一部分的接口?

我希望设置 VPN(OpenVPN 是我的首选,但我并不局限于此),使得托管 VPN 的服务器在 VPN 内部不可见。也就是说,客户端通过 VPN 接口发送的任何数据包都将被传送到另一个客户端的 VPN 接口或被丢弃。另一方面,服务器根本不应该有 VPN 接口,正常的网络操作不应该能够在网络上发送数据包。

这能做到吗?

我发现的所有文档都假定客户端将通过 DHCP 连接(这要求服务器至少在一定程度上连接),但我想不出任何理由说 VPN 不能使用静态 IP,或者如果不在服务器上设置 VPN 接口,DHCP 服务器就无法在 VPN(请参阅编辑)服务器内部实现。

编辑:基于Phil Hollenback 的回答中关于桥接模式的链接看来 OpenVPN 确实有我所想的“内部 DHCP 服务器”。

答案1

我怀疑这是可能的(尽管很奇怪)。使用 tap 设备,这样远程计算机就通过 vpn 桥接而不是路由。OpenVPN 允许您将脚本推送到客户端以在连接时执行,因此您可以使用该功能在客户端计算机上配置网络,而不是使用服务器推送指令来配置 dhcp。相反,直接在客户端上运行适当的 ifconfig 和 route 命令,告诉它通过 vpn 连接到网络。这可能会变得复杂,因为您必须处理 linux 和 windows 上的不同网络配置工具,但这应该是可行的。

不过我猜这只能避免随意检查。很可能会有信息泄露,让客户端检测到它是通过特定的 openvpn 服务器连接到网络的。

以下是关于 openvpn 桥接的一些信息那可能会有用。

答案2

这不会回答您的 OpenVPN 问题,但如果您不介意的话,让我们退一步来看看。

您想要一个仅供客户端使用的 VPN,对吗?您的客户端可能位于世界任何地方,并且您只想通过 VPN 连接这些客户端?您不想让客户端连接到任何中央资源,而只想让客户端相互连接。明白了。

你看过鰤鱼^2? 它确实实现了您想要实现的目标。

如果您所做的事情不是商业性的,并且您的客户端不超过 16 个,那么 Hamachi^2 是免费的。如果您有商业需求和/或您需要超过 16 个客户端,则每年的费用为 199 美元。

每年 199 美元可能比购买 OpenVPN 硬件(如果需要)、配置和维护 OpenVPN 的时间以及支持客户/用户的时间要少。

当然,如果这个目的是非商业性的,超过 16 个客户端,你捐献了你的时间并且已经提供了硬件,我绝对可以明白为什么 Hamachi^2 不是你的解决方案。

既然如此,我不完全确定为什么 OpenVPN 隧道接口上的完全锁定防火墙解决方案不能满足您的需求。

答案3

我假设 OpenVPN 充当虚拟交换机,默认情况下,它只是将服务器添加为另一个客户端。客户端恰好在同一台机器上,但除此之外完全没有意义。我希望有某种方法可以告诉它不要打扰。然而,似乎(如果我错了,请纠正我)情况并非如此,服务器与 VPN 的连接有一些特殊之处。


编辑:看来我还是错了。在与从事这方面工作(如内核模式开发等)的人聊天大约一个小时后,我发现了我对 VPN 实现方式的误解:我假设 VPN 端点的处理方式是在用户空间进程中它正在监听某个 UDP 端口(使隧道协议成为应用层协议),真实的情况是隧道协议(至少是常见的协议)是一个传输层协议,类似于 TCP/UDP,以及所有数据处理从处理 IP 数据包开始,到隧道数据包的解密,再到转发到内核网络栈,其实就是在内核中完成。一旦有人指出我的这个错误,所使用的设计的合理性就变得一目了然:VPN 服务器的用户空间组件无非就是配置工具它负责管理身份验证,并为每个请求连接的客户端建立一个单独的、对称的点对点链接。

另一方面,这让我想知道 VPN 如何适应大型设置(例如 IBM 或类似设备),这些设置需要同时支持数百到数千个活动会话到同一主机?它们是否运行具有数百到数千个网络接口的普通内核(我很难相信同一内核可以有效处理大多数情况下的一、二、也许三个接口和数千个接口的情况)还是它们基于经过彻底修改的内核、特殊操作系统、不同架构甚至特殊硬件。

相关内容