我使用 NetworkManager 连接到远程 VPN,并在 Xubuntu 20.4 下插入 openconnect (Cisco Anyconnect)。除了 VPN 内部服务的 DNS 解析之外,一切正常。
远程 VPN 网关转发其私有 DNS 服务器,如下面的系统日志输出所示(略有缩短和匿名):
... NetworkManager[701]: <info> [..] vpn-connection[...]: VPN connection: (IP Config Get) reply received.
... NetworkManager[701]: <info> [..] vpn-connection[...]: VPN connection: (IP4 Config Get) reply received
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: VPN Gateway: 195.xxx.xxx.xxx
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: Tunnel Device: "vpn0"
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: IPv4 configuration:
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: Internal Address: 10.57.0.188
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: Internal Prefix: 8
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: Internal Point-to-Point Address: 10.57.0.188
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: Static Route: 10.0.0.0/8 Next Hop: 0.0.0.0
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: Internal DNS: 10.240.4.62
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: Internal DNS: 10.240.4.60
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: DNS Domain: 'xxx.yyy.global'
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: No IPv6 configuration
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: Login Banner:
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: -----------------------------------------
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: xxxx
... NetworkManager[701]: <info> [..] vpn-connection[...]: Data: -----------------------------------------
... NetworkManager[701]: <info> [..] vpn-connection[...]: VPN plugin: state changed: started (4)
... NetworkManager[701]: <info> [..] vpn-connection[...]: VPN connection: (IP Config Get) complete
NetworkManager 正确地将 DNS 服务器地址和 DNS 域转发到 systemd-resolved:
% systemd-resolve --status
Global
[...]
Link 3 (vpn0)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 10.240.4.62
DNS Servers: 10.240.4.62
10.240.4.60
DNS Domain: xxx.yyy.global
Link 2 (ens33)
[...]
不过,如果我想 ping 一个应该可以在 VPN 中解析的 URL,则它不起作用:
% ping foo.bar.com
ping: foo.bar.com: Name or service not known
用Wireshark检查情况发现DNS查询有问题。我不知道为什么,但 systemd-resolved 不查询foo.bar.com
,而是查询foo.bar.com.xxx.yyy.global
,后者显然来自“DNS 域”(不确定它实际上是什么)。
在另一个系统(同事的)上,DNS 查询工作正常(未附加 DNS 域)。一个显着的区别是(我认为) 他用resolvconf
而不是systemd-resolved
.我认为是这样,因为/etc/resolv.conf
有一个符号链接到/run/resolvconf/resolv.conf
, 而不是/run/systemd/resolve/stub-resolv.con
.
有人可以向我解释一下 systemd-resolved 发生了什么,或者我如何配置它以进行正确的 DNS 查询?
答案1
%ping foo.bar.com
这不是一个完全合格的人类可读形式的域名。在人类可读的形式中,完全限定的域名以句号结尾。域名系统本身始终(实际上)适用于完全限定的域名。因此,链接到应用程序的 DNS 客户端库会将您提供给应用程序的名称转换为完全限定的名称,然后再在 DNS 查找中使用它们。他们以多种方式执行此操作,这里无法一一介绍,显然,在您的特定系统上采用的一种方法是添加已配置的“域”后缀。
%ping foo.bar.com。
这是将完全限定域名传递给ping
程序的方法。
进一步阅读
- 乔纳森·德博因·波拉德 (2017)。什么是 DNS 名称资格。常见答案。
- 乔纳森·德博因·波拉德 (2003)。为什么结果
nslookup
与操作不同ping
。常见答案。 - 乔纳森·德博因·波拉德 (2004)。DNS诊断工具。常见答案。
- https://unix.stackexchange.com/a/408910/5132
- https://unix.stackexchange.com/a/586737/5132