我正在尝试了解 DNS 路由在有/没有 VPN 的情况下如何工作。我有以下界面。
Wireless LAN adapter Wi-Fi:
DNS Servers . . . . . . . . . . . : 192.168.40.1
nslookup 对此有效:
nslookup google.com 192.168.40.1
Address: 192.168.40.1
Non-authoritative answer:
Name: google.com
如果我正在运行 VPN,我会得到另一个接口,并且 DNS 查询默认会被路由到该接口。
Unknown adapter Mullvad:
DNS Servers . . . . . . . . . . . : 10.8.0.1
但是,如果我现在尝试在另一个接口上查询 DNS,则它不会通过。
nslookup google.com 192.168.40.1
DNS request timed out.
但我可以毫无问题地向本地服务器发出请求。
curl 192.168.40.22:8080
OK
这是怎么回事?ip 流量通过但 DNS 被阻止?我知道 VPN 通常会设置路由表规则以将流量引导至其网关。但这对于 ip 来说正确吗?DNS 不应该受其影响。这背后的底层机制是什么?有没有办法可以强制在另一个接口上进行 DNS 查询?
这是在 Windows 上,但我猜测它在 Linux 上也能以类似的方式工作。
答案1
简化的答案:
根据配置方式,VPN 客户端会强制所有流量通过虚拟接口,IE, 它会阻止本地 LAN 上的流量。由于没有本地流量,因此当隧道处于活动状态时,客户端可以使用不同的名称服务器。
答案2
我想念ipconfig无论如何,在两种情况下,听起来没有 VPN 您就从本地 DCHPd 获得了 IP 和默认名称服务器,因此您的机器可以向本地名称服务器请求 DSN 解析。
连接到 VPN 后,听起来您从 VPN 服务器获得了另一个 IP,并将默认路由设置为 VPN 接口,这意味着所有流量都经过 VPN,可能无法到达您本地的名称服务器。
为了解决这个问题,您可以使用可从两个网络访问的全局 DNS 服务器(如 8.8.8.8 或 1.1.1.1)。