Busybox-Ping-IP funktioniert, aber Hostname nslookup schlägt mit "falscher Adresse" fehl


14

Ich kompiliere meinen eigenen 3.14-Kernel. Ich fürchte, ich habe einige wichtige Netzwerkfunktionen ausgelassen, damit DNS funktioniert.

Ich kann keine Domainnamen auflösen. Ich kann meinen DNS-Server anpingen. Ich kann die Verwendung dieses DNS auf anderen Computern beheben, damit ich weiß, dass es nicht der Server ist.

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

Irgendwelche Ideen, was ich ausgelassen habe? Hier ist meine Konfiguration: http://pastebin.com/vt4vGTgJ

EDIT :

Wenn es nicht der Kernel ist, was könnte ich vermissen? Ich benutze eine Busybox, die statisch verlinkt ist. In diesem System gibt es keine gemeinsam genutzten Bibliotheken.


Haben Sie eine Firewall konfiguriert? Wenn ja, blockieren Sie Port 53 UDP / TCP?
Jenny D

Keine Firewall, kein Block an Port 53. Ich kann von einem anderen Computer im selben Subnetz auf den DNS zugreifen.
AllenKll

Soweit ich weiß, können Sie die DNS-Funktionalität nicht einfach über die .config-Optionen Ihres Kernels deaktivieren.
Bonsi Scott

1
Sind Sie sicher, dass Ihr DNS-Server @ 192.168.13.5 rekursive Abfragen zulässt? Wenn Sie zum Beispiel dig @192.168.13.5 www.google.comzusätzliche Informationen erhalten? Können Sie von anderen Computern aus rekursive Abfragen für Ihren DNS-Server 192.168.13.5 durchführen?
Chipster

1
Ihr Kernel scheint in Ordnung zu sein, aber Ihre DNS-Auflösung funktioniert nicht. Haben Sie die Nameserver-IP von DHCP erhalten? ist die Route festgelegt? versuchen Sie einen anderen Nameserver dh nameserver 8.8.8.8.

Antworten:


6

Das Problem ist mit der Busybox. Ich habe zu einer vorkompilierten Version gewechselt und hatte keine Probleme. Ich muss damit in Kompilierungsoptionen suchen. Danke für Ihre Hilfe.

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

Es gibt bekannte Probleme mit der DNS-Funktionalität in statisch verknüpften glibc-Programmen (wie in diesem Fall busybox), da libnss dynamisch geladen werden muss. Das Erstellen einer uClibc-Toolchain und das Verknüpfen der Busybox damit würde das Problem beheben.


Haben Sie tatsächlich busybox gegen uClibc kompiliert, um diese Antwort zu überprüfen, oder schien es nur die plausibelste zu sein?
Tim

Ich habe das nicht getestet. Die vorkomprimierte Version hat für meine Probleme funktioniert.
AllenKll

2

Ich bin auf dasselbe Problem gestoßen, und es stellte sich heraus, dass busybox hinsichtlich des Formats für resolv.conf pingelig ist. Zwischen dem Nameserver-Tag und der Adresse muss genau ein Leerzeichen stehen, damit nslookup funktioniert. Außerdem muss /etc/nsswitch.conf DNS für den Host enthalten.

[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 

Ja, die Frage ist alt, aber die aktuelle Busybox verhält sich immer noch so.

[Ich habe xxd unten verwendet, um die Anzahl der Leerzeichen in der resolv.conf anzuzeigen]

Dies schlägt fehl:

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'

und das funktioniert:

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

Ich bin mir nicht sicher, ob dies dasselbe Problem ist, das ich hatte oder nicht, aber ich habe kürzlich ein Upgrade und ein altes internes DNS-Serversystem von OpenBSD 3.8 auf 5.6 durchgeführt, und ich habe die Fähigkeit verloren, Hosts mit Ping aufzulösen, aber der Hostbefehl funktionierte. Es stellte sich heraus, dass ich zusätzlich zu der 192.168.0.0/16, die ich bereits dort hatte, 127.0.0.1/8 zur match-clients-Direktive in named hinzufügen musste, und nach dem Neustart von named fing es an, ordnungsgemäß zu funktionieren.


0

Ich hatte das gleiche problem Ich habe buildroot verwendet, um das Dateisystem zu erstellen, den Kernel zu kompilieren und zusätzliche Pakete mit busybox hinzuzufügen.

Ich konnte nur eine IP-Adresse anpingen. Mit URL des Ping - Befehl zurückgegeben: bad address error. Dann habe ich die resolv.confDatei geändert .

sudo vim /etc/resolv.conf

nameserver gateway_ip_address
nameserver 8.8.8.8
nameserver 8.8.4.4

Und alles hat gut funktioniert.


1
Das scheint das Problem für mich nicht zu lösen. Wie OP erwähnt, scheint es darauf zurückzuführen zu sein, dass libnss bei statischer Verknüpfung nicht funktioniert. Das Kompilieren von busybox mit uclibc (und udhcpc) ​​scheint das Problem für mich zu lösen.
Attila O.

0

Ich habe die gleichen Symptome behoben, indem ich /etc/nsswitch.confFolgendes bearbeitet und DNS in die folgende Zeile eingefügt habe:

hosts:      files dns

-1

sudo vim /etc/resolv.conf Um die Datei resolv.conf zu bearbeiten, stellen Sie sicher, dass die Nameserver-Adressen (sowie das Schlüsselwort 'nameserver') durch ein einzelnes Leerzeichen und nicht durch ein Komma getrennt sind (siehe unten):

nameserver 8.8.8.8 8.8.4.4
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.