J'ai installé, configuré un serveur DNS (instance locale de Dnsmasq) qui se résout en localhost comme je veux, tout va bien.
Lorsque je me déconnecte, cela cesse de fonctionner, car OS X vide le contenu de resolv.conf et ignore la tentative de refléter les modifications dans ce fichier.
Une idée, comment configurer DNS même hors ligne?
Problème similaire (non résolu): http://blog.steamshift.com/geek/leopard-lookupd-and-local-web-development-sites
La motivation principale est le développement aisé 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 dans / etc / hosts. Un type a enregistré le domaine smackaho.st et le DNS srt pour cela comme .smackaho.st à 127.0.0.1 mais vous ne pouvez toujours pas l'utiliser lorsque vous travaillez hors ligne.
EDIT: a essayé la commande scutil, mais il semble que vous pouvez changer le DNS si hors ligne
REMARQUE: lorsque toutes les interfaces sont arrêtées, vous ne pouvez pas définir de serveurs DNS dans Pref. panneau.
Réponses:
VOIR LA MISE À JOUR CI-DESSOUS!
J'aime également utiliser Dnsmasq sur ma machine locale et j'ai également rencontré ce problème. Voici la solution:
De
man 5 resolver
:/etc/resolver/
n'est pas présent par défaut; vous devez le créer vous-même.Également à partir de la page de manuel:
Donc, si vous vouliez que toutes les requêtes DNS pour le domaine de premier niveau
dev
soient acheminées vers le serveur de noms local, vous devez:configd
ne modifie pas les fichiers/etc/resolver/
, ce paramètre persistera donc lors des modifications et des redémarrages du réseau.MISE À JOUR 17 juillet 2012
Malheureusement, depuis OS X Lion, le résolveur supérieur (comme indiqué par
scutil --dns
) disparaît lorsqu'aucune interface n'est active:Notez que le résolveur # 1 est vide, mais que l'entrée de serveur de noms dérivée / etc / resolver reste.
Il s'avère que puisque vous pouvez spécifier le domaine de résolution directement dans le fichier / etc / resolver /, la spécification du domaine racine Internet spécial
.
provoque la création d'une entrée de résolution globale qui ressemble à:Désormais, toutes les requêtes DNS sont acheminées vers localhost, même hors ligne.
Bien sûr, vous devrez toujours résoudre vos domaines choisis en 127.0.0.1 en utilisant quelque chose comme l'option --address de dnsmasq:
En résumé:
cf. http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c
la source
scutil --dns
sans être connecté à Internet, c'est queNo DNS configuration available
j'ai suivi vos instructions ci-dessus, mais pas de chancePourquoi 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 complet. J'utilise des entrées de fichier hôte tout le temps pour accomplir des choses comme ça sur mes Mac.
Le résolveur sous OS X fonctionne différemment de celui sous Linux ou d'autres Unix. Cela fait probablement partie de ce qui vous cause du chagrin. Comme par exemple, il a une préférence pour la méthode de résolution à utiliser en premier et il met en cache les résultats de toutes les requêtes pendant un certain temps.
Avez-vous ajouté le serveur DNS à l'interface dans le volet des préférences réseau? Cela devrait garantir que le résolveur utilise ce serveur pour ses requêtes s'il décide de rechercher une entrée DNS.
la source
(répondant b / c je ne peux pas encore commenter ...)
Comment allez-vous hors ligne?
(meilleure réponse que j'ai eue en ce moment)
Ainsi, vous devriez pouvoir saisir quelque chose dans l'interface utilisateur, et cela devrait rester. Je l'avais fait plusieurs fois alors que je n'aimais pas le serveur DNS fourni par mon serveur DHCP local.
la source
OSX a-t-il le fichier de configuration /etc/dhcp3/dhclient.conf que les configurations client Linux / UNIX DHCP normales ont?
Si c'est le cas, il devrait avoir une ligne pour laquelle vous pouvez décommenter
pour que le client DHCP ajoute toujours cette ligne à votre resolv.conf
la source
Essayez d'ajouter un deuxième service Ethernet configuré avec une adresse statique et 127.0.0.1 comme serveur DNS. Ou, ajoutez un emplacement réseau qui définit votre serveur DNS sur 127.0.0.1. Ces deux modifications seraient apportées dans "Préférences Système" sous le panneau "Réseau".
la source
Il pourrait être utile de simplement mettre
dans / etc / hosts, il n'a donc pas besoin de résoudre pour trouver localhost.
la source