26

Как я могу изменить свой DNS-сервер с Терминала на Mac OS X? [Мне это нужно, потому что мой DNS не работает правильно с моим VPN. Иногда он использует DNS для моего основного соединения, а иногда использует DNS, указанный для VPN (что должно).]

4 ответа4

44

Вы можете использовать networksetup:

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

например (при подключении к аэропорту использовать DNS-серверы Google)

sudo networksetup -setdnsservers AirPort 8.8.8.8 8.8.4.4

Вы можете узнать имя сетевой службы, запустив networksetup -listallnetworkservices . Это будет "Wi-Fi", вероятно.

Это то же самое, что если бы вы редактировали записи в Панели сетевых настроек в Системных настройках, поэтому они сохраняются при перезагрузках.

Возможно, вы столкнулись с проблемой DNS на Snow Leopard, которая возникает при изменении порядка DNS-серверов (см. Вопрос 84144))

13

Вы можете использовать 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
> quit

Вместо использования 8.8.8.8 и 9.9.9.9 используйте ваши DNS-серверы.

Единственная проблема заключается в том, что это не является постоянным при перезагрузках. Если вы хотите постоянные изменения, вы захотите ncutil. Причина, по которой редактирование /etc/resolv.conf недостаточно в новых версиях OS X, заключается в том, что теперь configd использует базу данных для хранения информации о текущих настройках, которую читают другие приложения. Некоторые приложения по- прежнему будут читать /etc/resolv.conf (например, host), хотя это не относится ко всем приложениям.

11

У меня недостаточно очков, чтобы ответить на сообщение 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]*\]'
0

Вы должны быть в состоянии сделать это, отредактировав /etc/resolv.conf (помните, что resolv.conf сбрасывается после перезагрузки), надеюсь, это поможет - http://developer.apple.com/mac/library/documentation/Darwin/Reference/ страницы Справочника / man5 / resolver.5.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .