NetworkManagerを使用してリモートVPNに接続し、Xubuntu 20.4でopenconnect(Cisco Anyconnect)を接続します。 VPN内部サービスのDNS解決を除いて、すべてがうまく機能します。
リモートVPNゲートウェイは、次のsyslog出力に示すようにプライベート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)
[...]
ただし、VPNで解決する必要があるURLをpingする場合は機能しません。
% ping foo.bar.com
ping: foo.bar.com: Name or service not known
Wiresharkを使用して状況を確認し、DNSクエリに問題があるかどうかを確認してください。理由はわかりませんが、systemd-resolvedはqueryではなく、「DNSドメイン」(実際にはわからない)からのfoo.bar.com
クエリです。foo.bar.com.xxx.yyy.global
他のシステム(同僚)では、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ルックアップに使用する前に完全修飾名に変換します。ここで扱うには、あまりにも多くの方法でこれを行います。特定のシステムでは、1つの方法は設定された「ドメイン」サフィックスを追加することです。
%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