Ist es unter OS X möglich, von DHCP zugewiesene DNS-Server zu überschreiben, diese aber dennoch für den Fallback aufzubewahren?

9

Standardmäßig möchte ich die öffentlichen DNS-Server von Google verwenden und auf Intranets zurückgreifen, wenn diese fehlschlagen.

Ist das möglich? ... Ich suche ein Setup, das nicht kaputt geht, wenn ich meinen Laptop in keine anderen Netzwerke bewege.

Es wäre akzeptabel, wenn ich eine Lösung für diese WLAN-Netzwerkverbindung finden würde (um den Trick nur in diesem Fall auszuführen und Standardeinstellungen für andere zu verwenden).

Sorin
quelle
Was bedeutet es "wenn die öffentlichen DNS-Server von Google ausfallen"? Es gibt viele Möglichkeiten, das Ändern von Netzwerkstandorten per Skript und / oder einfach die Eingabe verschiedener DNS-Skripte zu skripten. Es ist jedoch nicht klar, wie Sie den Ausfall von Google DNS testen würden. Schlimmer noch, der folgende Kommentar zu VPN wird die Sache noch komplizierter machen, wenn Sie ihn zu Ihrem Anforderungsmix hinzufügen.
bmike
Ich bin überrascht, dass dies nicht möglich ist. Manchmal fallen die DNS-Server, die mir über DHCP zur Verfügung gestellt werden, aus, sodass ich die von Google verwende. Ich kann jedoch derzeit keine Netzwerke verwenden, die DNS verwenden, um ein Captive-Portal zu implementieren. Wenn ich die von DHCP bereitgestellten Server als Backup haben könnte, würde dies das Problem lösen. Haben Sie eine Lösung gefunden?
Jake

Antworten:

4

Sie können ipconfig getpacketden von DHCP empfohlenen DNS-Server suchen:

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

Angenommen, Sie verwenden den Wi-FiAdapter und sein Gerät en0, können Sie:

#!/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
quelle
2

Ja, Sie können die Google DNS-Server oben in der Liste hinzufügen und diese mit Ihren eigenen (Intranetservern) verfolgen.

  • Gehen Sie zu Systemeinstellungen> Netzwerk
  • Wählen Sie Ihre Netzwerkschnittstelle aus der Liste links aus
  • Klicken Sie rechts auf die Schaltfläche Erweitert
  • Klicken Sie auf der Registerkarte DNS des Dialogfelds auf "+", um Einträge hinzuzufügen, oder auf "-", um Einträge zu entfernen (Sie können Einträge auch bearbeiten, indem Sie auf die Adresse doppelklicken oder sie auswählen und darauf klicken).
  • Fügen Sie die Google DNS-Adressen als erste beiden Einträge hinzu
  • Fügen Sie Ihre Intranet-DNS-Server darunter hinzu
  • Klicken Sie auf OK
  • Klicken Sie auf Übernehmen
  • Schließen Sie die Systemeinstellungen
MK
quelle
1
Ich weiß das, aber das Problem ist, dass es mir unmöglich ist, dasselbe VPN von einem anderen Standort aus zu verwenden. Es sollte eine andere Lösung sein, möglicherweise etwas, das auf dem VPN-Server (PPTP) konfiguriert werden muss, oder ein DNS mit der Adresse 127.0.0.1 zu konfigurieren und ein lokales DNS zu konfigurieren, das weiterhin die von DHCP bereitgestellten DNS-Server verwendet.
Sorin
1

Es gibt auch eine Möglichkeit, dies über die Befehlszeile zu tun, wenn Sie als Netzwerkadministrator nach einer Möglichkeit suchen, dies in einem Stapel zu tun:

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

Ersetzen Sie "Wi-Fi" durch das richtige Netzwerkgerät. Möglicherweise möchten Sie stattdessen Folgendes verwenden:

device=`networksetup listallnetworkservices | grep Wi-Fi`
sudo networksetup -setdnsservers "$device" 8.8.8.8 8.8.4.4
Cory
quelle
1

Ich versuche das Gleiche zu tun. Ich werde einen DNS-Caching-Server lokal manuell ausführen und ihn beim Beitritt Intranets lernen lassen.

Ich freue mich, dass der DNS-Server möglicherweise sogar zwischen Intranet- und Internet-Hostnamen unterscheiden kann, bevor der rekursive Aufruf getätigt wird.

Ich mache mir Sorgen, dass ich entweder kurze TTLs benötige oder Hooks schreiben muss, damit ich bei jeder Änderung einer Schnittstelle den DNS-Cache leeren oder ähnliches in Betracht ziehen kann.

Ich melde mich zurück, wenn erfolgreich ...

Die ersten 50%

Nachdem ich mir den Wikipedia-Vergleich der DNS-Server angesehen habe , steht Dnsmasq ganz oben auf meiner Liste.

Es stellte sich heraus, dass brewes ein Forum für gibt dnsmasq, und es hat sogar eine servicesSub-Oberfläche geschrieben für brew... großartig, weniger zum Nachdenken, muss nur die Konfiguration ausarbeiten.

$ 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 

( brewhat auch bind, aber minimaler Status ist auch für mich attraktiv - ich muss ihn bei der Netzwerkkonfiguration nicht löschen).

Machen

  • Finden Sie heraus, wie Sie die Netzwerkeinstellungen für die Verwendung meiner neuen DNS konfigurieren
  • Konfigurieren Sie, dnsmasqum sicherzustellen, dass Intraneteinstellungen verwendet werden können. (die wahre Herausforderung)
mcint
quelle