Busybox ping IP berfungsi, tetapi hostname nslookup gagal dengan “bad address”

14

Saya mengkompilasi kernel 3.14 saya sendiri. Saya khawatir saya mungkin telah meninggalkan beberapa fitur jaringan yang penting agar DNS berfungsi.

Saya tidak dapat menyelesaikan nama domain. Saya dapat melakukan ping ke server DNS saya. Saya bisa menyelesaikan menggunakan DNS itu di komputer lain jadi saya tahu itu bukan server.

~ # cat /etc/resolv.conf
nameserver 192.168.13.5

~ # nslookup google.com
Server:    192.168.13.5
Address 1: 192.168.13.5

nslookup: can't resolve 'google.com'

~ # ping -c 1 google.com
ping: bad address 'google.com'

~ # ping -c 1 192.168.13.5 
PING 192.168.13.5 (192.168.13.5): 56 data bytes
64 bytes from 192.168.13.5: seq=0 ttl=128 time=0.382 ms

--- 192.168.13.5 ping ststistics ---
1 packets transmitted, 1 packets recieved, 0% packet loss
reound-trip min/avg/max = 0.382/0.382/0.382 ms

Adakah ide yang saya tinggalkan? di sini adalah konfigurasi saya: http://pastebin.com/vt4vGTgJ

EDIT :

Jika bukan kernel, apa yang bisa saya lewatkan? Saya menggunakan busybox, ditautkan secara statis. tidak ada perpustakaan bersama di sistem ini.

AllenKll
sumber
Apakah Anda memiliki firewall yang dikonfigurasi? Jika demikian, apakah Anda memblokir port 53 UDP / TCP?
Jenny D
Tidak ada firewall, tidak ada blok pada port 53. Saya dapat mengakses DNS dari komputer lain pada subnet yang sama.
AllenKll
Sejauh yang saya ketahui, Anda tidak bisa menonaktifkan fungsionalitas DNS dengan .config-options dari kernel Anda.
Bonsi Scott
1
Apakah Anda yakin bahwa server DNS Anda @ 192.168.13.5 mengizinkan kueri rekursif? Misalnya, apakah dig @192.168.13.5 www.google.comAnda mendapatkan informasi tambahan? Bisakah Anda melakukan kueri rekursif terhadap server DNS 192.168.13.5 dari komputer lain?
Chipster
1
kernel Anda tampaknya OK, tetapi penyelesaian DNS Anda tidak berfungsi. Apakah Anda memperoleh IP server nama dari DHCP? Apakah rute ditetapkan? coba misalnya server nama yang berbeda nameserver 8.8.8.8.

Jawaban:

6

Masalahnya dengan busybox. Saya beralih ke versi yang dikompilasi dan tidak memiliki masalah. Saya perlu melihat opsi kompilasi dengannya. Terima kasih atas bantuan Anda.

https://gist.github.com/vsergeev/2391575 :

Ada masalah yang diketahui dengan fungsi DNS dalam program glibc yang terhubung secara statis (seperti busybox dalam kasus ini), karena libns harus dimuat secara dinamis. Membangun toolchain uClibc dan menghubungkan busybox dengan yang akan menyelesaikan ini.

AllenKll
sumber
Apakah Anda benar-benar mengkompilasi busybox terhadap uClibc untuk memverifikasi jawaban ini, atau apakah itu sepertinya yang paling masuk akal?
Tim
Saya tidak menguji ini. Versi precomoiled berfungsi untuk masalah saya.
AllenKll
2

Saya mengalami masalah yang sama dan ternyata busybox pilih-pilih tentang format untuk resolv.conf. Pasti ada satu kosong antara tag server nama dan alamat agar nslookup berfungsi. Selain itu /etc/nsswitch.conf harus menyertakan dns untuk host.

[busybox master (git hash 349d72c19) sysroot-glibc-linaro-2.25-2018.05-arm-linux-gnueabihf]

root@4000000a:~# cat /etc/nsswitch.conf 
passwd:    files compat
shadow:    files compat
hosts:    files dns compat 

Ya pertanyaannya sudah lama, tetapi busybox saat ini masih berlaku seperti ini.

[Saya menggunakan xxd di bawah ini untuk menunjukkan jumlah kosong di resolv.conf]

Ini gagal:

root@4000000a:~# xxd /etc/resolv.conf
00000000: 6e61 6d65 7365 7276 6572 2020 382e 382e  nameserver  8.8.
00000010: 382e 380a                                8.8.
root@4000000a:~# nslookup  www.cnn.com 
nslookup: bad address ' 8.8.8.8'

dan ini bekerja:

root@4000000a:~# xxd /etc/resolv.conf
00000000: 6e61 6d65 7365 7276 6572 2038 2e38 2e38  nameserver 8.8.8
00000010: 2e38 0a                                  .8.
root@4000000a:~# nslookup  www.cnn.com                
Server:     8.8.8.8
Address:    8.8.8.8:53

Non-authoritative answer:
www.cnn.com canonical name = turner-tls.map.fastly.net
Name:   turner-tls.map.fastly.net
Address: 151.101.1.67
Name:   turner-tls.map.fastly.net
Address: 151.101.65.67
Name:   turner-tls.map.fastly.net
Address: 151.101.129.67
Name:   turner-tls.map.fastly.net
Address: 151.101.193.67

Non-authoritative answer:
www.cnn.com canonical name = turner-tls.map.fastly.net
Name:   turner-tls.map.fastly.net
Address: 2a04:4e42::323
Name:   turner-tls.map.fastly.net
Address: 2a04:4e42:200::323
Name:   turner-tls.map.fastly.net
Address: 2a04:4e42:400::323
Name:   turner-tls.map.fastly.net
Address: 2a04:4e42:600::323
sgrefen
sumber
0

Saya tidak yakin apakah ini masalah yang sama dengan yang saya alami atau tidak, tetapi saya baru-baru ini memutakhirkan dan sistem server DNS internal lama dari OpenBSD 3.8 ke 5.6, dan saya kehilangan kemampuan untuk menyelesaikan host dengan ping, tetapi perintah host bekerja. Ternyata saya harus menambahkan 127.0.0.1/8 ke direktif pertandingan-klien dalam nama selain 192.168.0.0/16 yang sudah saya miliki di sana, dan kemudian mulai berfungsi dengan baik setelah restart dinamai.

RedScourge
sumber
0

Saya memiliki masalah yang sama. Saya telah menggunakan buildroot untuk membangun sistem file, untuk mengkompilasi kernel dan untuk menambahkan paket tambahan dengan busybox.

Saya hanya bisa melakukan ping ke alamat ip. Dengan url perintah ping kembali: bad address error. Lalu saya mengubah resolv.conffile.

sudo vim /etc/resolv.conf

nameserver gateway_ip_address
nameserver 8.8.8.8
nameserver 8.8.4.4

Dan semuanya bekerja dengan baik.

UserK
sumber
1
Tampaknya itu tidak menyelesaikan masalah bagi saya. Seperti yang disebutkan OP, tampaknya libns tidak berfungsi saat terhubung secara statis. Mengkompilasi busybox dengan uclibc (dan udhcpc) ​​tampaknya bisa menyelesaikan masalah bagi saya.
Attila O.
0

Saya mengatasi gejala yang sama dengan mengedit: /etc/nsswitch.confdan menambahkan DNS ke baris berikut:

hosts:      files dns
Burma
sumber
-1

sudo vim /etc/resolv.conf untuk mengedit resolv.conf, pastikan alamat nameserver (serta kata kunci 'nameserver') dipisahkan oleh satu spasi, bukan koma, seperti di bawah ini:

nameserver 8.8.8.8 8.8.4.4
Steve Shen
sumber