DNS と /etc/hosts 以外に、Mac 上のホスト情報はどこから取得されるのでしょうか?

DNS と /etc/hosts 以外に、Mac 上のホスト情報はどこから取得されるのでしょうか?

すべての名前と住所が変更されました。example.com は私が所有するドメインです。

% ping foo.example.com
PING foo.example.com (1.1.1.1)

1.1.1.1 は聞いたことのない IP アドレスです。他のプログラム (ssh、curl) でも同様です。

% host foo.example.com
foo.example.com has address 2.2.2.2

正しい IP アドレスは 2.2.2.2 です。

% grep foo /etc/hosts
(empty)

これは Mac の場合です。Linux では、ホスト情報のその他のソースとして /etc/nsswitch.conf を探します。Mac にも同様のものがあるでしょうか?

答え1

macOS には、VPN などのために、スコープを指定した DNS ルーティングの高度なシステムがあります。そのため、たとえば現在「仕事」のために VPN 接続を使用している場合、職場のドメイン名のクエリは職場の DNS サーバーに送信される可能性があります。

リスト全体を表示するには、次のコマンドを実行します。

scutil --dns

システムと同じように DNS をクエリするには、次を使用します。

dns-sd -G v4v6 example.com
dns-sd -q example.com 255 255

(終了するには Ctrl + C を押す必要がありますdns-sd)。

host、、digおよびコマンドnslookupは、DNS サーバーのトラブルシューティング用の古い Unix コマンドであり、独自の DNS リゾルバ コードを含み、システムのライブラリを使用しません。したがって、使用するサーバーを指定しない場合は、自動生成された から取得されます。これには、スコープ/etc/resolv.conf指定のないクエリのデフォルト サーバーのみが設定されます。ただし、 のようなツールは、システムのスコープ指定 DNS ルーティングを使用する をping呼び出すだけである可能性があります。gethostbyname(3)

編集して追加: macOS は、次のようなさまざまな手段からホスト名から IP アドレスへの解決情報を取得できることにも言及する必要があります。

  1. mDNS (Apple Bonjour / IETF ZeroConf)
  2. Open Directory (LDAP 上の Apple スキーマ)
  3. その他のLDAP
  4. アクティブディレクトリ
  5. 勝利
  6. NetBIOS ネーム サービス
  7. NIS (旧称 YellowPages/yp、Sun/Oracle ネットワーク情報サービス)

dsclこれらの設定は、コマンドライン ツール、または次の場所にあるディレクトリ ユーティリティ アプリを使用して編集できます。

/System/Library/CoreServices/[Applications]/Directory\ Utility.app

関連情報