ping
me dit qu'il ne peut pas résoudre un nom d'hôte ("ping: hôte inconnu: domain.company.local") dans une URL, mais lorsque j'utilise host
ou nslookup
sur le même ordinateur sur la ligne de commande, les résolutions fonctionnent correctement (c'est-à-dire que c'est rapide et fiable ).
Qu'est-ce qui peut causer cela?
Plus de tests: Firefox, wget
et ping
ont le même problème. Faire un ping sur l'adresse IP fonctionne.
Système d'exploitation: Linux (Ubuntu 13.04)
ÉDITER Mes /etc/resolv.conf
lectures:
nameserver 127.0.1.1
search domain.company.local
netstat
rapports:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN -
donc quelque chose tourne sur ce port ( nslookup
indique également qu'il utilise 127.0.1.1
le serveur DNS).
Il n'y en a pas /etc/*inetd.conf
, donc je ne sais pas quelle application sert ce port.
Il semble que dnsmasq
soit utilisé:
/usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces
--pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1
--conf-file=/var/run/NetworkManager/dnsmasq.conf --cache-size=0 --proxy-dnssec
--enable-dbus=org.freedesktop.NetworkManager.dnsmasq
--conf-dir=/etc/NetworkManager/dnsmasq.d
Tous les fichiers et dossiers de configuration sont vides. Depuis nslookup
dit, il utilise 127.0.1.1#53
mon hypothèse est que cela dnsmasq
fonctionne même sans configuration. Mais comment sait-il quel DNS parent interroger?
EDIT2 Désactiver dnsmasq
comme suggéré par harrymc n'a pas aidé. Alors j'ai couru strace ping
qui m'a donné cette sortie étrange (juste les parties intéressantes):
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 4
read(4, "127.0.0.1\tlocalhost\n#127.0.1.1\ta"..., 4096) = 613
...
open("/lib/libnss_mdns4_minimal.so.2", O_RDONLY|O_CLOEXEC) = 4
read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\f\0\0\0\0\0\0"..., 832) = 832
...
mmap(NULL, 2105560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7f7829b00000
...
socket(PF_FILE, SOCK_STREAM, 0) = 4
fcntl(4, F_GETFD) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
connect(4, {sa_family=AF_FILE, path="/var/run/avahi-daemon/socket"}, 110) = 0
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fstat(4, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f782a4f8000
lseek(4, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "RESOLVE-HOSTNAME-IPV4 domain.com"..., 44) = 44
read(4, "-15 Timeout reached\n", 4096) = 20
Alors ping
regarde dans /etc/hosts
ce qui a du sens. Ensuite, il charge et mmap()
s /lib/libnss_mdns4_minimal.so.2
ce qui est logique aussi.
Mais alors il parle à avahi!?
Ce qui m'a amené à ce post sur le forum: ping ne fait pas de demande DNS .
Mon /etc/nsswitch.conf
contient également cette ligne:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Si je ping
travaille une adresse, je vois que le processus se charge également, /lib/libnss_mdns4_minimal.so.2
mais ensuite, il effectue une requête DNS via le port 53.
Donc, je suppose que maintenant, c'est en /lib/libnss_mdns4_minimal.so.2
quelque sorte de remarquer que l'adresse IP se termine par .local
et non par .com
, puis [NOTFOUND=return]
est déclenchée.
Comment puis-je réparer ça?
/etc/resolv.conf
?wget
.nslookup
ouhost
peut résoudre le nom et toute autre chose sur le système ne peut pas./etc/NetworkManager/NetworkManager.conf
et commentez ladns=dnsmasq
ligne (mettez un # devant) puis faites unsudo restart network-manager
. Cela désactive le résolveur local. ( source )Réponses:
Comme décrit en détail dans cet article de blog , vous devez modifier
/etc/avahi/avahi-daemon.conf
:Cela lie le démon au domaine
.alocal
au lieu de celui par défaut.local
.et redémarrez le démon avec:
Note du billet de blog:
Après cela,
ping
et anslookup
commencé à être d'accord.Merci à Harrymc de m'avoir mis sur la bonne voie.
la source
ping
nssnslookup
ne sera pas utilisé . (il utilise lwres et, bien, bind, pour parler directement à un résolveur)Modifier /etc/nsswitch.conf et remplacer:
par:
a travaillé pour moi.
la source
Chose facile à faire: Modifier
/etc/default/avahi-daemon
Changer la ligne:
à
Redémarrez le
avahi-daemon
, ou tuez-le.Je n'aime pas Avahi et je n'utilise aucune de ses fonctionnalités. Si vous voulez vraiment désactiver avahi, modifiez
/etc/init/avahi-daemon.conf
-le comme suit:la source
il semble que l'adresse locale ne soit pas accessible à Ubuntu.
une solution consiste à modifier
/etc/nsswitch.conf
et à modifier cette ligne:par ça :
la source
Si vous ne partagez pas de connexion avec d'autres périphériques ou machines virtuelles via votre ordinateur, vous pouvez désactiver Dnsmasq dans Network Manager.
Editez
/etc/NetworkManager/NetworkManager.conf
et commentez la ligne (mettez un # devant elle):Alors fais :
Cela désactive le résolveur local.
Source: DNS dans Ubuntu 12.04 .
la source
Plutôt bien, mais les autres réponses sont excessives. La solution simple est d’enlever le bit effectivement déclenché, c’est-à-dire de retirer simplement
[NOTFOUND=return]
.Si vous le supprimez, cela signifie que si cette valeur est
mdns4_minimal
renvoyéeNOTFOUND
, l’entrée suivante de la liste du résolveur est utilisée. C'est le comportement normal.[NOTFOUND=return]
est une optimisation pour échouer plus rapidement sur des noms inconnus mais suppose que tous les.local
noms sont dans mDNS.la source
J'ai eu un cas intéressant avec les mêmes symptômes (ping, montage, etc. ne fonctionnant pas, mais hôte, travail de fouille). Vérifier les autorisations sur fichier /etc/resolv.conf . Dans mon cas, quelqu'un l'a changé et je n'avais pas le droit de le lire (bien
cat /etc/resolv.conf
que la modification du fichier a bien fonctionné).Quoi qu'il en soit, strace montrait:
Et en conséquence, il essayait d'interroger localhost (127.0.0.1) au lieu d'une adresse IP du serveur de noms à partir du fichier resolv.conf:
Et tcpdump n’affichait aucun trafic DNS lors du ping. Tout fonctionne après un correctif d'autorisation:
Un autre problème peut être les attributs étendus du fichier ou tout autre problème d'accès. Dans ce cas, supprimez simplement le fichier /etc/resolv.conf et recréez-le à partir de zéro.
la source
x
drapeau et que, par conséquent, de nombreux fichiers binaires ne se comportent pas correctement. Le correctif étaitchmod +x /*
.Une autre raison est le format de
/etc/hosts
. Assurez-vous qu'il n'y a pas d'espace entre l'IP et le nom d'hôte, utilisez plutôt une tabulation. Après avoir changé pour TAB, le nom d'hôte peut être résolu par ping.la source
Installez avahi-daemon sur Ubuntu pour pouvoir atteindre le nom
ubuntu.local
d'hôte à partir du système d'exploitation hôtesudo apt-get installer avahi-daemon avahi-decouvrir avahi-utils libnss-mdns mdns-scan
la source