web-dev-qa-db-ja.com

netplan:netplan yamlのネームサーバー。どんな効果?

Yaml設定ファイルのnameservers/addressesフィールドの効果は何ですか?

私が試したアプリケーションはすべて/etc/resolv.confネームサーバーを使用します。これは、resolvconfを停止しても発生します。

これはsystemdをリゾルバーとして使用しています。生成または適用時にエラーはありません。

解像度

回答してくれたすべての人に感謝します。 netplan config yamlは、これを行った後にネームサーバーを構成します。

  1. Resolvconfをパージします。
  2. LAN DNSをフォワーダーとして/etc/bind/named.conf.optionsに配置します。
  3. /etc/resolv.confリンクを静的ファイルに置き換えます

    検索ネームサーバー127.0.0.53

そしてそれは動作します。 netplan config yamlに検索フィールドがありますが、resolv.confに検索を含める必要があります。別の日のパズル。

3
Stephen Boston

注:これは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
4
Thomas Ward

免責事項:これは十分に教育された推測であり、正式な文書化された回答ではありません。

私が試したアプリケーションはすべて/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情報が見つからない場合にどこを調べるかをシステムに伝えると信じています。

2
chili555