Su OS X è possibile sovrascrivere i server DNS assegnati DHCP ma conservarli per il fallback?


9

Per impostazione predefinita, vorrei utilizzare i server DNS pubblici di google e eseguire il fallback a quelli Intranet quando questi non riescono.

È possibile? ... Sto cercando una configurazione che non si rompa quando sposto il mio laptop senza altre reti.

Sarebbe accettabile se trovassi una soluzione specifica per questa connessione di rete wifi (per fare il trucco solo in questo caso e usare i valori predefiniti per gli altri).


Che cosa significa "quando i server DNS pubblici di Google falliscono"? Esistono molti modi per eseguire lo scripting cambiando i percorsi di rete e / o semplicemente copiando la voce di DNS diversi, ma non è chiaro come testeresti il ​​fallimento di google DNS. Peggio ancora, il commento qui sotto sulla VPN complicherà ulteriormente le cose se lo aggiungi al tuo mix di requisiti.
bmike

Sono sorpreso che questo non sia possibile. A volte ho i server DNS che mi vengono forniti tramite DHCP non funzionano, quindi uso quelli di Google. Tuttavia non posso usare alcuna rete che utilizza DNS per implementare un portale captive ora. Se potessi avere i server DHCP forniti come backup, questo risolverebbe. Hai trovato una soluzione?
Jake,

Risposte:


4

È possibile utilizzare ipconfig getpacketper trovare il server DNS consigliato da DHCP:

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

Quindi, supponendo che tu stia utilizzando l' Wi-Fiadattatore e il suo dispositivo en0, puoi:

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

Sì, puoi aggiungere i server DNS di Google in cima all'elenco e seguirli con i tuoi (server intranet).

  • Vai a Preferenze di Sistema> Rete
  • Seleziona la tua interfaccia di rete dall'elenco a sinistra
  • Fai clic sul pulsante Avanzate a destra
  • Nella scheda DNS della finestra di dialogo, fai clic su "+" per aggiungere o "-" per rimuovere le voci (puoi anche modificare le voci facendo doppio clic o selezionando e facendo clic sull'indirizzo)
  • Aggiungi gli indirizzi DNS di Google come prime due voci
  • Aggiungi i tuoi server DNS Intranet al di sotto di quelli
  • Clicca OK
  • Fai clic su Applica
  • Chiudi le Preferenze di Sistema

1
Lo so, ma il problema è che ciò mi rende impossibile utilizzare la stessa VPN da un'altra posizione. Dovrebbe essere un'altra soluzione, forse qualcosa da configurare nel server VPN (PPTP) o per configurare un DNS con indirizzo 127.0.0.1 e configurare un DNS locale che utilizza ancora i server DNS forniti da DHCP.
sorin,

1

C'è anche un modo per farlo dalla riga di comando se sei un amministratore di rete alla ricerca di un modo per farlo in un batch:

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

Sostituisci "Wi-Fi" con il dispositivo di rete corretto. È possibile, invece, utilizzare:

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

1

Sto provando a fare lo stesso. Ho intenzione di eseguire manualmente un server DNS di memorizzazione nella cache localmente e fargli apprendere le intranet mentre mi unisco.

Sono entusiasta del fatto che il server DNS potrebbe persino essere in grado di distinguere tra i nomi host di Internet e Intranet prima di effettuare la chiamata ricorsiva.

Sono preoccupato che avrò bisogno di brevi TTL o di scrivere hook in modo tale che ogni volta che cambia un'interfaccia prendo in considerazione lo svuotamento della cache DNS o simile.

Riporterò indietro in caso di successo ...

Il primo 50%

Dopo aver esaminato il confronto Wikipedia dei server DNS , Dnsmasq è in cima alla mia lista.

Si scopre che brewha un forumla per dnsmasq, e ha anche qualche servicessotto-interfaccia scritta per brew... fantastico, meno da pensare, devo solo elaborare la configurazione.

$ 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 

( brewha anche bind, ma lo stato minimo è attraente anche per me - non è necessario cancellarlo quando si esegue la configurazione della rete).

Fare

  • Capire come configurare le preferenze di rete per usare il mio nuovo dns e
  • Configurare dnsmasqper assicurarsi che possa utilizzare le impostazioni Intranet. (la vera sfida)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.