进一步阅读

进一步阅读

我使用 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 域”(不确定它实际上是什么)。

Wireshark 截图

在另一个系统(同事的)上,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程序的方法。

进一步阅读

相关内容