VPN 地址的 DNS 异常行为

VPN 地址的 DNS 异常行为

当我使用 barracudavpn 连接到公司 VPN 时,出现了这种奇怪的行为(我的操作系统是 Fedora 36)。连接后网络配置似乎正常:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.16.40.1      0.0.0.0         UG    0      0        0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG    600    0        0 wlp0s20f3
10.16.40.0      0.0.0.0         255.255.252.0   U     0      0        0 tun0
88.157.223.5    192.168.1.1     255.255.255.255 UGH   0      0        0 wlp0s20f3
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.22.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-533d90405936
192.168.1.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp0s20f3
192.168.1.1     0.0.0.0         255.255.255.255 UH    0      0        0 wlp0s20f3

$ cat /etc/resolv.conf
nameserver 10.0.1.3
nameserver 10.40.0.6
nameserver 10.0.1.2
nameserver 10.40.0.7
nameserver  127.0.0.53
search mycompany.xx home

如果我向 DNS 查询某些服务,它会按预期工作:

$ nslookup bitbucket.mycompany.xx
Server:     10.0.1.3
Address:    10.0.1.3#53

bitbucket.mycompany.xx  canonical name = app-bitbucket.mycompany.xx.
Name:   app-bitbucket.mycompany.xx
Address: 10.0.1.246

但任何其他命令都会失败:

$ ping bitbucket.mycompany.xx
ping: bitbucket.mycompany.xx: Name or service not known

我在这里遗漏了什么?

答案1

通过@PatrickMevzek 和@user1686 的见解,我设法了解了这个问题,所以我将发布这个答案来帮助任何遇到同样问题的人。

barracudavpn连接后,程序会更改以/etc/resolv.conf添加 VPN 名称服务器,但是默认情况下,此文件被 systemd.resolved 忽略来自 systemd-resolved.service(8) 手册页:

为了提高兼容性,需要读取 /etc/resolv.conf 来发现已配置的系统 DNS 服务器,但前提是它不是符号链接到 /run/systemd/resolve/stub-resolv.conf、/usr/lib/systemd/resolv.conf 或 /run/systemd/resolve/resolv.conf。

默认的 Fedora 36 安装有以下内容:

$ ls -l /etc/resolv.conf
lrwxrwxrwx. 1 root root 39 jun 27 02:54 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

因此,只要删除此链接(该文件将由 systemd-resolved 重新创建),一切就会按预期工作。

相关内容