pingmówi mi, że nie może rozwiązać niektórych nazw hostów („ping: nieznany host domain.company.local”) w adresie URL, ale kiedy używam hostlub nslookupna tym samym komputerze w wierszu poleceń, rozdzielczości działają dobrze (tzn. są szybkie i niezawodne ).
Co może być tego przyczyną?
Więcej testów: Firefox wgeti pingten sam problem. Pingowanie adresu IP działa.
System operacyjny: Linux (Ubuntu 13.04)
EDYCJA Moje /etc/resolv.confczyta:
nameserver 127.0.1.1
search domain.company.local
netstat raporty:
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 -
więc coś działa na tym porcie ( nslookupinformuje również, że używa go 127.0.1.1jako serwera DNS).
Nie ma /etc/*inetd.conf, więc nie jestem pewien, która aplikacja obsługuje ten port.
Wydaje się, że dnsmasqjest używany:
/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
Wszystkie pliki konfiguracyjne i foldery są puste. Ponieważ nslookupmówi, że używa, 127.0.1.1#53domyślam się, że dnsmasqdziała nawet bez konfiguracji. Ale skąd ma wiedzieć, którego nadrzędnego DNS zapytać?
EDIT2 Wyłączenie dnsmasqsugerowane przez harrymc nie pomogło. Uruchomiłem więc, strace pingco dało mi ten dziwny wynik (tylko interesujące części):
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
pingWygląda więc w /etc/hostssensie. Następnie ładuje i mmap()s /lib/libnss_mdns4_minimal.so.2co ma sens, jak również.
Ale potem rozmawia z avahi !?
Co doprowadziło mnie do tego postu na forum: ping nie wysyła żądania dns .
Mój /etc/nsswitch.confzawiera również ten wiersz:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Jeśli mam pingdziałający adres, widzę, że proces również się ładuje, /lib/libnss_mdns4_minimal.so.2ale następnie wykonuje zapytanie DNS przez port 53.
Domyślam się więc, że w /lib/libnss_mdns4_minimal.so.2jakiś sposób zauważam, że adres IP kończy się na, .locala nie na, .coma następnie [NOTFOUND=return]następuje wyzwolenie.
Jak to naprawić?
wget.
nslookuplub w jaki sposób hostmogę rozwiązać nazwę i cokolwiek innego w systemie, nie może.
/etc/NetworkManager/NetworkManager.confi komentuj dns=dnsmasqlinię (wstaw # przed nią), a następnie zrób sudo restart network-manager. To wyłączy lokalny resolver. ( źródło )
/etc/resolv.conf?