web-dev-qa-db-fra.com

Définissez le serveur DNS sur OS X Même lorsque sans connexion Internet

J'ai installé, Server DNS configuré (instance locale de DNSMASQ) qui se résout à Localhost tel que je veux, tout va bien.

Lorsque je vais hors ligne, cela cesse de fonctionner, car le contenu vide OS X est vide de resolv.conf et ignore la tentative de refléter les modifications de ce fichier.

Une idée, comment configurer DNS même lorsque déconnecté?

Numéro similaire (non résolu): http://blog.steamshift.com/geek/leopard-lookupd-and-local-web-development-sites

La motivation principale est une facilité de développement de l'application ROR qui utilise des sous-domaines comme clés de compte. Et vous ne pouvez pas utiliser 127.0.0.1 * .YourApp.Local in/etc/hôtes. Certains gars Domaine enregistré Smackaho.st et SRT DNS pour cela comme .smackaho.st au 127.0.0.1 mais toujours, vous ne pouvez pas l'utiliser lorsque vous travaillez hors ligne.

EDIT: Essayé Scutil Commande, mais il semble que vous puissiez changer DNS si déconnecté

Remarque: lorsque vous avez toutes les interfaces, vous ne pouvez pas définir les serveurs DNS en PREF. panneau.

17
daeltar

Voir la mise à jour ci-dessous!

J'aime aussi utiliser Dnsmasq sur ma machine locale et j'ai aussi eu ce problème. Voici la solution:

De man 5 resolver:

The configuration for a particular client may be read from a file
having the format described in this man page. These are at present
located by the system in the /etc/resolv.conf file and in the files
found in the /etc/resolver directory.

/etc/resolver/ n'est pas présent par défaut; Vous devez le créer vous-même.

Aussi de la page Homme:

domain
  Domain name associated with this resolver configuration. This
  option is normally not required by the Mac OS X DNS search system
  when the resolver configuration is read from a file in the
  /etc/resolver directory. In that case the file name is used as the
  domain name.

Donc, si vous souhaitez que toutes les requêtes DNS pour le domaine de niveau supérieur de dev doivent être acheminées vers le serveur de noms local, vous le feriez:

# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev

configd ne modifie pas les fichiers dans /etc/resolver/, ce paramètre persistera à travers des changements de réseau et redémarre.

Mise à jour du 17 juillet 2012

Malheureusement, à partir de OS X Lion, le résolveur supérieur (comme indiqué par scutil --dns) disparaît lorsque aucune interface n'est active:

# scutil --dns # Online
DNS configuration

resolver #1
  nameserver[0] : 127.0.0.1

...

resolver #8
  domain   : dev
  nameserver[0] : 127.0.0.1

# scutil --dns # Offline
DNS configuration

resolver #1

...

resolver #8
  domain   : dev
  nameserver[0] : 127.0.0.1

Notez que le résolveur n ° 1 est vide, mais que la saisie de noms de nom de nom de noms de noms dérivé/etc/résolveur reste.

Il s'avère que puisque vous pouvez spécifier le domaine de résolveur directement dans le/etc/résolveur/fichier, en spécifiant le domaine racine Internet spécial . provoque la création d'une entrée de résolution globale qui ressemble à:

resolver #8
  nameserver[0] : 127.0.0.1

Maintenant, toutes les requêtes DNS sont acheminées vers localhost, même lorsqu'elles sont hors ligne.

Bien sûr, vous devrez toujours résoudre vos domaines choisis comme 127.0.0.1 en utilisant une option de Dnsmasq's --Address:

# dnsmasq --address=/dev/127.0.0.1

En résumé:

  • Définissez toutes vos serveurs DNS d'interface réseau vers 127.0.0.1:
[.____
  • Créez un fichier/etc/résolveur/peu importe:
 Metteur de noms 127.0.0.1 
 Domaine. 
  • Configurez un serveur DNS local et soyez heureux.

cf. http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c

29
guns

Pourquoi ne pas faire les entrées dans/etc/hosts à la place? J'ai du mal à penser à une situation où vous auriez besoin d'exécuter un serveur DNS soufflé complet. J'utilise des entrées de fichiers hôtes tout le temps pour accomplir des choses comme celle-ci sur mes Mac.

Le résolveur dans OS X fonctionne différemment de celui de Linux ou d'autres UNIXES. Cela fait probablement partie de ce qui vous cause du chagrin. Comme par exemple, il a une préférence pour laquelle la méthode de résolution d'utiliser d'abord et elle met en cache les résultats de toutes les requêtes pendant une période de temps.

Avez-vous ajouté le serveur DNS à l'interface dans le volet de préférence du réseau? Cela devrait s'assurer que le résolveur utilise ce serveur pour ses questions, si elle décidait de rechercher une entrée DNS.

2
Dave

(Répondre à B/C Je ne peux pas encore commenter ...)

Comment allez-vous hors ligne?

(meilleure réponse que j'ai en ce moment)

# man -S 5 resolver
 .
 .
 .
 Note that the /etc/resolv.conf file,
 which contains configuration for the default (or "primary") DNS resolver
 client, is maintained automatically by Mac OS X and should not be edited manu-
 ally.  Changes to the DNS configuration should be made by using the Network
 Preferences panel.

Donc, vous devriez être capable d'entrer quelque chose dans l'interface utilisateur et il devrait coller. J'avais fait cela quelques fois lorsque je n'avais pas aimé le serveur DNS mon serveur DHCP local fournit.

1
benc

OSX a-t-il le fichier de configuration /etc/dhcp3/dhclient.conf que les configurations de clients Linux/Unix DHCP normales ont-elles?

Si c'est le cas, il devrait avoir une ligne que vous pouvez faire défendre

prepend domain-name-servers 127.0.0.1;

pour que le client DHCP ajoutez toujours cette ligne à votre resolv.conf

0
Kevin Kuphal

Essayez d'ajouter un deuxième service Ethernet configuré avec une adresse statique et 127.0.0.1 comme serveur DNS. Ou également, ajoutez un emplacement réseau qui définit votre serveur DNS sur 127.0.0.1. Ces deux changements seraient effectués dans "Préférences système" sous le panneau "Réseau".

0
Josh