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

9

Per impostazione predefinita mi piacerebbe utilizzare i server DNS pubblici di google e ricorrere a quelli intranet quando questi non funzionano.

È possibile? ... Sto cercando un setup che non si rompa quando sposto il mio laptop su nessun'altra rete.

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).

    
posta sorin 07.11.2013 - 13:32
fonte

4 risposte

3

Puoi utilizzare ipconfig getpacket per 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'adattatore Wi-Fi 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
    
risposta data 20.06.2017 - 16:03
fonte
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 sotto quelli
  • Fai clic su OK
  • Fai clic su Applica
  • Chiudi Preferenze di sistema
risposta data 07.11.2013 - 13:55
fonte
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. Potresti, invece, voler usare:

device='networksetup listallnetworkservices | grep Wi-Fi'
sudo networksetup -setdnsservers "$device" 8.8.8.8 8.8.4.4
    
risposta data 15.12.2014 - 21:48
fonte
1

Sto cercando di fare lo stesso. Ho intenzione di eseguire manualmente un server cache DNS localmente e far sì che impari le intranet mentre mi unisco.

Sono eccitato che il server DNS possa anche essere in grado di distinguere tra hostname internet e intranet prima di effettuare la chiamata ricorsiva.

Sono preoccupato che avrò bisogno di TTL brevi o che avrò bisogno di scrivere hook in modo che ogni volta che cambi un'interfaccia, prendo in considerazione il flushing della cache dns, o simile.

Segnalerò in caso di esito positivo ...

Il primo 50%

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

Risulta brew ha un forumla per dnsmasq , e ha anche qualche services sotto-interfaccia scritta per brew ... grande, meno a cui pensare, basta 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 

( brew ha anche bind , ma lo stato minimo è troppo attraente per me - non dover cancellarlo quando si esegue la configurazione di rete).

Todo

  • Scopri come configurare le Rete Preferenze per utilizzare i miei nuovi DNS e
  • Configura dnsmasq per assicurarti che possa utilizzare le impostazioni della intranet. (la vera sfida)
risposta data 14.02.2017 - 13:19
fonte

Leggi altre domande sui tag