Busybox ping IP'si çalışıyor, ancak nslookup ana bilgisayar adı "hatalı adres" ile başarısız oluyor


14

Kendi 3.14 çekirdeğimi derliyorum. DNS'nin çalışmasını sağlamak için bazı önemli ağ oluşturma özelliklerini bırakmış olabileceğimden korkuyorum.

Alan adlarını çözemiyorum. DNS sunucuma ping atabilirim. Bu DNS'yi diğer makinelerde kullanarak çözebilirim, böylece sunucu olmadığını biliyorum.

~ # 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

Dışarıda ne bıraktığım hakkında bir fikrin var mı? İşte benim yapılandırma: http://pastebin.com/vt4vGTgJ

DÜZENLE :

Çekirdek değilse, ne eksik olabilirim? Statik bağlantılı, meşgul kutusu kullanıyorum. bu sistemde paylaşılan kitaplık yok.


Yapılandırılmış bir güvenlik duvarınız var mı? Öyleyse, bağlantı noktası 53 UDP / TCP'yi engelliyor musunuz?
Jenny D

Güvenlik duvarı yok, bağlantı noktası 53'te blok yok. DNS'ye aynı alt ağdaki başka bir makineden erişebilirim.
AllenKll

Bildiğim kadarıyla DNS fonksiyonunu çekirdeğinizden .config-options ile devre dışı bırakamazsınız.
Bonsi Scott

1
DNS sunucunuz @ 192.168.13.5'in yinelemeli sorgulara izin verdiğinden emin misiniz? Örneğin, dig @192.168.13.5 www.google.comek bilgi alırsanız? Diğer makinelerinizden DNS sunucunuz 192.168.13.5'e karşı özyinelemeli sorgular yapabilir misiniz?
Chipster

1
çekirdeğiniz iyi görünüyor, ancak DNS çözümlemeniz çalışmıyor. Ad sunucusu IP'sini DHCP'den aldınız mı? rota ayarlandı mı? farklı bir ad sunucusu deneyin nameserver 8.8.8.8.

Yanıtlar:


6

Sorun meşgul kutusuyla ilgili. Önceden derlenmiş bir sürüme geçtim ve sorun yaşamadım. Onunla derleme seçeneklerine bakmam gerekiyor. Yardımın için teşekkürler.

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

Statik bağlantılı glibc programlarında (bu durumda meşgul kutusu gibi) DNS işlevselliğiyle ilgili bilinen sorunlar vardır, çünkü libnss dinamik olarak yüklenmelidir. Bir uClibc araç zinciri oluşturmak ve buna meşgul kutusunu bağlamak bu sorunu çözecektir.


Bu cevabı doğrulamak için gerçekten meşgul kutusunu uClibc'e karşı mı derlediniz, yoksa en mantıklı cevap mı?
Tim

Bunu test etmedim. Önceden önerilen sürüm sorunlarım için çalıştı.
AllenKll

2

Aynı sorunla karşılaştım ve busybox resolv.conf biçimi hakkında seçici olduğu ortaya çıkıyor. Nslookup öğesinin çalışması için ad sunucusu etiketi ile adres arasında tam olarak bir boşluk olmalıdır. Ayrıca /etc/nsswitch.conf, ana bilgisayar için dns içermelidir.

[meşgul kutusu yöneticisi (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 

Evet soru eski, ancak mevcut meşgul kutusu hala bu şekilde davranıyor.

[Resolv.conf dosyasındaki boşluk sayısını göstermek için aşağıda xxd kullandım]

Bu başarısız olur:

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'

ve bu işe yarıyor:

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

0

Bu aynı sorun olup olmadığından emin değilim, ama son zamanlarda OpenBSD 3.8'den 5.6'ya eski dahili DNS sunucu sistemini yükselttim ve ana bilgisayarları ping ile çözme yeteneğini kaybettim, ancak host komutu çalışıyordu. Görünüşe göre, önceden sahip olduğum 192.168.0.0/16'ya ek olarak, adlandırılmış maç istemcileri direktifine 127.0.0.1/8 eklemek zorunda kaldım ve daha sonra adlandırılmış yeniden başlattıktan sonra düzgün çalışmaya başladı.


0

Ben de aynı problemi yaşadım. Dosya sistemini oluşturmak, çekirdeği derlemek ve busybox ile ekstra paketler eklemek için buildroot kullandım.

Sadece bir IP adresine ping atabiliyordum. Url ile ping komutu döndürdü: bad address error. Sonra resolv.confdosyayı değiştirdim .

sudo vim /etc/resolv.conf

nameserver gateway_ip_address
nameserver 8.8.8.8
nameserver 8.8.4.4

Ve her şey yolunda gitti.


1
Bu benim için problemi çözmüyor gibi görünüyor. OP'nin belirttiği gibi, statik olarak bağlandığında çalışmayan libns'lara bağlı gibi görünüyor. Meşgul kutusunu uclibc (ve udhcpc) ​​ile derlemek sorunu benim için çözüyor gibi görünüyor.
Attila O.

0

Aynı belirtileri düzenleyerek /etc/nsswitch.confve aşağıdaki satıra DNS ekleyerek çözdüm:

hosts:      files dns

-1

sudo vim /etc/resolv.conf resolv.conf dosyasını düzenlemek için, ad sunucusu adreslerinin (ve 'ad sunucusu' anahtar kelimesinin yanı sıra) aşağıdaki gibi bir virgülle değil, tek bir boşlukla ayrıldığından emin olun:

nameserver 8.8.8.8 8.8.4.4
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.