Как я могу изменить свой DNS-сервер с Терминала на Mac OS X? [Мне это нужно, потому что мой DNS не работает правильно с моим VPN. Иногда он использует DNS для моего основного соединения, а иногда использует DNS, указанный для VPN (что должно).]
4 ответа
Вы можете использовать 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))
Вы можете использовать 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), хотя это не относится ко всем приложениям.
У меня недостаточно очков, чтобы ответить на сообщение 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]*\]'
Вы должны быть в состоянии сделать это, отредактировав /etc/resolv.conf (помните, что resolv.conf сбрасывается после перезагрузки), надеюсь, это поможет - http://developer.apple.com/mac/library/documentation/Darwin/Reference/ страницы Справочника / man5 / resolver.5.html