总结:

总结:

我使用的是 Windows 10 和 11。我使用 Pritunl/OpenVPN 客户端连接到企业 LAN。

某个时候,VPN 停止工作。它无法连接。也许我的 ISP 阻止了它,也许我的 IP 被 VPN 服务器列入了黑名单,也许我的路由器出现故障。我无法修复它,我需要一个解决方法。

我订阅了 Mullvad VPN,并尝试连接 Mullvad/WireGuard 客户端,然后连接 Pritunl/OpenVPN 客户端。成功了!两个客户端都成功连接。

问题是我无法访问公司局域网内的任何资源。据 称tracert,这似乎是因为 Mullvad 将所有流量都路由到自身。

我该如何让它工作,最好不要弄乱路由表?

答案1

总结:

  1. 如果您还没有,请订阅 Mullvad VPN,或者设置自托管的 WireGuard 服务器。
  2. 使用香草WireGuard 客户端
  3. 出口来自 Mullvad 的服务器配置。
  4. 更新AllowedIPs属性以排除 LAN IP 范围。
  5. 将您的公司内联网 DNS 服务器添加到DNS属性中。
  6. 更新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 客户端不允许配置AllowedIPSDNS。他们的技术支持建议使用原始 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.x172.16.x.x192.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。

成功!

相关内容