web-dev-qa-db-ja.com

Mac OS XでDNSサーバーをターミナル(またはスクリプト)から変更する

Mac OS XのターミナルからDNSサーバーを変更するにはどうすればよいですか? [DNSがVPNで正しく機能していないため、これが必要です。メイン接続にDNSを使用していることもあれば、VPNに指定されているDNSを使用していることもあります。

30
Dan Rosenstark

ターミナルからscutilをインタラクティブに使用できます。 Sudo scutilを実行して次のコマンドを実行し、必要に応じてDNSサーバーを入れ替えます。

> open 
> d.init 
> d.add ServerAddresses * 8.8.8.8 9.9.9.9 
> set State:/ Network/Service/PRIMARY_SERVICE_ID/DNS 
 >やめる

8.8.8.89.9.9.9を使用する代わりに、DNSサーバーを使用します。

唯一の問題は、これが再起動後も持続しないことです。永続的な変更が必要な場合は、 ncutil が必要です。新しいバージョンのOS Xで/etc/resolv.confを編集するだけでは不十分な理由は、configdがデータベースを使用して、他のアプリケーションが読み取った現在の設定の情報を格納するためです。特定のアプリケーションは引き続き読み取ります/etc/resolv.conf(ホストなど)。ただし、すべてのアプリケーションに当てはまるわけではありません。

15
John T

networksetupを使用できます。

Sudo networksetup -setdnsservers <networkservice> DNS1, DNS2, DNS3

例(空港に接続している場合はGoogleのDNSサーバーを使用)

Sudo networksetup -setdnsservers AirPort 8.8.8.8 8.8.4.4

networksetup -listallnetworkservicesを実行すると、ネットワークサービスの名前を確認できます。おそらく「Wi-Fi」でしょう。

これは、[システム環境設定]の[ネットワーク設定]ペインで全体を編集する場合と同じなので、再起動しても保持されます。

Snow LeopardでDNSの問題が発生している可能性があります。これは、DNSサーバーへの注文の変更が照会されたときに発生します(質問 84144 )を参照)

47
Chealion

Chealionの投稿に返信するのに十分なポイントがありませんが、それに追加するために、インターフェースのリストから始めます。

networksetup -listallnetworkservices

変更したいインターフェースを取得したら、以下を実行できます(私はWi-Fiを使用していますが、他のインターフェースも実行できます)

Sudo networksetup -setdnsservers Wi-Fi empty
Sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4
Sudo killall -HUP mDNSResponder

上記の最初の行では、DNS設定を空にしてから、使用したいDNSサーバーを続け、DNSキャッシュを細かくクリアします

DNSの変更を確認するには、これを前後または直後に行うことができます。

scutil --dns | grep 'nameserver\[[0-9]*\]'
15
David Kittell

resolv.confはOSXでは動作しなくなりました。次のように、そのファイルの先頭に通知があります。

#
# macOS Notice
#
# This file is not consulted for DNS hostname resolution, address
# resolution, or the DNS query routing mechanism used by most
# processes on this system.
#
# To view the DNS configuration used by this system, use:
#   scutil --dns
#
# SEE ALSO
#   dns-sd(1), scutil(8)
#
# This file is automatically generated.
#

また、networksetup -listallnetworkservicesは、すべてのVPNインターフェースをリストするわけではありません。

Scutilを使用して適切なインターフェースをターゲットにする1つの方法を次に示します。1.ファイルを作成するcommands.txtインタラクティブscutilツールのコマンドを使用します。例えば私の場合のパルスセキュアインターフェースの内容:

get State:/Network/Service/net.pulsesecure.Pulse.nc.main/DNS
d.add ServerAddresses * 8.8.8.8 9.9.9.9
set State:/Network/Service/net.pulsesecure.Pulse.nc.main/DNS
  1. パイプされたコマンドでscutilを実行します(setにはSudoが必要です)。
Sudo scutil < commands.txt
1
kikas

あなたは/etc/resolv.confを編集することでそれを行うことができるはずです(resolv.confは再起動後にリセットされることに注意してください)、それが役立つことを願っています- http://developer.Apple.com/mac /library/documentation/Darwin/Reference/ManPages/man5/resolver.5.html

0
zpon