Yaml設定ファイルのnameservers/addressesフィールドの効果は何ですか?
私が試したアプリケーションはすべて/etc/resolv.confネームサーバーを使用します。これは、resolvconfを停止しても発生します。
これはsystemdをリゾルバーとして使用しています。生成または適用時にエラーはありません。
解像度
回答してくれたすべての人に感謝します。 netplan config yamlは、これを行った後にネームサーバーを構成します。
/etc/resolv.confリンクを静的ファイルに置き換えます
検索ネームサーバー127.0.0.53
そしてそれは動作します。 netplan config yamlに検索フィールドがありますが、resolv.confに検索を含める必要があります。別の日のパズル。
注:これは
chili555
からの情報と重複する場合がありますが、彼らとの議論では、前述の個人は以前にこの問題/質問と一緒に作業したことがあるため、「信頼できる」回答を投稿することを提案しました。
ご使用の環境で目撃された動作は、systemd-resolved
が、18.04より前のdnsmasq
と同等でした。 netplan
更新は、systemd-resolved
が検索に使用するネームサーバーに影響します。これについては、回答の最後のセクションで詳しく説明します。
しかし、最初に、奇妙なことに、この動作に関するいくつかの歴史、およびNetwork Managerとdnsmasq
を使用する「古い」Ubuntuバージョンとの違いについて説明します。 (18.04関連のものだけが必要な場合は、この回答の次のセクションをスキップしてください)
18.04より前:dnsmasq
ローカルキャッシングリゾルバとして
18.04より前は、GUI Ubuntuを使用するたびに、Network Managerと一緒にdnsmasq
がインストールされていました。 Network Managerとdnsmasq
の統合により、クエリの送信先の 'next hop'サーバー(上流DNSサーバー)のdnsmasq
リストが更新されます。
したがって、google.com
のDNSクエリは、解決を要求しているアプリケーションからdnsmasq
に渡され、dnsmasq
がIPアドレスを知らないか、キャッシュされたエントリの有効期限が切れている場合、次に、DNS要求をアップストリームDNSサーバーに渡します(この例では、8.8.8.8
または8.8.4.4
)。次に、Network Managerまたはdnsmasq
configをチェックして、「上流」のDNSサーバーがどこにあるかを確認する必要があります。
これは、デスクトップISOからインストールされたグラフィカルなUbuntuの典型的な動作です。
逆に、サーバーISOからのデフォルトインストールは、resolvconf
パッケージを介した従来の「update /etc/resolv.conf
」方法に従い、dnsmasq
を介して通信する代わりに/etc/resolv.conf
を直接利用しました。
18.04:netplan
、およびsystemd-resolved
18.04では、デフォルトのDNSシステムはsystemd-resolved
です。これは、現在のデスクトップおよびサーバーISOインストールの両方でこれを行うことを除いて、古いdnsmasq
と同じように動作します。また、ネットワークマネージャー(wifiなどを管理するためのGUI環境で使用)およびNetplan(イーサネットをより適切に処理する)と統合することもできます。
systemd-resolved
は、netplan
(サーバーまたはカスタムデスクトップ)またはNetwork Manager(デフォルトのデスクトップイメージ)からクエリを送信するDNSサーバーのリスト(静的に構成またはDHCP経由で構成)から渡されます。したがって、上記の同じ例を使用すると、google.com
へのDNSクエリはsystemd-resolved
のスタブリゾルバーを通過し、キャッシュされたルックアップ値を返すか、上流のDNSサーバーに渡します。
これは、dnsmasq
のデフォルトの動作をエミュレートしますが、「localhost」やその他のローカル関連アドレスを照会する方法のルックアップ処理を追加します。
NetPlanまたはNetwork Managerを使用すると、次のコマンドでsystemd-resolved
を介してアップストリームDNSサーバーのリストを取得できます。
systemd-resolve --status
大量の出力が得られます。関連セクションは次のようになります(chili555
の便宜のための回答から引用):
DNS Servers: 8.8.8.8
8.8.4.4
2600:1700:5aa0:830::1
免責事項:これは十分に教育された推測であり、正式な文書化された回答ではありません。
私が試したアプリケーションはすべて/etc/resolv.confネームサーバーを使用します。
私の18.04システムでは、/ etc/resolv.confのコメントされていない、つまり実際に操作可能なセクションには、
nameserver 127.0.0.53
つまり、DNS情報をキャッシュするシステムであるdnsmasqの使用の症状だと思います。それは、外部ネームサーバーに問い合わせる前に、まずローカルキャッシュを調べることを意味します。
ただし、ローカルキャッシュには、これまでにアクセスしたことのないウェブサイトに関するネームサーバー情報は含まれません。その場合、システムは宣言された外部DNSネームサーバーを使用します。これらは、古いシステムの/ etc/network/interfacesで宣言できます。新しいシステムの/etc/netplan/*.yamlで、またはほぼすべてのデスクトップインストールで、Network Managerで。
実際、/ etc/resolv.confは、外部ネームサーバーを見つける方法を示しています。
「systemd-resolve --status」を実行して、現在使用中のアップリンクDNSサーバーに関する詳細を表示します。
私のシステムでは、レポートは次のように述べています。
DNS Servers: 8.8.8.8
8.8.4.4
2600:1700:5aa0:830::1
要するに、DNSネームサーバーはnetplanで宣言されており、ローカルキャッシュにDNS情報が見つからない場合にどこを調べるかをシステムに伝えると信じています。