根据主机名(而非 IP 范围)通过 VPN 路由连接

根据主机名(而非 IP 范围)通过 VPN 路由连接

这让我非常烦恼。

我需要通过 VPN 连接到客户端网络。但我肯定不要想要通过客户端网络发送所有流量,因此此选项不可行。我基本上需要让操作系统知道所有客户端网络子域 (*.example.com) 都需要通过 VPN 连接。

我尝试了几个选择:

  1. 更改服务顺序并在顶部设置 VPN,但这与“通过 VPN 连接发送所有流量”的工作方式相同。
  2. 使用网络高级选项中的“按需 VPN”选项,但说实话,这个功能很垃圾。似乎只在 Safari 中有效(?!)并且它不会路由连接,但它基本上会触发操作系统连接到所选 VPN。

我需要它基于主机名而不是 IP 范围工作的原因很简单 - 我的客户在其网络中拥有大量服务器,我不可能记住所有 IP。它们都在一个范围内,但这对我的记忆没有帮助。

另一个选择是将 VPN 连接放在网络服务底部,取消勾选“发送所有流量...”,然后将所有已知主机名放入 hosts 文件中,但考虑到可能有数百台服务器(因此主机名和 ip 也是如此),这项工作很荒谬。如果网络上出现新服务器,我需要再次编辑 hosts 文件。西西弗斯的劳作

然而,这在 Windows 上非常简单。如果主机名无法通过默认网络接口获得,则似乎会尝试 VPN 连接,并且效果非常好。

那么,我如何在 Mac 上实现这一点呢?

我知道客户端的内部 DNS 地址是否有帮助(例如通过不同的 DNS 定向某些域)?

PS. 使用最新版本 10.6.6。PS2
. 我使用 VPN 访问内联网、版本控制服务器 (svn://)、samba 共享并通过 SSH 访问服务器。

答案1

标准做法是仅通过 VPN 路由客户端 IP 范围。通过默认网络路由其他流量。

出于安全原因,许多 VPN 连接会强制所有流量通过 VPN 以控制信息泄露。我会与您的客户讨论其他做法。在做自己的工作时,请断开与 VPN 的连接。

答案2

您所建议的就是所谓的“拆分隧道”,大多数情况下,网络管理员出于安全原因不允许这样做。根据您使用的 VPN 客户端,VPN 客户端会创建一个虚拟网络适配器,流量的默认路由将成为隧道。除了少数例外,VPN 用户无法修改此行为。

因此很遗憾,您必须断开与 VPN 的连接才能将流量引导到隧道外。

答案3

在 VPN 连接之前和之后执行 netstat -r。注意从默认网关到 VPN 链接的默认路由的变化。删除到 VPN 连接 IP 地址的默认链接,使用目标子网将客户端的子网和 VPN 子网添加到路由中,以便到客户端的流量将通过 VPN。通过网关的原始默认路由应该完好无损,常规流量应该通过您自己的网关。

答案4

如果你可以在 VPN 服务器上运行 RIP 或其他路由协议(例如Windows 服务器 2008) 你也可以在 Mac 上运行 RIP也可以,这样会自动添加服务器通告的路由。这样,您只需指定一次路由列表,即可自动为 VPN 客户端配置路由。

实际上,你可能希望 VPN 服务器只通告路由,并且不是监听任何客户端所宣传的任何内容,否则恶意或损坏的客户端可能会转移全部/部分流量​​。

相关内容