Retourner aux forums || Retourner au forum Linux.redhat

Linux.redhat : Configurer l'ordre de résolution de noms d'hôtes

Posté par Dabowl_92 () le 13 septembre 2007
0
Bonjour,

Je cherche à configurer l'ordre de recherche pour la résolution de nom d'hôte sur un environnement redhat.

Je veux simplement que la machine resolve les noms d'hôtes en se basant sur le fichier /etc/hosts.

L'environnement est configuré comme suit :

Le fichier /etc/resolv.conf est vide

Le fichier /etc/host.conf contient la ligne suivante :

 order hosts 


Le paramètre host de /etc/nsswitch.conf est le suivant :

 hosts: files


Le fichier /etc/hosts contient divers enregistrements permettant l'association IP Nom d'hôte.

Maintenant, si je cherche à résoudre "localhost" avec les commandes host, nslookup ou même dig, j'obtiens un time out, tout simplement parce que ces 3 commandes cherchent à contacter un DNS.

La commande "strace" montre clairement que les commandes host, nslookup font un open sur /etc/resolv.conf, comme il n'y a pas de DNS ça tombe en time out, et ça ne va même pas lire /etc/hosts.

La commande ping a un comportement à peu près équivalent, elle cherche d'abord sur /etc/resolv.conf puis après sur /etc/hosts.

En lisant la page de manuel de la primitive gethostbyname :

Les interrogations du serveur de noms effectuées par gethostbyname() et gethostbyaddr() utilisent les éléments suivants : le  serveur  de  noms named(8),  les  lignes de /etc/hosts, et l'annuaire Network Information Service (NIS ou YP), suivant le contenu de la ligne  order  du  fichier /etc/host.conf.L'action  par défaut consiste à interroger named(8), puis /etc/hosts.


Il semblerait que ce soit le comportement par défaut qui soit utilisé malgré la configuration explicite de mon /etc/host.conf.

L'url suivante mentionne exactement le même problème que moi:

http://www.frameip.com/nntp/fr-comp-reseaux-ip/28619-fr-comp(...)

Quelq'un aurait une idée ?

> Lire le message (10 commentaires, moyenne: 1,8).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

/etc/resolv.conf vide

Posté par NeoX () le 13/09/2007 à 13:03. (lien). Évalué à 1.

/etc/resolv.conf vide => pas de reseau => pas de resolution.

si tu as du reseau (il en faut meme pour faire un localhost)
tu dois avoir une entrée dans /etc/resolv.conf

ensuite seulement il ira lire /etc/hosts (sans passer par le dns vu que tu lui dis de passer par hosts)

--
Apprendre par les autres, c'est bien.
Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
  • [^]Re: /etc/resolv.conf vide

    Posté par Dabowl_92 () le 13/09/2007 à 13:25. (lien). Évalué à 1.

    d'abord merci pour la réponse rapide

    Ensuite, je ne trouve pas ça normal qu'un open soit fait en premier sur /etc/resolv.conf, parce que d'après la page de manuel de la primitive gethostbyname, c'est ce que qui se trouve dans /etc/host.conf qui doit faire foi, enfin bon...

    Donc d'après toi il faut obligatoirement un enregistrement dans /etc/resolv.conf, soit.

    Mais quel enregistrement mettre ? J'ai mis nameserver tout court, le problème reste le même...j'ai mis nameserver et domain etc...

    qu'entend précisément par "tu dois avoir une entrée dans /etc/resolv.conf" ?

    • [^]Re: /etc/resolv.conf vide

      Posté par NeoX () le 13/09/2007 à 14:09. (lien). Évalué à 1.

      chez moi :

      user@machine:~$ cat /etc/resolv.conf


      search mon_domaine.tld
      nameserver IP_de_mon_dns


      user@machine:~$ cat /etc/nsswitch.conf

      # /etc/nsswitch.conf
      #
      # Example configuration of GNU Name Service Switch functionality.
      # If you have the `glibc-doc-reference' and `info' packages installed, try:
      # `info libc "Name Service Switch"' for information about this file.

      passwd: compat
      group: compat
      shadow: compat

      hosts: files dns
      networks: files

      protocols: db files
      services: db files
      ethers: db files
      rpc: db files

      netgroup: nis


      user@machine:~$ cat /etc/host.conf

      # The "order" line is only used by old versions of the C library.
      order hosts,bind
      multi on


      et si mon reseau ne fonctionne pas, ben j'ai quand meme ma resolution localhost qui fonctionne.

      et je viens d'essayer, si je vide le resolv.conf mais que j'ai mis mes hotes dans /etc/hosts
      avec la syntaxe suivante
      IP_de_la_machine nom_complet nom_abrege

      et ben je pingue bien cette machine.

      le ping localhost qui ne fonctionne pas, ca me fait penser à l'interface lo qui ne serait pas active, ou une erreur de syntaxe dans le fichier /etc/hosts

      --
      Apprendre par les autres, c'est bien.
      Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
      • [^]Re: /etc/resolv.conf vide

        Posté par Dabowl_92 () le 13/09/2007 à 14:45. (lien). Évalué à 1.

        Mais je n'ai jamais dit que le ping ne fontionnait pas chez moi !

        Ce sont les commandes host, nslookup et dig qui ne fonctionnent pas car elles cherchent absolument à aller causer à un DNS, ça tombe en time out et elles s'arrêtent là !

        Le ping fonctionne sauf que la commande cherche d'abord à ouvrir /etc/resolv.conf pour se connecter à un DNS et seulement ensuite fait un open sur le /etc/hosts, et là fort heureusement il résoud bien le nom.
        Moi ce que je veux, c'est uniquement résoudre les noms avec /etc/hosts et à aucun moment ne faire appel à un DNS. Il semblerait que la primitive gethostbyname n'ai pas le comportement souhaité...pourtant sous AIX le comportement est normal....

        Ensuite, quand tu réalise ton test, pense bien à stopper le name service cache daemon....avec un /etc/init.d/nscd stop parce que la commande ping (et surement d'autres) va voir la socket locale pour tenter de résoudre des noms en cache...

        Refait ton test avec les commandes host, nslookup....

        Analyse la sortie d'un strace surtout, histoire de voir ta primitive a bien le même comportement....

        J'ai peut-être un bug...mon kernel est le suivant 2.4.21-27.ELsmp

        • [^]Re: /etc/resolv.conf vide

          Posté par NeoX () le 13/09/2007 à 15:24. (lien). Évalué à 3.

          sans commentaire :

          man host :


          DESCRIPTION
          host is a simple utility for performing DNS lookups. It is normally used to convert names to IP addresses and vice-versa.
          When no arguments or options are given, host prints a short summary of its command line arguments and options.
          [...]

          FILES
          /etc/resolv.conf


          man nslookup

          DESCRIPTION
          Nslookup is a program to query Internet domain name servers. Nslookup has two modes: interactive and
          non-interactive.
          [...]
          FILES
          /etc/resolv.conf



          man dig

          DESCRIPTION
          dig (domain information groper) is a flexible tool for interrogating DNS name servers.
          [...]

          FILES
          /etc/resolv.conf

          ${HOME}/.digrc


          les 3 outils que tu cites se base clairement sur le fichier /etc/resolv.conf
          et c'est normal car ils font, par definition, du traitement de type DNS

          et pour en revenir à la question initiale,
          es-tu sur que ces 3 outils se basent sur les primitive gethostbyname() et gethostbyaddress() ?

          --
          Apprendre par les autres, c'est bien.
          Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
          • [^]Re: /etc/resolv.conf vide

            Posté par Dabowl_92 () le 13/09/2007 à 16:09. (lien). Évalué à 1.

            Effectivement, tu as raison.

            La commande nslookup ne tient absolument pas compte du /etc/hosts qu'elle que soit l'implémentation et c'est annoncé clairement.

            En revanche la commande host n'a pas le même comportement sous AIX où le fichier /etc/hosts est consulté selon l'ordre de recherche définit....c'est assurément ce qui m'a induit en erreur.

            • [^]Re: /etc/resolv.conf vide

              Posté par baud123 (Jabber id, page perso, ) le 14/09/2007 à 07:06. (lien). Évalué à 2.

              Tu installes encore des RHEL 3 ? Prends au moins une RHEL 4 qui a un kernel 2.6 voire une RHEL 5 disponible depuis quelques temps...

              • [^]Re: /etc/resolv.conf vide

                Posté par NeoX () le 14/09/2007 à 09:42. (lien). Évalué à 2.


                Tu installes encore des RHEL 3 ? Prends au moins une RHEL 4 qui a un kernel 2.6 voire une RHEL 5 disponible depuis quelques temps..


                il s'agit peut-etre d'un serveur en prod, et on ne change pas un serveur juste parce que cela fait plaisir ou parce que la derniere version est sortie.

                --
                Apprendre par les autres, c'est bien.
                Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux

Revenir en haut de page || Retourner aux forums || Retourner au forum Linux.redhat