多个 VPN 客户端并行

信息安全 加密 网络 虚拟专用网 路由
2021-09-03 01:26:09

如果我要在我的机器上同时运行多个 VPN 客户端,会涉及哪些风险?

例如,是否存在技术冲突,使其无法正常工作?

会不会有地址解析冲突?

更可怕的是,来自一个网络的流量可以通过我的机器跨入另一个网络吗?
或者我的流量是否会意外地被错误地路由到错误的网络?


如果重要的话,我正在运行的 VPN 客户端是 Juniper Network Connect 和 Cisco 的 AnyConnect(在完全修补和强化的 Windows7 上)。我对远程端点了解不多...

4个回答

从根本上说,VPN 模拟了一个“专用网络”,其目的是与整个 Internet 隔离。“V”表示这种隔离是通过密码而不是物理方式执行的;但是,该模型仍然是“单独的电缆”。如果您的机器同时是两个 VPN 的一部分,那么专用网络不再是孤立的。这往往与最初建立专用网络的原因相矛盾。

之所以称为 VPN 实现,是因为应用程序不需要知道它。应用程序使用标准的 Internet 相关协议(用于名称解析的 DNS、TCP 和 UDP 套接字……),VPN 接收流量并透明地发挥作用。典型的 VPN 实现将自身挂接到系统路由表中,以接收用于给定地址类别的数据包。只有在两个专用网络中使用的地址不重叠时,两个 VPN 才能并行工作——这并不容易实现,因为专用网络是专用的,不使用全局地址分配方案。私有网络通常在“私有类”上努力,例如 10.*.*.* 和 192.168.*.*。

DNS 很好地说明了同时访问两个专用网络的问题。当应用程序想要访问名为“example”的机器时,它不知道它在哪个网络上。这就是专用网络的重点:应用程序不需要知道专用网络的存在。专用网络托管它自己的名称服务器,它可以解析它托管的机器的名称。如果您链接到两个 VPN,那么对于每个名称解析,您都必须与两个名称服务器通信。因此,来自专用网络 1 的名称服务器也将收到对专用网络 2 中名称的名称解析请求。这很可疑。如果在两个网络中使用相同的名称,那么所有的地狱都会崩溃。这与重叠 IP 地址的问题相同,转换为名称空间。

此外,如果您的机器充当路由器,它会很乐意将数据包从一个 VPN 路由到另一个 VPN。在 Linux 系统上,这很简单:

echo 1 > /proc/sys/net/ipv4/ip_foward

如果您在安装时要求,某些 Linux 发行版将为您做这些。取决于用户不做这样的事情看起来有风险。

总而言之,VPN的正常模型是:

  • 给定的用户系统是 VPN 的一部分,只有VPN(因此只有一个VPN);
  • 如果系统必须能够与“外部世界”对话,它只能通过专用网关进行,从用户系统的角度来看,该网关是 VPN 的一部分。

特别是,链接到 VPN 的系统不得同时链接到另一个网络,无论是 VPN 还是整个 Internet。适当的 VPN 软件将劫持默认路由,并确保它可以看到整个系统的所有传入和传出流量。从本质上讲,这不能容忍另一个 VPN 同时存在。

我在 Mac OS X 上使用了 VPN 客户端软件,它劫持了默认路由以通过隧道发送所有流量(实际上,如果我没记错的话,那是思科的)。如果安装了两个这样的客户端,或者甚至一个和一个正常的客户端,那么问题的答案是“这个数据包会去哪里?” 将取决于时间和实现。可能的选择是其中一个客户端将“获胜”并接收所有流量,或者其中一个隧道通过另一个实现。在这种情况下,Windows 上发生的事情超出了我的范围。

当您谈论“地址解析”冲突时,这取决于您的意思。如果您的意思是 ARP 解析,这应该不是问题。与连接到两个网络的任何系统一样,MAC 地址应该有足够的唯一性以避免冲突。关于 DNS 解析,它取决于 VPN 客户端和专用网络上客户端盒的具体实现。如果它们的行为正确,那么应该可以在专用网络或公共网络上使用 DNS 服务器(但请注意在客户端搜索域中的机器上存在名称冲突的可能性)。如果他们行为不端,那么这又取决于情况的具体情况。

当我需要使用多个 VPN 客户端时,我的工作方式是在 VM 下运行它们。这目前对我来说非常有效,并且避免了 Graham 和 Thomas 提到的冲突 - 否则你会发现操作系统在发送流量时会做奇怪的事情(尤其是在 Windows 下)

这也意味着您在将一个 VPN 的数据发送到另一个 VPN 时不会轻易出错(我所做的是为每个环境定制每个 VM 的背景)

您将需要注意您的安全要求。确保VM之间不存在路由是一个很好的然后(tm)在这里。

我建议您联系 Juniper 和 Cisco 并注册以测试他们的客户端软件。我怀疑任何一家公司都会自行测试这种配置。如果您有问题,我想支持技术会要求您删除其他公司的 VPN 客户端并尝试再次访问网络。

更重要的是,我认为您可能会违反某人的安全政策。当您创建到站点的 VPN 连接时 - 即建立受信任的连接。您似乎想同时连接到两个不同的受信任网络。如果我管理 VPN 头端,我会称通过一个 VPN 访问我的站点并通过另一个 VPN 访问其他人的站点,这是一种等待被利用的安全违规行为。