На OS X возможно переопределить назначенные DHCP DNS-серверы, но все еще сохраняя их для запасного варианта?

9

По умолчанию я хотел бы использовать общедоступные DNS-серверы Google и использовать их при сбое.

Это возможно? ... Я ищу установку, которая не сломалась бы, когда я переставляю свой ноутбук без других сетей.

Было бы приемлемо, если бы я нашел решение, специфичное для этого сетевого соединения Wi-Fi (чтобы сделать трюк только в этом случае, и использовать значения по умолчанию для других).

Сорин
источник
Что значит "когда общедоступны DNS-серверы Google"? Существует множество способов создания сценариев изменения местоположения в сети и / или простого сценария ввода другого DNS, но неясно, как вы будете тестировать сбой Google DNS. Хуже того, приведенный ниже комментарий о VPN еще больше усложнит ситуацию, если вы добавите это в набор требований.
Bmike
Я удивлен, что это невозможно. У меня иногда бывают DNS-серверы, которые предоставляются мне через DHCP, поэтому я использую Google. Однако я не могу использовать какие-либо сети, которые используют DNS, чтобы реализовать портал. Если бы я мог использовать серверы, поставляемые DHCP, в качестве резервной копии, то это решило бы это. Вы нашли решение?
Джейк

Ответы:

4

Вы можете использовать, ipconfig getpacketчтобы найти DNS-сервер, рекомендуемый DHCP:

$ ipconfig getpacket en0 
...
domain_name_server (ip_mult): {192.168.3.2, 192.168.42.1}
...

Итак, если вы используете Wi-Fiадаптер и его устройство en0, вы можете:

#!/bin/bash

default_servers=$( ipconfig getpacket en0 | \
   perl -ne'/domain_name_server.*: \{(.*)}/ && print join " ", split /,\s*/, $1' )
networksetup -setdnsservers Wi-Fi 127.0.0.1 $default_servers
Марк Граймс
источник
2

Да, вы можете добавить DNS-серверы Google вверху списка и следить за ними со своими (серверы интрасети).

  • Перейдите в Системные настройки> Сеть
  • Выберите свой сетевой интерфейс из списка слева
  • Нажмите кнопку « Дополнительно» справа
  • На вкладке DNS диалогового окна нажмите «+», чтобы добавить, или «-», чтобы удалить записи (вы также можете редактировать записи, дважды щелкнув или выбрав и щелкнув по адресу).
  • Добавьте DNS-адреса Google в качестве первых двух записей
  • Добавьте свои DNS-серверы в интрасети ниже
  • Нажмите ОК
  • Нажмите Применить
  • Закрыть системные настройки
MK
источник
1
Я знаю это, но проблема в том, что для меня невозможно использовать тот же VPN из другого места. Это должно быть другое решение, может быть, что-то для настройки на сервере VPN (PPTP) или для настройки DNS с адресом 127.0.0.1 и для настройки локального DNS, который все еще использует предоставленные DHCP DNS-серверы.
сорин
1

Есть также способ сделать это из командной строки, если вы являетесь сетевым администратором и ищете способ сделать это в пакете:

networksetup listallnetworkservices
# look for the correct network device here, probably "Wi-Fi"
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

Замените «Wi-Fi» на правильное сетевое устройство. Вместо этого вы можете использовать:

device=`networksetup listallnetworkservices | grep Wi-Fi`
sudo networksetup -setdnsservers "$device" 8.8.8.8 8.8.4.4
Cory
источник
1

Я пытаюсь сделать то же самое. Я собираюсь вручную запустить сервер кэширования DNS и заставить его изучать интрасети, когда я присоединяюсь.

Я рад, что DNS-сервер может даже различать имена хостов в интрасети и в Интернете, прежде чем делать рекурсивный вызов.

Я беспокоюсь, что мне понадобятся короткие TTL, или мне нужно писать хуки, чтобы каждый раз, когда менялся интерфейс, я рассматривал сброс кеша dns или что-то подобное.

Я сообщу в случае успеха ...

Первые 50%

Посмотрев сравнение DNS-серверов в Википедии , Dnsmasq занял первое место в моем списке.

Оказывается, brewесть форум для dnsmasq, и у него даже есть некоторый субинтерфейс , servicesнаписанный для brew... отлично, меньше думать, просто нужно поработать с конфигом.

$ brew install dnsmasq  # [libidn] internation domain names
$ cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
# To have launchd start dnsmasq now and restart at startup:
$ sudo brew services start dnsmasq 

( brewтакже имеет bind, но минимальное состояние также привлекательно для меня - не нужно очищать его при настройке сети).

Делать

  • Выяснить, как настроить сетевые настройки для использования моего нового DNS, и
  • Настройте, dnsmasqчтобы убедиться, что он может использовать настройки интрасети. (настоящий вызов)
mcint
источник