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


29

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

回答:


15

scutil端末からインタラクティブに使用できます。sudo scutilこれらのコマンドを実行して実行し、適切な場所でDNSサーバーを交換します。

>開く
> d.init
> d.add ServerAddresses * 8.8.8.8 9.9.9.9
> State:/ Network / Service / PRIMARY_SERVICE_ID / DNSを設定します
>終了

DNSサーバーを使用8.8.8.8して9.9.9.9使用する代わりに。

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


2
ただし、8.8.8.8は有効です。GoogleのパブリックDNS。8.8.4.4はセカンダリです。:-)
忘れられたセミコロン

私は知っています、私はそれを使用します:)
ジョンT

1
そうすべき。を使用scutil --dnsして確認できます。
ジョンT

2
これは私のMac OSX 10.7.5 MBPでは、少なくとも文字通りに行われたときは動作しないようです。set State:/Network/Service/PRIMARY_SERVICE_ID/DNS行の何かを置き換える必要がありますか、それともそのまま使用できますか?scutil --dns変更後、新しいDNSサーバーが出力に表示されますか?
ssc

2
@sscを実行scutil> listてから、PRIMARY_SERVICE_IDを置き換えるキーを見つけます。
J.Money

46

以下を使用できます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を参照)


うわー、84144は私が抱えている問題です。まだこれをすべて処理しています。ありがとうございます!
ダンローゼンスターク2009

6
DNSを削除する場合は、DNSの代わりに「空の」(引用符なし)と書くだけsudo networksetup -setdnsservers <networkservice> empty
です。– jackJoe

14

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]*\]'

このページを偶然見つけた人。GitHubにGistがあります。 gist.github.com/dkittell/34fe7b7422323fba546948b7448933a5
David Kittell

1

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つの方法を次に示しcommands.txtます。1.対話型scutilツールのコマンドを使用してファイルを作成します。たとえば、私の場合のPulseセキュアインターフェースのコンテンツ:

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を実行します(にはsudoが必要ですset
sudo scutil < commands.txt

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.