ping
mó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 host
lub nslookup
na 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 wget
i ping
ten sam problem. Pingowanie adresu IP działa.
System operacyjny: Linux (Ubuntu 13.04)
EDYCJA Moje /etc/resolv.conf
czyta:
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 ( nslookup
informuje również, że używa go 127.0.1.1
jako serwera DNS).
Nie ma /etc/*inetd.conf
, więc nie jestem pewien, która aplikacja obsługuje ten port.
Wydaje się, że dnsmasq
jest 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ż nslookup
mówi, że używa, 127.0.1.1#53
domyślam się, że dnsmasq
działa nawet bez konfiguracji. Ale skąd ma wiedzieć, którego nadrzędnego DNS zapytać?
EDIT2 Wyłączenie dnsmasq
sugerowane przez harrymc nie pomogło. Uruchomiłem więc, strace ping
co 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
ping
Wygląda więc w /etc/hosts
sensie. Następnie ładuje i mmap()
s /lib/libnss_mdns4_minimal.so.2
co 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.conf
zawiera również ten wiersz:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Jeśli mam ping
działający adres, widzę, że proces również się ładuje, /lib/libnss_mdns4_minimal.so.2
ale następnie wykonuje zapytanie DNS przez port 53.
Domyślam się więc, że w /lib/libnss_mdns4_minimal.so.2
jakiś sposób zauważam, że adres IP kończy się na, .local
a nie na, .com
a następnie [NOTFOUND=return]
następuje wyzwolenie.
Jak to naprawić?
wget
.
nslookup
lub w jaki sposób host
mogę rozwiązać nazwę i cokolwiek innego w systemie, nie może.
/etc/NetworkManager/NetworkManager.conf
i komentuj dns=dnsmasq
linię (wstaw # przed nią), a następnie zrób sudo restart network-manager
. To wyłączy lokalny resolver. ( źródło )
/etc/resolv.conf
?