SERVFAIL, c’est une erreur du serveur DNS, et non ce n’est pas normal, sauf si on considère une erreur comme normale.
En préambule, il est bon de rappeler que la résolution de nom et le DNS sont deux choses différentes. DNS sert à la résolution de nom mais pas seulement, et la résolution de nom se sert de DNS mais pas seulement. Du point de vue de la résolution de nom, “server” (nom d’hôte) et “server.domain.local” (nom pleinement qualifié) peuvent être équivalents si on a défini le domaine ou un préfixe de recherche “domain.local”. En DNS, ils ne sont jamais équivalents car la notion de préfixe de recherche n’existe pas, les noms de domaine doivent toujours être pleinement qualifiés.
En pratique, cela signifie par exemple que [mono]ping[/mono], qui utilise la résolution de nom, et [mono]host[/mono], qui utilise le DNS, n’auront pas forcément les mêmes résultats.
La commande [mono]host[/mono] est censée interroger un serveur DNS, pas faire de la résolution de nom. Cependant elle peut tenir compte de la directive [mono]domain[/mono] ou [mono]prefix[/mono] présente dans /etc/resolv.conf pour qualifier le nom recherché avant d’envoyer la requête DNS au serveur. Ce n’est jamais le serveur qui va ajouter le nom de domaine, il considère que tous les noms sont absolus.
Par exemple, en simplifiant :
-
Si resolv.conf ne contient pas de directive [mono]domain[/mono] ni [mono]search[/mono], [mono]host server[/mono] envoie une requête portant sur “server”.
-
Si resolv.conf contient une directive [mono]domain domain.local[/mono] ou [mono]search domain.local[/mono], [mono]host server[/mono] envoie une requête portant sur “server.domain.local”.
Dans tous les cas, le serveur devrait renvoyer la réponse ou signaler que le nom n’existe pas, ce qui n’est pas une erreur. Mais il ne devrait pas renvoyer SERVFAIL, qui signale un fonctionnement anormal du serveur pouvant indiquer une erreur de configuration de celui-ci.