Ordre de résolution Lion / nom

9

(ce problème a disparu pour moi avec la mise à jour 10.7.1 - / etc / hosts fonctionne maintenant comme toujours pour moi)

J'ai mis à jour mon Mac vers Lion et maintenant je remarque que / etc / hosts est consulté en dernier, même après DNS. C'est très ennuyeux car j'ai beaucoup de noms d'hôtes que j'utilise pour le développement.

Où l'ordre de résolution des noms est-il configuré? Je peux le vérifier en utilisant dscacheutil, alors voici ce qu'une machine Snow Leopard me dit:

pilif@tali ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default
    /BSD/local

Settings:
AAAA Queries  - Disabled (link-local IPv6 addresses)
Default TTL   - 3600
Policy Flags  - 0

Et voici ce que Lion me dit

pilif@kosmos ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default

Unable to get details from the cache node
Unable to get cache configuration information

à part les deux erreurs, je suppose que / BSD / Local est ce qui le fait lire / etc / hosts plus tôt.

Quelqu'un a-t-il une idée où cette "politique de recherche de cache" est stockée et comment la modifier?

Je sais que je peux créer des entrées de nom d'hôte à l'aide de dcsl, mais j'aimerais vraiment conserver mes / etc / hosts que j'utilise sur diverses machines.

Mise à jour: l'ordre de résolution peut apparemment être configuré dans l'utilitaire d'annuaire. Malheureusement, cette installation Directroy Utility ne répertorie plus les fichiers BSD dans l'onglet Services.

Cette fonctionnalité a-t-elle disparu de Lion? Ou cette installation est-elle arrosée?

pilif
la source

Réponses:

5

J'ai résolu le problème (et donc posté comme réponse au lieu de modifier la question):

Les fichiers BSD ne sont en effet plus répertoriés dans Directory Utility, ni dans dscacheutil, mais au moins / etc / hosts est toujours lu, mais il y a un problème en ce que plusieurs noms d'hôte par adresse IP ne semblent plus être pris en charge ou au moins, ils ne fonctionnent pas correctement ATM.

Quand vos anciens / etc / hosts auraient pu ressembler

127.0.0.1 localhost foo foobar

Cela entraînerait le délai d'attente de ~ 10 secondes pour résoudre l'un de ces noms d'hôte.

Mais si vous utilisez

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

La résolution sera instantanée.

La réponse de RedGrittyBrick est également valide, mais je veux spécifiquement continuer à utiliser le fichier hosts en modifiant le répertoire local car il est partagé entre les différentes machines de développement.

Pour répondre au reste de mes questions aussi (maintenant tout est clair pour moi):

  • L'ordre de résolution du cache que vous configurez dans l'utilitaire d'annuaire, où vous pouvez lui indiquer dans quel ordre les répertoires activés que vous souhaitez consulter.
  • Pour configurer des répertoires, utilisez également l'utilitaire d'annuaire
  • L'utilitaire d'annuaire est lancé en allant dans Préférences Système> Comptes> Options de connexion> Rejoindre l'annuaire> Utilitaire d'annuaire
  • Dans Lion, le "répertoire" des fichiers BSD n'est plus disponible même si le fichier d'aide s'y réfère toujours
  • Comme je l'ai dit, / etc / hosts est toujours lu, mais il y a le bogue que j'ai décrit ci-dessus.
pilif
la source
Mettre chaque entrée sur sa propre ligne ne l'a pas résolu pour moi. Pouvez-vous visiter "foo" et "foobar" dans Chrome et Safari? Pour moi, cela ne fonctionne que dans Chrome. Pouvez-vous remplacer un site Web existant, par exemple "127.0.0.1 www.google.com"? Pour moi, cela ne fonctionne ni dans Chrome ni dans Safari.
richardkmiller
Cela a résolu l'attente de 10 secondes pour moi. Merci, ça me rendait fou.
Josh Bleecher Snyder
Résolu pour moi le 10.7.3 yay!
EMiller
3

Le problème est que Lion gère le TLD .local différemment car il est réservé à certaines fonctionnalités DNS de multidiffusion (utilisées par Bonjour). Le seul moyen que j'ai trouvé pour résoudre ce problème est d'utiliser un TLD différent pour les hôtes de développement (par exemple: .dev). Cela fonctionne bien pour moi, j'espère que ça va être utile aux autres!

Jean-Baptiste MONIN
la source
c'était absolument ce qui se passait sur ma boîte. thx
slf
1

Comme je m'attends à ce que vous le sachiez, la manière traditionnelle d'Unix de gérer cela consiste à utiliser une directive hostresorderou orderdans /etc/resolv.conf. OS X lit (ou peut être fait pour) lire et utiliser ces fichiers mais OS X a un système distinct administré via les préférences réseau qui, je crois, écrase ces fichiers de configuration au démarrage.

http://hints.macworld.com/article.php?story=20070223050607406

http://docs.info.apple.com/article.html?path=ServerAdmin/10.6/en/od4939886e.html

https://discussions.apple.com/thread/2493759

http://blog.daemon.com.au/go/blog-post/managing-the-host-file-on-leopard

Cela ne répond pas à votre question mais les informations et les liens peuvent aider à en trouver un. J'aurais mis cela dans un commentaire si je pouvais le condenser pour l'adapter.

RedGrittyBrick
la source
Je connais dscl, mais je voulais spécifiquement utiliser le fichier hosts qui ne peut plus être explicitement activé et désactivé dans Lion. Il est toujours lu, mais avec des règles d'analyse différentes qu'auparavant - voir ma réponse à ma question.
pilif
1

Il est possible de contourner ce problème en utilisant dnsmasq comme DNS local et en y ajoutant des entrées, ou utilisez dnsmasq pour l'utiliser /etc/hosts.

Il est possible d'utiliser un script pour définir l'ordre du serveur DNS:

Filename: setdsn
-------------------------------------------------
#!/bin/bash

# Script is used to set the Nameserver Lookup under Max OS X 10.4 with the Console
# Script by Stephan Oeste

if [ $# -lt 2 ] ; then
echo "Use: $0 [2.Nameserver]"
echo "Example Use: $0 example.tld 1.2.3.4 1.2.3.5"
exit 1
fi

PSID=$( (scutil | grep PrimaryService | sed -e 's/.*PrimaryService : //')<< EOF
open
get State:/Network/Global/IPv4
d.show
quit
EOF
)

scutil << EOF
open
d.init
d.add ServerAddresses * $2 $3
d.add DomainName $1
set State:/Network/Service/$PSID/DNS
quit
EOF
-------------------------------------------------

Créez le fichier:

chmod +x setdns

Et puis utilisez ist avec (Exemple): setdns domain.com 12.23.34.45
(Publié par emzy sur http://hints.macworld.com/article.php?story=20050621051643993 )

Si vous voulez que le script se charge automatiquement lors d'un changement de réseau, vous devez créer un .plist, le mettre /Library/LaunchDaemonset utiliser:

sudo launchctl load -w /LibraryLaunchDaemons/name.your.plist
qpqp
la source
1

J'ai rencontré ce problème dans Snow Leopard en essayant de configurer un serveur de mise à jour logicielle transparent. Je l'ai également fait fonctionner sur Lion maintenant. Le Software Update Server lui-même est à mi-chemin entre un hack et un kludge, mais ce problème a été résolu assez élégamment. Voici ce que je sais:

  • / etc / hosts existe dans Lion et, comme les versions récentes d'OS X, est configuré pour être lu après DNS.
  • /etc/resolv.conf existe dans Lion mais est un lien symbolique vers /var/run/resolv.conf.
  • /var/run/resolv.conf est réécrit chaque fois que votre configuration réseau est mise à jour. Cela peut être dû à des redémarrages, à des renouvellements de bail DHCP, etc.

J'ai créé le script suivant. / usr / local / hostsBind:

mv /var/run/resolv.conf /var/run/resolv.conf.new
echo order hosts, bind > /var/run/resolv.conf
cat /var/run/resolv.conf.new >> /var/run/resolv.conf

cette sauvegarde du fichier resolv.conf principal actuel, en crée un nouveau avec l'ordre des hôtes souhaité avant BIND et concatène le fichier précédent jusqu'à la fin.

J'appelle ce script en regardant le fichier resolv.conf principal avec le travail lancé suivant sur /Library/LaunchDaemons/com.domain.hostsBind.plist (vous pouvez changer com.domain en quelque chose qui a du sens pour vous):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.domain.hostsBind</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/hostsBind</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/var/run/resolv.conf</string>
    </array>
</dict>
</plist>

Cela fonctionne pour notre organisation avec un serveur Lion Software Update.

Dernière chose à noter, cela fonctionne très bien avec Snow Leopard également si vous changez le chemin pour resolv.conf en /etc/resolv.conf. Lion vient de lancer la courbe du lien symbolique vers / var / run / au lieu de / etc /.

-b

PS: source pour le script: http://forums.macrumors.com/showthread.php?p=6742920

supreme_b_ing
la source
lorsque j'ai essayé cela, le travail a continué de préparer l'ordre sur le fichier car le changement de fichier a déclenché une nouvelle mise à jour.
harmanjd
1

Il y a un certain nombre de problèmes avec le serveur apache fourni avec OSX Lion.

  1. De nombreux modules sont chargés par défaut.
    Ouvrez /etc/apache2/httpd.confet parcourez la liste des modules activés (tous sont activés par défaut). Vous pouvez probablement en désactiver beaucoup en mettant un #devant la ligne.

    Ce sont ceux que j'ai désactivés:

#LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
#LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
#LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
#LoadModule authn_default_module libexec/apache2/mod_authn_default.so
#LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
#LoadModule authz_user_module libexec/apache2/mod_authz_user.so
#LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
#LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
#LoadModule authz_default_module libexec/apache2/mod_authz_default.so
#LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
#LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
#LoadModule dbd_module libexec/apache2/mod_dbd.so
#LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
#LoadModule unique_id_module libexec/apache2/mod_unique_id.so
#LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
#LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
#LoadModule proxy_scgi_module libexec/apache2/mod_proxy_scgi.so
#LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
#LoadModule dav_module libexec/apache2/mod_dav.so
#LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
#LoadModule bonjour_module libexec/apache2/mod_bonjour.so
#LoadModule fastcgi_module libexec/apache2/mod_fastcgi.so
  1. Le fichier hosts n'est pas parfait.
    Ouvrez maintenant votre fichier d'hôtes, situé à /etc/hosts. Ici vous verrez cette ligne (et quelques commentaires):

127.0.0.1 macbook-pro-van-bart.local

(autre nom d'ordinateur hors cours). Ajoutez la ligne suivante (changez le nom de l'ordinateur):

fe80::1%lo0 macbook-pro-van-bart.local
  1. Jetez un oeil à votre configuration apache
    Assurez-vous que vous vhostsne comptez pas sur les adresses IP. Changez-les comme ceci:

NameVirtualHost 127.0.0.1:80

Devient:

NameVirtualHost *: 80

Bart De Vos
la source