dullwhaleのメモ帳

何度も同じことを調べなくてよいように...

macOSのmDNSResponder奮闘ログ

くそ紛らわしいことに、macOSのmDNSResponderは2つある。 - デーモンプログラム - 停止不可能なシステムコンポーネント

以下ログ

ただし、macOSの場合、mDNSResponderはDNS解決を行う際にローカルDNSキャッシュを利用することがあります。

ここで、ローカルDNSキャッシュはmDNSResponder自身を指すか?そうでないならばバイナリ名を示せ。 ChatGPT

ここでのローカルDNSキャッシュは、mDNSResponderが利用するものではなく、macOSが内部的に維持するDNSキャッシュを指します。mDNSResponder自身はDNS解決のためにこのキャッシュを利用することがありますが、このキャッシュ自体はmDNSResponder自身ではありません。具体的には、macOSにおいてDNSキャッシュを維持するためには、mDNSResponder以外にも、DNSメッセージをキャッシュするmDNSResponderの上位に位置するシステムコンポーネントが存在します。 User そのシステムコンポーネントの名前は? ChatGPT

そのシステムコンポーネントは「mDNSResponder」と呼ばれます。 User プログラムとしてのmDNSResponderと、システムコンポーネントとしてのmDNSResponderが存在する。正か? ChatGPT

はい、正しいです。macOSにはmDNSResponderというプログラムがあり、同時にmDNSResponderというシステムコンポーネントも存在します。mDNSResponderプログラムは名前解決のためのDNSサーバとして動作し、mDNSResponderシステムコンポーネントDNSクエリのキャッシュやレコードの更新を管理します。 User launchctlで停止可能なmDNSResponderはシステムコンポーネントではなくプログラムである。正か? ChatGPT

正しいです。launchctlで停止可能なのは、プログラムとして実行されているmDNSResponderです。一方、システムコンポーネントとしてのmDNSResponderは、プログラムとは異なり、システムの一部として常に実行され、停止することができません。

つまり、ローカルのDNSキャッシュにエントリが無い状態でプログラムのmDNSResponderを停止するとgoogle.comの名前解決できなくなる。正か? ChatGPT

正しいです。ローカルDNSキャッシュにエントリがない場合、名前解決を行うにはプログラムのmDNSResponderが必要です。そのため、mDNSResponderを停止すると名前解決ができなくなります。