Czy w systemie OS X można zastąpić serwery DNS przypisane do DHCP, ale nadal zachować je na wypadek awarii?

9

Domyślnie chciałbym korzystać z publicznych serwerów DNS Google i powrócić do serwerów intranetowych, gdy one zawiodą.

czy to możliwe? ... Szukam konfiguracji, która nie zepsuje się, gdy przeniosę laptopa na inne sieci.

Byłoby do przyjęcia, gdybym znalazł rozwiązanie specyficzne dla tego połączenia sieciowego Wi-Fi (w tym przypadku załatwić sprawę i użyć ustawień domyślnych dla innych).

sorin
źródło
Co to znaczy „gdy zawodzą publiczne serwery DNS Google”? Istnieje wiele sposobów wykonywania skryptów zmieniających lokalizacje sieciowe i / lub po prostu skryptowania wpisu innego DNS, ale nie jest jasne, w jaki sposób przetestowałbyś błąd Google DNS. Co gorsza, poniższy komentarz na temat VPN jeszcze bardziej skomplikuje sytuację, jeśli dodasz to do swojego zestawu wymagań.
bmike
Dziwię się, że to niemożliwe. Czasami mam serwery DNS, które są dostarczane do mnie przez DHCP, nie działają, więc używam serwerów Google. Jednak nie mogę teraz używać żadnych sieci, które używają DNS do implementacji portalu typu captive. Gdybym mógł mieć serwery dostarczone przez DHCP jako kopię zapasową, rozwiązałoby to problem. Znalazłeś rozwiązanie?
Jake

Odpowiedzi:

4

Możesz użyć, ipconfig getpacketaby znaleźć serwer DNS zalecany przez DHCP:

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

Zakładając, że używasz Wi-Fiadaptera i jego urządzenia en0, możesz:

#!/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
Mark Grimes
źródło
2

Tak, możesz dodać serwery Google DNS na górze listy i śledzić je we własnym (serwery intranetowe).

  • Przejdź do Preferencji systemowych> Sieć
  • Wybierz interfejs sieciowy z listy po lewej stronie
  • Kliknij przycisk Zaawansowane po prawej stronie
  • Na karcie DNS okna dialogowego kliknij „+”, aby dodać lub „-”, aby usunąć wpisy (możesz również edytować wpisy, klikając dwukrotnie lub wybierając i klikając adres)
  • Dodaj adresy Google DNS jako pierwsze dwa wpisy
  • Dodaj intranetowe serwery DNS poniżej tych
  • Kliknij OK
  • Kliknij Zastosuj
  • Zamknij Preferencje systemowe
MK
źródło
1
Wiem o tym, ale problem polega na tym, że uniemożliwia mi to korzystanie z tej samej sieci VPN z innej lokalizacji. Powinno to być inne rozwiązanie, być może coś do skonfigurowania na serwerze VPN (PPTP) lub do skonfigurowania DNS z adresem 127.0.0.1 i skonfigurowania lokalnego DNS, który nadal korzysta z serwerów DNS dostarczonych przez DHCP.
sorin,
1

Istnieje również sposób, aby to zrobić z wiersza polecenia, jeśli jesteś administratorem sieci, który szuka sposobu na wykonanie tego zadania wsadowo:

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

Zamień „Wi-Fi” na właściwe urządzenie sieciowe. Zamiast tego możesz użyć:

device=`networksetup listallnetworkservices | grep Wi-Fi`
sudo networksetup -setdnsservers "$device" 8.8.8.8 8.8.4.4
Cory
źródło
1

Próbuję zrobić to samo. Zamierzam ręcznie uruchomić buforujący serwer dns lokalnie i pozwolić mu nauczyć się intranetów podczas dołączania.

Jestem podekscytowany, że serwer dns może nawet rozróżniać nazwy hostów intranetowych i internetowych przed wykonaniem połączenia rekurencyjnego.

Martwię się, że albo będę potrzebować krótkich TTL, albo będę musiał pisać hooki, aby za każdym razem, gdy zmienia się interfejs, rozważałem opróżnienie pamięci podręcznej dns lub podobne.

Przekażę, jeśli się powiedzie ...

Pierwsze 50%

Po przejrzeniu porównania serwerów DNS w Wikipedii , Dnsmasq znajduje się na szczycie mojej listy.

Okazuje się, że brewma forumla dnsmasq, a nawet ma servicesnapisany pod-interfejs dla brew... świetny, mniej do myślenia, wystarczy wypracować konfigurację.

$ 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 

( brewteż ma bind, ale stan minimalny jest również atrakcyjny - nie muszę go usuwać podczas konfiguracji sieci).

Do zrobienia

  • Zastanów się, jak skonfigurować Preferencje sieciowe, aby korzystać z moich nowych dns i
  • Skonfiguruj, dnsmasqaby zapewnić możliwość korzystania z ustawień intranetu. (prawdziwe wyzwanie)
Mccint
źródło