Resolv.confをcatすると、次のメッセージが表示されます。
#
# Mac OS X Notice
#
# This file is not used by the Host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
DNSエントリを追加しようとしています。 hostsファイルを編集してDNSキャッシュをフラッシュしましたが、Host servername
を使用すると名前が解決しません。 Host
がhosts
ファイルを参照するように設定されていないのではないかと思いました。新しいエントリを解決するにはどうすればよいですか。OSXはresolv.conf
でない場合に何を使用していますか?
ホストツールは、単純に名前を解決(システム名リゾルバを使用して)を実行するのではなく、実際にクエリDNSサーバー(パケットをudp/53に送信し、場合によってはtcpに送信します)/53):ローカルのhosts
ファイルを認識も使用もしません。
オペレーティングシステムのリゾルバ(gethostbyname()などのlibc関数など)をテストする場合は、/etc/hosts
に追加した名前に対してpingを実行すると、そのファイルに入力した内容が反映されます。
また、Mac OSXでのDNSルックアップは/etc/resolv.conf
を使用していないことがすでにわかっているため、照会されるDNSサーバーを構成する正しい方法は、ネットワーク設定guiまたはnetworksetup
コマンドラインツールにあります。ソースが試行される順序を構成できるかどうかは正直わかりませんが、標準の動作は最初に/etc/hosts
を試行し、その後にDNSサーバーを試行することです。
DNSリゾルバーは、networksetup
コマンドを使用してOS Xに追加できます。
Sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4
必要に応じてネットワーク接続の名前を挿入します。これらのリゾルバーは自動的に生成されるため、resolv.confに表示されますが、resolv.confを直接編集しても、これらのリゾルバーは使用されません。リゾルバはどこかにplistに格納されていると思います。検索して報告します。
追加用に編集:DNSサーバーを格納するXML plistファイルは/Library/Preferences/SystemConfiguration/preferences.plist
。
/ private/etc/hosts内のHostファイルは、特定の名前の解決を強制するために機能するはずです(/ etcは/ private/etcへのシンボリックリンクです)。構文を確認でき、正しいファイルを編集していますか?