プログラムは、有効なresolv.confなしでFQDNをどのように確認しますか?

プログラムは、有効なresolv.confなしでFQDNをどのように確認しますか?

私は組み込みLinuxシステムで壊れたシンボリックリンクを見つけました/etc/resov.conf。特にそれは壊れたシンボリックリンクでした。私が説明できないのは、なぜそれらのいくつか(多く)が機能した理由です。

コードは Alpine Linux chroot 内で実行されます。 Debianの「ホスト」には最新の正しいresolv.confがありますが、chroot環境内のリンクが壊れています。私も見つけました。Alpineはデフォルトでnsswitch.confには付属していません。。すべてのホストは同じAlpine Linux chroot環境を持ち、ホストバージョンのDebianとネットワーク(物理的な場所)のみが異なります。

ホスト環境とchroot環境は/run /sys /proc /dev共有のみです。

ただし、一部のデバイスでは永続 FQDN を確認できます。もともとこれは共有DNSキャッシュに関連している可能性があると思いましたが、除外されました。 chrootの内部から:

$ ping unix.stackexchange.com
PING unix.stackexchange.com (151.101.193.69): 56 data bytes
64 bytes from 151.101.193.69: seq=0 ttl=58 time=3.962 ms

これらの組み込みデバイスは、以前にunix.stackexchange.comを確認するように求められたことがないため、DNSキャッシュにはありません。

現在、「動作する」デバイスと「壊れた」デバイスの違いが、そのデバイスがあるネットワークまたはリリースバージョンの微妙な違いかどうかを調査中です。詳細がわかったら、質問を更新します。

誰でも理由を説明できますか?一部次のうち、有効なresolv.confなしでFQDNを確認できるデバイスは何ですか?


chrootに関する追加情報

  • それらはすべて同じchrootイメージを実行します。
  • chroot 環境は「インベントリ」です。アルパインミニルートファイルシステムpython3を追加するだけですapk add
  • nsswitch.conf(前述)chrootファイルシステムは1つもなく、1つしかありません。非常に壊れたリンク/etc/resolv.conf

ホストに関する追加の詳細:

ベストアンサー1

/etc/resolve.confホストを検証するために必要なコンポーネントではありません。信頼できるインターフェイスは、アプリケーションがホスト名を解決するために呼び出すgetaddrinfo(または廃止されたgethostbyname)ライブラリ関数です。システム構成によっては、resolv.confカウンセリングが行われる場合もありません。

たとえば、DNSクエリがルーティングされている場合systemd-resolved(そのように設定されている)、これは必要ありません。順番にどのように構成するかによって/etc/nsswitch.conf/etc/resolv.confsystemd-resolvedできるを使用することresolv.confができます。維持する /run/systemd/resolve/resolv.confからシンボリックリンクを作成できます/etc/resolv.conf。より体系的分析マンページ。

おすすめ記事