起動時に resolv.conf は空ですが、最終的には設定されます。なぜでしょうか?

起動時に resolv.conf は空ですが、最終的には設定されます。なぜでしょうか?

VPC 上の Amazon EC2 で実行されている 17.10 インスタンスがいくつかあります。サーバーを新しく再起動すると (コールド ブートで発生するかどうかは不明で、テストしていません)、ファイルは/etc/resolv.conf空として表示されます。

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

名前解決は予想どおりに失敗します。たとえば、内部 DNS 名を介してプライベート サブネット上の静的 IP を持つサーバーに接続する場合などです。

ssh: Could not resolve hostname example: Temporary failure in name resolution

ここでしばらく待つと、突然、適切な値が に表示されます/etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53
search subdomain.example.com

コマンドsystemd-resolve --statusは同じ結果を報告します。/etc/resolv.conf手動で強制的に更新した場合もファイルは適切に設定されdhclient、これらの値は EC2 DHCP サーバーから取得されていることがわかります。

そこで質問です。起動直後にこの現象が発生しないようにする設定のどの部分が欠けているのでしょうか?

これらの値を のように直接追加すると/etc/resolvconf/resolv.conf.d/base機能しますが、そうすると DHCP 経由で到着するはずのものをハードコーディングすることになります。 も調べましたが/etc/netplan(ifupdownは使用されていません)、これはクラウドの初期化に由来するようです。 で何か見落としているのではないかと思います/etc/cloud/cloud.cfg

関連情報