如何通过域名在活动的 VPN 隧道上路由流量?

如何通过域名在活动的 VPN 隧道上路由流量?

我使用内置的 Windows 7 VPN 功能和内置的 Windows 8 路由和远程访问 (RRAS) VPN 功能建立了到我的 Web 服务器的 VPN 隧道,以其 FQDN 为目标:(例如 my.server.com)。

如何确保所有以 FQDN“my.server.com”为目标的流量都通过 VPN 隧道路由?具体来说,如果我\\my.server.com\sharedfolder在 Explorer 地址栏中输入或将 Explorer 中的共享驱动器映射到这样的路径,我希望流量通过与 my.server.com 关联的 VPN。

基本上,我希望 Windows 足够智能,当 VPN 连接到“my.server.com”时,通过加密 VPN 将流量路由到“my.server.com”,而当 VPN 未连接时,则正常路由流量。这个要求过分吗?

在我看来,一旦连接,VPN 就会获得一个本地 IP 地址,如 192.168.1.101(我在用户帐户属性的拨入选项卡中在服务器上静态分配了该地址),并且以该地址为目标确实会通过 VPN 路由流量。看来以“my.server.com”为目标的流量永远不会通过 VPN 路由,并且与 VPN 的 IP 地址分开处理,我必须使用该 VPN IP 地址通过 VPN 路由。这样做的唯一好处是可以配置防火墙,以便文件共享流量只能来自该 IP 地址。

该设置存在两个问题:

  1. 以“my.server.com”为目标的流量不会自动通过 VPN 路由,这既不安全又容易让人困惑,因为 VPN 处于活动状态。这很不直观。
  2. Windows 资源管理器在使用本地子网地址时往往会让驱动器连接超时,\\192.168.1.101\sharedfolder当我再次尝试访问驱动器时,资源管理器会冻结整整 30 秒。这真的很烦人,当使用 FQDN 映射驱动器时不会出现此问题 \\my.server.com\sharedfolder,但此时它不会通过 VPN 进行路由!

我怎么解决这个问题?

更新:当我连接 2 个 VPN 时,我还注意到以下情况,一个具有静态 IP 192.168.1.101,另一个具有 192.168.1.102。建立两个 VPN 并将其设置为不使用 VPN 上的默认网关,并且两个 VPN 在其连接状态中都显示这两个独立的 IP 地址,Explorer 会感到困惑,无法连接到第二个 VPN,然后如果我打开一个新窗口并尝试转到第二个地址,它似乎将其等同于第一个地址,从那时起,两个地址(101 和 102)都通过第一个 VPN 访问一台服务器上的同一个文件夹。这毫无意义。

答案1

我自己解决了这个问题。

为了基于 FQDN 进行路由,可能需要在客户端上运行 DNS 服务器,以便能够检测 VPN 在该 FQDN 的 WAN 地址上何时处于活动状态。当它检测到活动的 VPN 连接时,它可以将 FQDN 解析为 VPN 隧道地址,以便应用程序(Web 浏览器等)将接收 VPN 隧道地址而不是服务器的 WAN 地址。由于这会给显示哪些 IP 地址有效的 SSL 证书带来问题,因此确实需要一个能够自动透明地通过 VPN 隧道传输来自应用程序的数据的 VPN 感知网络驱动程序。这是可以做到的,但我不知道是否存在这样的智能网络驱动程序。根据对错误答案的这个回复,您基于 FQDN 的 CAN 路由正如我所料,采用适当的配置:

至于在 Windows 7 客户端中将重复的服务器 IPv4 地址分配给不同 VPN 服务器的问题,这似乎是设计使然。在 Windows Server 2008/2012 路由和远程访问服务 (RRAS) 中,服务器使用 IPv4 路由器,可以将其配置为使用静态地址池,如下所示。此静态池将确定客户端上的服务器 IPv4 地址。在这里,我将第二台服务器设置为使用 192.168.2.0/24 作为其子网,因此它将在 Windows 7 客户端上接收服务器 IP 192.168.2.1。

RRAS IP 路由器

在计算机管理下的用户属性的“拨入”选项卡中,每个 VPN 服务器上的用户帐户都分配了一个静态 IP 地址。这将成为 VPN 上的客户端 IPv4 地址。

在此处输入图片描述

最后,为了确保文件共享流量必须仅来自服务器的 VPN 子网,防火墙中适当的协议/端口可以将其远程 IP 限制在指定的子网内:

在此处输入图片描述

现在,在客户端上,我可以通过此 VPN 连接到 Internet 上的文件共享,这完全不需要第三方软件。我只需将网络驱动器映射到每个服务器的 VPN 地址(例如\\192.168.1.1\sharedfolder\\192.168.2.1\sharedfolder\)。

不幸的是,我们不能使用 FQDN,\\my.server.com\sharedfolder\因为 Windows 不够智能,无法意识到连接到该 IP 地址的 VPN 意味着所有端口上到该地址的所有流量。除了加密的 VPN 数据包本身应该通过 VPN IP 进行路由。无法使用 FQDN 作为文件共享路径的一个副作用是,Windows 可能无法保持连接活动,并会假设它可以作为本地地址快速重新建立,而实际上它会在一分钟后空闲,然后需要 30 秒才能重新建立与共享文件夹的连接。 可以通过在注册表中设置更高的空闲超时来解决此问题。网络共享的默认空闲超时默认为 600 秒(10 分钟)。为了使连接保持更长时间,请将名为“KeepConn”的 DWORD 注册表值添加到注册表项“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters”,并为其指定一个更高的值(以秒为单位),例如 3600,即一小时。根据链接:

如果您的应用程序在服务器上关闭和打开通用命名约定 (UNC) 文件的频率低于每 10 分钟一次,请增加此项的值。这可减少重新连接到服务器的次数。


更新:我忘了说,虽然使用纯内置的 Windows 7 和 Windows Server 2012 功能通过 VPN 进行文件共享,但对于 Windows Server 2008,由于某些错误/功能,SMB 端口上的流量似乎在默认网络适配器上被阻止,而不受防火墙的影响,因此需要额外执行一个步骤。您必须安装 Microsoft 环回适配器,除了允许 SMB 流量外,它将与默认接口具有相同的功能,因此一旦安装完成,它应该看起来像这样。然后,您连接到 192.168.1.2(即环回适配器地址),而不是连接到 192.168.1.1(服务器的 VPN 地址)上的共享:

环回适配器解决方法

关于如何安装环回适配器的说明可以在这里找到:http://blogs.msdn.com/b/virtual_pc_guy/archive/2005/10/04/477195.aspx

相关内容