10 votes

Sous OS X, est-il possible d'ignorer les serveurs DNS assignés par DHCP tout en les conservant comme serveurs de secours ?

Par défaut, j'aimerais utiliser les serveurs DNS publics de Google et me rabattre sur les serveurs intranet en cas de défaillance de ceux-ci.

Est-ce possible ? ... Je suis à la recherche d'une configuration qui ne se brisera pas lorsque je déplacerai mon ordinateur portable et aucun autre réseau.

Il serait acceptable que je trouve une solution spécifique à cette connexion réseau wifi (pour faire l'affaire uniquement dans ce cas, et utiliser les valeurs par défaut pour les autres).

4voto

Mark Grimes Points 141

Vous pouvez utiliser ipconfig getpacket pour trouver le serveur DNS que DHCP a recommandé :

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

Donc, en supposant que vous utilisez le Wi-Fi et son dispositif est en0 vous pouvez :

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

2voto

M K Points 10691

Oui, vous pouvez ajouter les serveurs DNS de Google en haut de la liste et les faire suivre de vos propres serveurs (serveurs intranet).

  • Aller à Préférences système > Réseau
  • Sélectionnez votre interface réseau dans la liste de gauche.
  • Cliquez sur le bouton Avancé bouton à droite
  • Dans le DNS de la boîte de dialogue, cliquez sur "+" pour ajouter ou "-" pour supprimer des entrées (vous pouvez également modifier les entrées en double-cliquant ou en sélectionnant et en cliquant sur l'adresse).
  • Ajoutez les adresses DNS de Google comme deux premières entrées.
  • Ajoutez vos serveurs DNS intranet en dessous de ceux
  • Cliquez sur OK
  • Cliquez sur Appliquer
  • Fermer Préférences du système

1voto

Cory Points 111

Il est également possible d'effectuer cette opération à partir de la ligne de commande si vous êtes un administrateur réseau et que vous cherchez un moyen d'effectuer cette opération par lots :

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

Remplacez "Wi-Fi" par le périphérique réseau correct. Vous pouvez, à la place, utiliser :

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

1voto

mcint Points 191

J'essaie de faire la même chose. Je vais exécuter manuellement un serveur DNS en cache local et lui faire apprendre les intranets au fur et à mesure que je les rejoins.

Je suis excité à l'idée que le serveur DNS puisse être capable de faire la différence entre les noms d'hôtes intranet et internet avant de faire l'appel récursif.

J'ai peur d'avoir besoin de TTL courts, ou de devoir écrire des hooks pour qu'à chaque fois qu'une interface change, je pense à vider le cache DNS, ou quelque chose de similaire.

Je ferai un rapport en cas de succès...

Les premiers 50 %.

Après avoir examiné le Comparaison Wikipedia des serveurs DNS Dnsmasq arrive en tête de ma liste.

Il s'avère que brew a un forumla pour dnsmasq et il y a même des services sous-interface écrite pour brew ...super, moins de choses à penser, il faut juste trouver la configuration.

$ 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 a également bind mais l'état minimal est intéressant pour moi - ne pas avoir à l'effacer lors de la configuration du réseau).

Todo

  • Figure de la configuration Réseau Préférences pour utiliser mes nouveaux dns, et
  • Configurer dnsmasq pour s'assurer qu'il peut utiliser les paramètres de l'intranet. (le vrai défi)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X