我使用的是 Windows 10 和 11。我使用 Pritunl/OpenVPN 客户端连接到企业 LAN。
某个时候,VPN 停止工作。它无法连接。也许我的 ISP 阻止了它,也许我的 IP 被 VPN 服务器列入了黑名单,也许我的路由器出现故障。我无法修复它,我需要一个解决方法。
我订阅了 Mullvad VPN,并尝试连接 Mullvad/WireGuard 客户端,然后连接 Pritunl/OpenVPN 客户端。成功了!两个客户端都成功连接。
问题是我无法访问公司局域网内的任何资源。据 称tracert
,这似乎是因为 Mullvad 将所有流量都路由到自身。
我该如何让它工作,最好不要弄乱路由表?
答案1
总结:
- 如果您还没有,请订阅 Mullvad VPN,或者设置自托管的 WireGuard 服务器。
- 使用香草WireGuard 客户端。
- 出口来自 Mullvad 的服务器配置。
- 更新
AllowedIPs
属性以排除 LAN IP 范围。 - 将您的公司内联网 DNS 服务器添加到
DNS
属性中。 - 更新
InterfaceMetric
您的连接。
0. 如果还没有,请订阅 Mullvad VPN,或者设置自托管的 WireGuard 服务器
Mullvad VPN:https://mullvad.net/en
设置自托管的 WireGuard VPN 服务器远远超出了本指南的范围。但我能够使用本教程来完成此操作:
https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-ubuntu-22-04
1. 使用原始 WireGuard 客户端
Mullvad VPN 客户端不允许配置AllowedIPS
或DNS
。他们的技术支持建议使用原始 WireGuard 客户端,但他们拒绝协助配置它。别担心,我们会帮你搞定!
在此处下载原始 WireGuard 客户端:
https://www.wireguard.com/install/
2. 从 Mullvad 导出服务器配置并将其导入到 WireGuard 客户端
请访问此链接获取说明:
https://mullvad.net/en/help/wireguard-app-windows/
登录后,可以在此处导出配置:
https://mullvad.net/en/account/#/wireguard-config/?platform=windows
请注意,您不必按照手册的建议导出所有服务器。首先只需选择一个服务器,即 Mullvad 客户端默认选择的服务器(希望它是您认为速度最快的服务器之一)。
将配置导入到WireGuard客户端。
3. 更新AllowedIPs
属性以排除 LAN IP 范围。
这是最棘手的部分。
配置AllowedIPs
属性名称具有误导性。它实际上的作用是定义哪些 IP 范围应通过 WireGuard VPN 连接进行路由。未涵盖的范围将直接在 VPN 之外工作。
问题是您不想允许范围,您想排除范围!具体来说,您需要排除所有 LAN 子网,例如10.x.x.x
、172.16.x.x
和192.168.x.x
。
为了做到这一点,您需要指定这些 LAN 范围之间和周围的所有范围,这绝非易事。
幸运的是,有在线计算器可以帮你做到这一点。我在 Google 上搜索到了这个: https://www.procustodibus.com/blog/2021/03/wireguard-allowedips-calculator/
我输入以下范围:
- 允许的 IP:
0.0.0.0/0
- 禁止的 IP:
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
然后按Calculate。结果是:
AllowedIPs = 0.0.0.0/5, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3
这是所有 IP 的范围除了LAN 子网。
在 WireGuard 应用程序中编辑您的服务器(“隧道”)并将此行放入该[Peer]
部分。
请注意,您可以使用计算器从 VPN 中排除更多 IP 地址以便直接访问它们。
4. 将您的企业内联网 DNS 服务器添加到DNS
属性中。
您需要知道公司内部网正在使用哪个 DNS 服务器。
要通过有效的公司联系找到答案(询问您的同事?),请使用以下方法当企业 VPN 已连接且内网资源可访问时。
在 Windows 上:
nslookup <corporate.resource.local>
输出将如下所示:
❯ nslookup coroprate.resource.local
服务器:ip-10-2-0-2.eu-central-1.compute.internal
地址: 10.2.0.2非权威答案:
名称:internal-blah-blah.eu-west-3.elb.amazonaws.com
地址:10.2.3.4 > 10.3.4.5 别名:corporate.resource.local
在 POSIX 上(如果您的同事使用 MacOS 或 Linux):
dig <coroprate.resource.local>
❯ 挖掘 coroprate.resource.local
; <<>> DiG 9.16.1-Ubuntu <<>> coroprate.resource.local
;; 全局选项:+cmd
;; 得到答案:
;; ->>HEADER<<- 操作码:QUERY,状态:NOERROR,id:32760
;; 标志:qr rd ra;查询:1,答案:3,权威:0,附加:1;; OPT 伪部分:
; EDNS:版本:0,标志:; udp:4096
;; 问题部分:
; coroprate.resource.local。在;; 答案部分:
coroprate.resource.local。49 IN CNAME internal-garble-garble.eu-west-3.elb.amazonaws.com。internal
-garble-garble.eu-west-3.elb.amazonaws.com。36 IN A 10.34.9.140
internal-garble-garble.eu-west-3.elb.amazonaws.com。36 IN A 10.34.8.128;; 查询时间:50 毫秒
;; 服务器:10.2.0.2#53(10.2.0.2)
;; 时间: 星期三 4月 5日 11:53:23 MSK 2023
;; 收到的消息大小: 156
复制内联网 DNS 服务器的 IP 地址(在上面的示例中以粗体显示)并将其粘贴到 WireGuard 服务器(隧道)配置中,粘贴到部分DNS
下的属性中[Interface]
,在现有 DNS IP 地址前面加上空格分隔:
DNS = 10.2.0.2 10.64.0.1
注意:如果您使用 WSL,它将不会使用公司 DNS 服务器。请按照此 QA 来解决问题:
如何更改 WSL2 的 DNS 设置?
5. 更新InterfaceMetric
您的连接。
最后,您的企业 VPN 接口的优先级必须高于 WireGuard。要实现这一点,您需要使企业 VPN 接口InterfaceMetric
小于 WireGuard。
InterfaceMetric
您可以在 VPN 接口的 TCP/IP 堆栈的高级设置中编辑:
但我更喜欢在终端上进行此操作。
启动 PowerShell作为管理员并运行此命令:
Get-NetIPInterface | Sort-Object Interfacemetric
在输出中,找到您的公司 VPN 接口和 WireGuard 并比较它们InterfaceMetric
(显示片段):
> Get-NetIPInterface | Sort-Object Interfacemetric
ifIndex InterfaceAlias AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp ConnectionState PolicyStore
------- -------------- ------------- ------------ --------------- ---- --------------- -----------
27 VPN - VPN Client IPv4 1500 1 Enabled Disconnected ActiveStore
54 Pritunl 1 IPv6 1500 25 Enabled Disconnected ActiveStore
53 se-sto-wg-011 IPv4 1420 10 Disabled Connected ActiveStore
可能会有重复的条目,不要担心。
公司 VPN接口InterfaceMetric
的 必须低于 WireGuard 的 。
如果不是,请使用以下命令来更新InterfaceMetric
:
Set-NetIPInterface -InterfaceIndex <ifIndex> -InterfaceMetric <value>
我将公司价值设置为 3,将 WireGuard 设置为 5。