ping
sagt mir, dass es einige Hostnamen ("ping: unknown host domain.company.local") in einer URL nicht auflösen kann, aber wenn ich host
oder nslookup
auf demselben Computer in der Befehlszeile verwende, funktionieren die Auflösungen einwandfrei (dh es ist schnell und zuverlässig) ).
Was könnte das verursachen?
Weitere Tests: Firefox wget
und ping
haben das gleiche Problem. Das Pingen der IP-Adresse funktioniert.
Betriebssystem: Linux (Ubuntu 13.04)
BEARBEITEN Meine /etc/resolv.conf
liest:
nameserver 127.0.1.1
search domain.company.local
netstat
Berichte:
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 -
Auf diesem Port läuft also etwas ( nslookup
meldet auch, dass er 127.0.1.1
als DNS-Server verwendet wird).
Es gibt keine /etc/*inetd.conf
, daher bin ich mir nicht sicher, welche Anwendung diesen Port bedient.
Es scheint, dass dnsmasq
verwendet wird:
/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
Alle Konfigurationsdateien und -ordner sind leer. Da nslookup
sagt es nutzt 127.0.1.1#53
meine Vermutung, dass dnsmasq
das auch ohne Konfiguration funktioniert. Aber woher weiß es, welches übergeordnete DNS abgefragt werden soll?
EDIT2 Deaktivieren dnsmasq
wie von harrymc vorgeschlagen hat nicht geholfen. Also lief ich, strace ping
was mir diese seltsame Ausgabe brachte (nur die interessanten Teile):
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
Also ping
schaut /etc/hosts
was Sinn macht. Dann lädt und mmap()
s /lib/libnss_mdns4_minimal.so.2
was auch Sinn macht.
Aber dann spricht es mit Avahi !?
Was mich zu diesem Forumbeitrag geführt hat: Ping stellt keine DNS-Anfrage .
Meine /etc/nsswitch.conf
enthält auch diese Zeile:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Wenn ich ping
eine Arbeitsadresse habe, sehe ich, dass der Prozess auch geladen wird, /lib/libnss_mdns4_minimal.so.2
aber dann führt er eine DNS-Abfrage über Port 53 durch.
Also meine Vermutung ist jetzt, dass /lib/libnss_mdns4_minimal.so.2
irgendwie auffällt, dass die IP-Adresse mit .local
und nicht mit endet .com
und dann das [NOTFOUND=return]
ausgelöst wird.
Wie behebe ich das?
/etc/resolv.conf
?wget
.nslookup
oder wie ichhost
den Namen auflösen kann und alles andere auf dem System nicht./etc/NetworkManager/NetworkManager.conf
und kommentieren Sie diedns=dnsmasq
Zeile (setzen Sie ein # davor) und machen Sie dann einsudo restart network-manager
. Dadurch wird der lokale Resolver ausgeschaltet. ( Quelle )Antworten:
Wie in diesem Blog-Beitrag ausführlich beschrieben , müssen Sie Folgendes bearbeiten
/etc/avahi/avahi-daemon.conf
:Dadurch wird der Dämon an die Domäne
.alocal
anstatt an die Standarddomäne gebunden.local
.und starte den Daemon neu mit:
Anmerkung aus dem Blogbeitrag:
Danach,
ping
undnslookup
zu einigen gestartet.Vielen Dank an harrymc, dass sie mich auf den richtigen Weg gebracht haben.
quelle
ping
wird nss verwenden,nslookup
nicht. (Es verwendet LWRES und, na ja, binden, um direkt mit einem Resolver zu sprechen)/Etc/nsswitch.conf ändern und ersetzen:
durch:
arbeitete für mich.
quelle
Einfach zu machen: Bearbeiten
/etc/default/avahi-daemon
Ändern Sie die Zeile:
zu
Starten Sie das neu
avahi-daemon
oder töten Sie es.Ich mag Avahi nicht und verwende keine seiner Funktionen. Wenn Sie avahi wirklich deaktivieren möchten, ändern Sie es
/etc/init/avahi-daemon.conf
wie folgt:quelle
Es scheint, dass die lokale Adresse in Ubuntu nicht zugänglich ist.
Eine Lösung besteht darin,
/etc/nsswitch.conf
diese Zeile zu bearbeiten und zu ändern:dadurch :
quelle
Wenn Sie keine Verbindung mit anderen Geräten oder VMs über Ihren Computer freigeben, können Sie dnsmasq in Network Manager deaktivieren.
Bearbeiten
/etc/NetworkManager/NetworkManager.conf
und kommentieren Sie die Zeile (setzen Sie ein # davor):Dann mach :
Dadurch wird der lokale Resolver ausgeschaltet.
Quelle: DNS in Ubuntu 12.04 .
quelle
Ziemlich gut geraten, aber die anderen Antworten sind übertrieben. Die einfache Lösung besteht darin, das tatsächlich ausgelöste Bit zu entfernen, dh nur zu entfernen
[NOTFOUND=return]
.Entfernen bedeutet, dass bei
mdns4_minimal
RückkehrNOTFOUND
der nächste Eintrag in der Auflösungsliste verwendet wird. Dies ist das normale Verhalten.[NOTFOUND=return]
ist eine Optimierung, die bei unbekannten Namen schneller fehlschlägt, jedoch davon ausgeht, dass alle.local
Namen in mDNS sind.quelle
Ich hatte einen interessanten Fall mit den gleichen Symptomen (Ping, Mount usw. funktioniert nicht, aber Host, Dig arbeiten). Überprüfen Sie die Berechtigungen für die Datei /etc/resolv.conf . In meinem Fall hat es jemand geändert und ich hatte keine Rechte, es zu lesen (obwohl
cat /etc/resolv.conf
und das Bearbeiten der Datei gut funktionierte).Wie auch immer, Strace zeigte:
Infolgedessen wurde versucht, localhost (127.0.0.1) anstelle einer IP-Adresse des Nameservers aus der Datei resolv.conf abzufragen:
Und tcpdump zeigte beim Pingen keinen DNS-Verkehr an. Alles funktioniert nach einer Berechtigungskorrektur:
Ein weiteres Problem können erweiterte Attribute der Datei oder andere Zugriffsprobleme sein. In diesem Fall löschen Sie einfach die Datei /etc/resolv.conf und erstellen Sie sie neu.
quelle
x
Flag verloren hatten und sich daher viele Binärdateien nicht richtig verhielten. Das Update warchmod +x /*
.Ein weiterer Grund ist das Format von
/etc/hosts
. Stellen Sie sicher, dass zwischen IP und Hostname keine Leerzeichen stehen, und verwenden Sie stattdessen ein TAB. Nach dem Wechsel zu TAB konnte der Hostname durch Ping aufgelöst werden.quelle
Richten Sie den avahi-daemon unter Ubuntu ein, damit Sie den Hostnamen
ubuntu.local
vom Host-Betriebssystem aus erreichen könnensudo apt-get installiere avahi-daemon avahi-entdecke avahi-utils libnss-mdns mdns-scan
quelle