Forum Linux.débutant nslookup fonctionne mais pas ping

Posté par  . Licence CC By‑SA.
Étiquettes :
1
25
fév.
2019

Bonjour,

Je suis sous Opensuse tumbleweed et j'ai quelques soucis de connections.
Mon cable réseau fonctionne et le wifi aussi.
nslookup résoud les adresses mais pas ping (ni curl et mon navigateur non plus).
J'ai cherché sur internet et je n'ai pas trouvé de solution en faisant plusieurs tests. Je fourni aussi les fichiers les plus demandés pour ce genre de cas.
Le problème est survenu suite à une mise à jour via zypper si je me rappelle bien.

Quand je fait un nslookup google.com, j'ai la réponse

Server: 8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name: google.com
Address: 172.217.25.14
Name: google.com
Address: 2404:6800:4005:809::200e

un ping 172.217.25.14 me répond

PING 172.217.25.14 (172.217.25.14) 56(84) bytes of data.
64 bytes from 172.217.25.14: icmp_seq=1 ttl=51 time=3.56 ms

un ping google.com me répond

ping: google.com: Nom ou service inconnu

Pour info, voici quelques fichiers :
/etc/nsswitch.conf

passwd: compat
group: compat
shadow: compat

hosts: files dns wins
networks: files dns

services: files
protocols: files
rpc: files
ethers: files
netmasks: files
netgroup: files nis
publickey: files

bootparams: files
automount: files nis
aliases: files

/etc/hosts

127.0.0.1 localhost

::1 localhost ipv6-localhost ipv6-loopback

fe00::0 ipv6-localnet

ff00::0 ipv6-mcastprefix
ff02::1 ipv6-allnodes
ff02::2 ipv6-allrouters
ff02::3 ipv6-allhosts

/etc/resolv.conf

search linux-aj3v.site
nameserver 8.8.8.8

Merci d'avance pour l'aide

  • # what ???

    Posté par  . Évalué à -2.

    nslookup est un outil microsoft
    sous linux, c'est host ou dig pour faire les requetes DNS

    essaie en changeant de DNS

    • 1.1.1.1 : cloudflare
    • 208.67.222.222 ou 208.67.220.220 : openDNS (cisco)

    certains navigateurs ou certains FAI n'aiment pas/plus les DNS de google.

    • [^] # Re: what ???

      Posté par  . Évalué à 3. Dernière modification le 25/02/19 à 10:18.

      nslookup est un outil de l’ISC. Ce n'est pas parce que la commande existe aussi sous Windows que c'est un outil Microsoft ;)

      Pour les résolveurs, mieux vaut utiliser ceux de FDN : https://www.fdn.fr/actions/dns/ ou Quad9 : 9.9.9.9 plus respectueux de leurs utilisateurs.

    • [^] # Re: what ???

      Posté par  . Évalué à 2. Dernière modification le 25/02/19 à 16:30.

      nslookup est un outil microsoft

      Ah bon ?

      gcolangelo@NEO-L196:~$ uname -a
      Linux NEO-L196 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) x86_64 GNU/Linux
      
      gcolangelo@NEO-L196:~$ nslookup -version
      nslookup 9.10.3-P4-Debian

      En outre tu ne réponds pas à sa question….

      J'ai cru entendre dire par ci par la qu'il y avait eu une grosse attaque sur DNS ce week end.
      Pas de détail technique, mais peut être que ton soucis vient de ça…

      • [^] # Re: what ???

        Posté par  . Évalué à 1.

        Je n'ai pas accès à mon pc tout de suite, mais en fait si je fais un tcpdump pendant la commande ping, aucun appel réseau n'est fait, alors que le nslookup en fait (arp de mémoire)

      • [^] # Re: what ???

        Posté par  . Évalué à 1.

        Je viens de refaire le test et changer de dns ne répare rien. Le problème vient vraiment du fait que la requete ping n'appelle pas le dns.

        Si je met en dur dans /etc/hosts le mapping ip=>url, ping arrive à résoudre, mais je n'ai pas envie de faire serveur dns dans mon fichier hosts.

        • [^] # Re: what ???

          Posté par  (site Web personnel) . Évalué à 3.

          Sur Debian 9, ping utilise bien nsswitch, configuré pour utiliser files et dns, et regarde donc /etc/files, lit /etc/resolv.conf et effectue la résolution DNS.

          Tu peux utiliser strace pour vérifier les appels système, par exemple avec -f -v -s 400 (je ne vais pas rentrer dans les détails, mais c'est les options qui sont souvent utiles pour commencer). Attention, il faudra peut-être lancer cela avec sudo pour éviter un EPERM (PTRACE vs. capabilities, j'imagine).

          Debian Consultant @ DEBAMAX

          • [^] # Re: what ???

            Posté par  . Évalué à 1.

            En utilisant strace, la log fournie ne mentionne aucun fichier dans /etc.
            Si je fait un strace -f -v -s 400 ping mais avec une url que j'ai mis dans mon fichier hosts, là j'ai des appels à /etc/resov.conf et /etc/host.conf

            Je ne sais pas si ça vaut le coup que je mette la sortie de strace ici en commentaire.

            • [^] # Re: what ???

              Posté par  . Évalué à 2.

              Surtout pas, mais tu peux mettre ça sur un framabin par exemple et partager ici le lien.

              En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

              • [^] # Re: what ???

                Posté par  . Évalué à 1. Dernière modification le 26/02/19 à 12:01.

                • [^] # Re: what ???

                  Posté par  (site Web personnel) . Évalué à 1.

                  Tu as essayé en redémarrant nscd après avoir changé /etc/resolv.conf (ou en supprimant ce service) ?

                  C'est à lui qu'est posée la question DNS :

                  [pid  6562] connect(5, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = 0
                  [pid  6562] sendto(5, "\2\0\0\0\16\0\0\0\n\0\0\0google.fr\0", 22, MSG_NOSIGNAL, NULL, 0) = 22
                  [pid  6562] poll([{fd=5, events=POLLIN|POLLERR|POLLHUP}], 1, 5000) = 1 ([{fd=5, revents=POLLIN|POLLHUP}])
                  [pid  6562] read(5, "\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 24) = 24
                  

                  juste avant le chargement des fichiers de message pour afficher le message d'erreur.

                  Debian Consultant @ DEBAMAX

                  • [^] # Re: what ???

                    Posté par  . Évalué à 1.

                    J'ai retesté en arrêtant nscd

                    sudo service nscd stop

                    strace me donne le résultat suivant :
                    https://framabin.org/p/?c1c88bbecd1530a7#VW4nAMfGs93KpgHC6yJoDcV6WM4kEejjrDwq17Vw8hA=

                    Par contre, je ne vois pas le souci avec resolv.conf vu que nslookup (ou dig ou host) le lit bien. Quand je change le dns dans ce fichier, la modification est bien prise en compte par ces commandes.

                    De ce que je comprends de strace quand nscd est arrêté (je peux me tromper), c'est que ping essaye de résoudre les requêtes dns en cherchant sur 127.0.0.1.

                    Si je résume ping essaye de résoudre en regardant /etc/host ce que j'ai vérifié en changeant dans nsswitch.conf la ligne hosts pour valoir seulement dns.
                    Ensuite il cherche dans le cache de nscd ce que je contourne en arrêtant le service.
                    Ensuite il cherche quelque part mais où ?

                    • [^] # Re: what ???

                      Posté par  (site Web personnel) . Évalué à 2.

                      Je vois un souci avec le resolv.conf dans ta trace :

                      openat(AT_FDCWD, "/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission non accordée)
                      

                      On voit bien :

                      openat(AT_FDCWD, "/lib64/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 5
                      …
                      openat(AT_FDCWD, "/etc/hosts", O_RDONLY|O_CLOEXEC) = 5
                      

                      pour la partie files et ensuite pour la partie dns :

                      openat(AT_FDCWD, "/lib64/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = 5
                      …
                      socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 5
                      connect(5, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
                      

                      ce qui est peut-être dû au fait de ne pas avoir réussi à lire /etc/resolv.conf (du type « tentative désespérée faute de configuration lisible ») ? Je reproduis un comportement similaire localement en mettant (temporairement) un chmod 000 /etc/resolv.conf.

                      Note que se connecter sur localhost en UDP sur le port 53 (connexion IP donc), c'est assez différent d'utiliser nscd, en utilisant une socket UNIX :

                      connect(5, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ECONNREFUSED (Connexion refusée)
                      

                      Debian Consultant @ DEBAMAX

                      • [^] # Re: what ???

                        Posté par  . Évalué à 1.

                        J'aurais un problème de droit d'accès sur le fichier resolv.conf ? Je vérifie ça dès que j'ai accès à mon pc (en faisant un chmod 777).

                        • [^] # Re: what ???

                          Posté par  (site Web personnel) . Évalué à 5.

                          Un chmod 0755 est largement suffisant. Personne ne devrait jamais utiliser chmod 777 sans comprendre ce que ça fait (et ceux qui comprennent ne le font pas dans la quasi totalité des cas…).

                          • [^] # Re: what ???

                            Posté par  (site Web personnel) . Évalué à 1.

                            Pour ce fichier de conf, 640 est suffisant…

                            Debian Consultant @ DEBAMAX

                            • [^] # Re: what ???

                              Posté par  . Évalué à 2.

                              J'ai 'résolu' mon problème. Ce n'était pas un problème de droit d'accès.
                              En fait, mon fichier /etc/resolv.conf est en réalité un lien symbolique vers /var/run/netconfig/resolv.conf. En supprimant le lien symbolique et en créant le fichier ça fonctionne.

                              Par contre si je lance un netconfig update -f, ça recrée un lien symbolique. J'espère qu'il n'y a pas trop de cas où la config se réinitialise.

                              Encore merci pour l'aide.

                            • [^] # Re: what ???

                              Posté par  (site Web personnel) . Évalué à 3.

                              Le fichier est root:root 0644 sur une Debian 9, une CentOS 7 ou une Ubuntu 14 par exemple. (ma remarque mal formulée était plus sur le fait de laisser un fichier en écriture à tous, que ça soit du 0666 ou du 0777 ou pire)

  • # Avec un point ?

    Posté par  . Évalué à 1. Dernière modification le 25/02/19 à 14:48.

    Si en rajoutant un point final ça te retourne quelque chose alors c'est ton search dans ton /etc/resolv.conf qui est en cause. Le ping tente de rajouter ce domaine au google.com et donc il ne le trouve pas. Sauf erreur de ma part !

    ping google.com.

  • # chez moi avec debian stretch

    Posté par  . Évalué à 2.

    mon nssswitch est le suivant

    passwd:         compat
    group:          compat
    shadow:         compat
    gshadow:        files
    
    hosts:          files dns
    networks:       files
    
    protocols:      db files
    services:       db files
    ethers:         db files
    rpc:            db files
    
    netgroup:       nis

Suivre le flux des commentaires

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