当 VPN 客户端连接到 VyOS 等 VPN 路由器时,它们如何获得 IP 地址?(虚拟 IP 地址池如何适应?)

网络工程 虚拟专用网 dhcp 网络安全
2021-07-16 05:45:09

我想知道 VPN 远程客户端在连接到嵌入在 VyOS 路由器中的 StrongSWAN 或 OpenVPN VPN 服务器时如何在远程网络上获得私有 IP 地址的详细信息,以及虚拟 IP 地址池如何适应过程。

过去,我只是假设路由器内置的 VPN 服务器建立了一个虚拟隧道出口点作为远程客户端连接远程网络的入口点,并将远程客户端指向远程 LAN 上存在的 DHCP 服务器,但是然后我开始注意到几个 VPN 解决方案提到了一个叫做虚拟 IP 地址池(“VIPAP”)的东西,这让我怀疑是否有更多的事情发生,我以前想过。

  • “VIPAP”究竟是什么,为什么会存在?他们服务于什么目的?
  • “VIPAP”是否与 DHCP 分开?(它还有一个保留地址池)
  • 是否根据 DHCP 池范围动态生成“VIPAP”?
  • 如果“VIPAP”具有静态设置的范围,它们是否应该与 DHCP 范围完全重叠,或者它们应该是 DHCP 池范围之外的保留空间的一部分?

这是我目前的理解:

我相信过去您曾经拥有 WAN -> 基本防火墙/路由器,并建立与 VPN 连接相关的端口的端口转发到 LAN 上的 VPN 服务器。例如 OpenVPN 服务器或 StrongSWAN VPN 服务器。现在 pfSense 防火墙上有一个迷你 OpenVPN 服务器,VyOS 路由器上有一个迷你 StrongSWAN VPN 服务器(如果你把它们放在边缘,你就不需要转发端口。)

strongswan.org 提到了一些有关虚拟 IP 地址池的内容。假设我们有一台 1 以太网端口的计算机充当 StrongSWAN VPN 服务器。我的理解是,默认情况下,端口转发(或 DMZ)会将 WAN IP 重新映射到笔记本电脑的私有 IP,以便在防火墙/NAT 路由器后面时可以从 Internet 访问它。默认情况下,服务器的以太网端口有一个私有 IP 地址 10.0.0.100,以及一个虚拟网络适配器隧道接口,其 IP 地址位于第三个子网中,仅用于通过虚拟隧道进行路由。然后每当远程客户端连接到 VPN Server 时,VPN Server 都会将一个虚拟 IP 地址附加到它的以太网端口,它代表客户端。

它如何为客户端获取虚拟 IP 地址是让我感到困惑的部分。

通常,当我将一台新计算机连接到我的网络时,它会从 DHCP 的 DORA 进程中获取 IP,该进程发生在第 2 层。它从 DORA 进程的 O 阶段获取 DNS 和子网信息。VPN 客户端将在第 3 层进入网络,并且在远程网络上没有第 2 层存在,因此无法使用在第 2 层运行的 DHCP。

也许当客户端连接到 VPN Server 时,VPN Server 在 VPN Server 上创建一个虚拟网络接口,让客户端在远程网络上有第 2 层存在,VPN Server 代表远程通过代理启动 DHCP DORA 进程客户端,然后远程网络上的 DHCP 服务器将带有 DNS 信息的 IP 地址分配给 VPN 服务器上存在的虚拟网络接口,并且该虚拟网络接口代表远程客户端?(不是说它像那样工作,只是说我试图想象它是如何工作的。)

但是,如果就这么简单,那么为什么会存在称为虚拟 IP 地址池的东西呢?还是我的概念混淆了,VIPAP 与远程 DHCP 解析无关?

2个回答

DHCP 需要一个链路层,而 VPN 客户端实际上并不存在该链路层。通常,使用路由VPN 连接并使用 VIPAP 池代替不存在的 DHCP 池。

通过桥接VPN 连接,VPN 客户端使用与 VPN 服务器位于同一子网中的地址。但是,网桥功能不全,DHCP 也不起作用——服务器使用代理 ARP 将帧路由到隧道中。

对于干净的设置,DHCP 和 VIPAP 不应重叠。我想已经使用过的 IP 地址不会被重复使用,但我不会依赖于此。此外,除非绝对需要桥接,否则您应该始终使用带有专用子网的路由 VPN。

对于客户端,DHCP 和 VIPAP 没有区别。至少 Windows OpenVPN TAP 接口曾经声称它有一个 DHCP 地址。

当 VPN 客户端连接到 VyOS 等 VPN 路由器时,它们如何获得 IP 地址?(虚拟 IP 地址池如何适应?)

答案是它完全取决于所使用的 VPN 技术:

  • 站点到站点 - 基于 GRE/IPSec/DMVPN/VTI 的 VPN 技术:
    您可以拥有一个本地和远程路由器,每个路由器都有 2 个物理路由端口。
    -(一个物理端口连接到 Internet 调制解调器)
    -(一个物理端口指向核心 LAN 交换机)
    - 在每个路由器上创建一个虚拟隧道接口(一个支持多播/路由协议) 本地 LAN 上的 DHCP 客户端 192.168.1.100 保持他们的 IP 相同,不需要任何特殊的软件、配置或虚拟 IP 地址池,他们只需 ping 远程 LAN 上的 192.168.2.100。他们的本地路由器在其路由表中有一条到远程 LAN 的路由,因此它通过隧道转发流量。(它以绕过 NAT 和 NAT 防火墙效应的方式执行此操作。) VTI图

    (就像路由器的 2 个 WAN 端口通过一根以太网电缆连接一样。)
    优点:客户端无需配置。
    缺点:本地局域网上的PC只有在连接到本地路由器时才能ping通远程局域网上的PC,如果它们连接到手机上的热点等不同的网络,他们将无法ping通远程局域网。(因为他们手机的网关没有到那个远程 LAN 的路由。)



  • 远程访问 VPN 基于 OpenVPN/SSL/TLS 的 VPN 技术:
    客户端 PC 将安装 VPN 客户端软件,该软件将安装一个虚拟网络适配器,该适配器将被配置为与远程 OpenVPN 路由器形成连接。此虚拟网络适配器不会从本地 DHCP 服务器获取 IP 地址,也不会从远程 DHCP 服务器获取 IP 地址,而是从为以下对象保留的池中获取虚拟 IP 地址 (VIP) VPN 客户端,并且这个池需要配置为提供 DNS 信息(通常你会从 DHCP 服务器获取 DNS 信息)。
    所以最终发生的事情是客户端 PC 具有:
    - 具有本地 LAN 上 IP 地址的物理接口和本地 DNS。
    - 具有 VIP 地址的虚拟接口存在于远程 LAN 上,该接口使用远程池配置的任何 DNS 进行配置。
    - 能够通过本地私有ip、远程私有ip、本地DNS解析、远程DNS解析来ping本地服务器和远程服务器。
    优点:无论客户端连接到什么网络,这都可以工作。
    缺点:需要安装软件并在客户端进行配置。