我将把问题分解成几个部分,以便于理解。
问题
我为一个客户工作,该客户要求我们使用 Ivanti VPN 来访问他们的服务器和内部工具网站,例如 Gitlab、Nexus 等。每当我们使用 Ivanti 软件连接到 VPN 时,我们就无法访问更广泛的互联网。这意味着为了能够正常工作,我们必须设置具有 VPN 访问权限的 VM,并利用主机进行所有非内部网相关活动。我希望能够克服这一限制。
收集信息
首先我要说的是,网络不是我的强项。
由于我们公司的笔记本电脑运行的是 Windows 10/11,所以我首先检查的是网络适配器,特别是由 Ivanti 创建的适配器。我注意到它将适配器 IP 设置为10.XX.XX.XX
子网掩码为255.255.255.255
,以及两个不同的10.X
DNS 服务器。然后,我通过运行、和(在 VPN 处于活动状态和不活动状态的情况下
)执行了一些故障排除。我发现了以下内容:ipconfig /all
route print
nslookup
- 启动 VPN 使 Ivanti 网络适配器上定义的 DNS 成为默认 DNS
- 它在路由表中添加了 3-4 个条目
尝试解决方法
我首先想到的是使用route ADD
、route DELETE
和来修改路由表route CHANGE
。例如,通过找出 的 IPexample.com
并添加一条特定规则,以便到该 IP 的流量通过我的 WiFi 接口,我能够成功 ping 它,即使开启了 VPN。但问题仍然存在 - 我无法访问更广泛的互联网,因为无论如何我的浏览器都必须通过 DNS。然后我遇到了添加DnsClientNrptRule这是一个 powershell 命令,它使我能够强制命名空间通过特定的名称服务器。这确实有效,我能够将一些网站列入白名单并通过我自己的 DNS 访问它们,但事实上,我想要做的与此相反。最好拥有完全的互联网访问权限,并能够简单地强制内部网站通过客户端的 DNS。我还注意到,由于某种原因,有些网站无法访问。我认为这与使用 IPv6 访问大多数网站有关,而 IPv4 上的网站则通过错误的 DNS 进行路由。
我写这篇文章是想看看是否有人知道我所尝试做的事情是否有可能实现。如果有任何其他想法,我将不胜感激。
谢谢。
答案1
基本上,您已经拥有解决方案的所有元素。您只需反过来思考:默认是 Internet,特定是 VPN 网关。
route add 0.0.0.0 mask 0.0.0.0 gateway <Wlan Default Gateway> interface <Wlan Address>
route add 10.0.0.0 mask 255.0.0.0 gateway <gateway of the VPN> interface <VPN address>
DNS 也是一样:使用 8.8.8.8 作为默认服务器,并使用 添加特定的 10.xxx 服务器Add-DnsClientNrptRule
。
请注意,有些公司有这样的政策:如果您连接到他们的网络,则必须使用他们的代理。请确保您没有违反客户的政策!