pingmemberitahu saya bahwa itu tidak dapat menyelesaikan beberapa nama host ("ping: unknown host domain.company.local") di URL tetapi ketika saya menggunakan hostatau nslookupdi komputer yang sama pada baris perintah, resolusi berfungsi dengan baik (yaitu cepat dan dapat diandalkan ).
Apa yang menyebabkan ini?
Lebih banyak pengujian: Firefox, wgetdan pingmemiliki masalah yang sama. Mem-ping alamat IP berfungsi.
OS: Linux (Ubuntu 13.04)
Sunting Saya /etc/resolv.confmembaca:
nameserver 127.0.1.1
search domain.company.local
netstat laporan:
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 -
jadi ada sesuatu yang berjalan pada port ini ( nslookupjuga melaporkan digunakan 127.0.1.1sebagai server DNS).
Tidak ada /etc/*inetd.conf, jadi saya tidak yakin aplikasi mana yang melayani port ini.
Tampaknya yang dnsmasqdigunakan:
/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
Semua file dan folder konfigurasi kosong. Karena nslookupkatanya menggunakan 127.0.1.1#53tebakan saya yang dnsmasqbekerja bahkan tanpa konfigurasi. Tapi bagaimana cara mengetahui DNS induk yang diminta?
EDIT2 Menonaktifkan dnsmasqseperti yang disarankan oleh harrymc tidak membantu. Jadi saya berlari strace pingyang memberi saya output aneh ini (hanya bagian yang menarik):
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
Jadi pingterlihat /etc/hostsmasuk akal. Maka beban dan mmap()s /lib/libnss_mdns4_minimal.so.2yang masuk akal juga.
Tapi kemudian dia berbicara untuk avahi !?
Yang membawa saya ke posting forum ini: ping tidak membuat permintaan dns .
Saya /etc/nsswitch.confjuga mengandung baris ini:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Jika saya pingalamat yang berfungsi, saya melihat bahwa proses juga memuat /lib/libnss_mdns4_minimal.so.2tetapi kemudian, ia melakukan permintaan DNS melalui port 53.
Jadi tebakan saya sekarang /lib/libnss_mdns4_minimal.so.2adalah entah bagaimana memperhatikan bahwa alamat IP berakhir dengan .localdan tidak dengan .comdan kemudian [NOTFOUND=return]dipicu.
Bagaimana cara saya memperbaikinya?
wget.
nslookupatau hostbisa menyelesaikan nama dan hal lain pada sistem tidak bisa.
/etc/NetworkManager/NetworkManager.confdan komentari dns=dnsmasqbaris (beri tanda # di depannya) lalu lakukan a sudo restart network-manager. Itu akan mematikan resolver lokal. ( sumber )
/etc/resolv.conf?