Busybox ping IP funziona, ma il nome host nslookup non riesce con "indirizzo errato"


14

Sto compilando il mio kernel 3.14. Temo di aver lasciato fuori alcune importanti funzionalità di rete per far funzionare il DNS.

Non riesco a risolvere i nomi di dominio. Posso eseguire il ping del mio server DNS. Posso risolvere usando quel DNS su altre macchine, quindi so che non è il 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

Qualche idea su cosa ho lasciato fuori? ecco la mia configurazione: http://pastebin.com/vt4vGTgJ

MODIFICA :

Se non è il kernel, cosa potrei perdere? Sto usando busybox, collegato staticamente. non ci sono librerie condivise in questo sistema.


Hai qualche firewall configurato? In tal caso, blocchi la porta 53 UDP / TCP?
Jenny D,

Nessun firewall, nessun blocco sulla porta 53. Posso accedere al DNS da un'altra macchina sulla stessa sottorete.
AllenKll,

Per quanto ne so, non puoi semplicemente disabilitare la funzionalità DNS con .config-options dal tuo kernel.
Bonsi Scott,

1
Sei sicuro che il tuo server DNS @ 192.168.13.5 consenta query ricorsive? Ad esempio, se dig @192.168.13.5 www.google.comricevi ulteriori informazioni? È possibile eseguire query ricorsive sul server DNS 192.168.13.5 da altre macchine?
Chipster

1
il kernel sembra essere a posto, ma la risoluzione DNS non funziona. Hai ottenuto l'IP del nameserver da DHCP? è impostato il percorso? provare un nameserver diverso, ad es nameserver 8.8.8.8.

Risposte:


6

Il problema è con busybox. Sono passato a una versione precompilata e non ho avuto problemi. Ho bisogno di esaminare le opzioni di compilazione con esso. Grazie per l'aiuto.

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

Esistono problemi noti con la funzionalità DNS nei programmi glibc collegati staticamente (come in questo caso la scatola occupata), poiché libnss deve essere caricato dinamicamente. Costruire una toolchain uClibc e collegare contro busybox per risolvere questo problema.


Hai effettivamente compilato busybox contro uClibc per verificare questa risposta o ti è sembrata la più plausibile?
Tim

Non l'ho provato. La versione precomposta ha funzionato per i miei problemi.
AllenKll,

2

Ho riscontrato lo stesso problema e risulta che busybox è esigente riguardo al formato per resolv.conf. Deve esserci esattamente uno spazio tra il tag nameserver e l'indirizzo affinché nslookup funzioni. Inoltre /etc/nsswitch.conf deve includere dns per l'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 

Sì, la domanda è vecchia, ma l'attuale busybox si comporta ancora in questo modo.

[Ho usato xxd di seguito per mostrare il numero di spazi vuoti in resolv.conf]

Questo fallisce:

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'

e questo funziona:

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

Non sono sicuro se questo è lo stesso problema che ho avuto o meno, ma di recente ho aggiornato il vecchio sistema di server DNS interno da OpenBSD 3.8 a 5.6 e ho perso la capacità di risolvere gli host con ping, ma il comando host funzionava. Alla fine ho dovuto aggiungere 127.0.0.1/8 alla direttiva match-client in nome oltre al 192.168.0.0/16 che avevo già lì, e poi ha iniziato a funzionare correttamente dopo il riavvio di named.


0

Ho avuto lo stesso problema. Ho usato buildroot per compilare il filesystem, compilare il kernel e aggiungere pacchetti extra con busybox.

Sono stato solo in grado di eseguire il ping di un indirizzo IP. Con il comando ping URL restituito: bad address error. Quindi ho cambiato il resolv.conffile.

sudo vim /etc/resolv.conf

nameserver gateway_ip_address
nameserver 8.8.8.8
nameserver 8.8.4.4

E tutto ha funzionato bene.


1
Ciò non sembra risolvere il problema per me. Come menzionato da OP, sembra che libnss non funzioni quando è staticamente collegato. Compilare busybox con uclibc (e udhcpc) ​​sembra risolvere il problema per me.
Attila O.,

0

Ho risolto gli stessi sintomi modificando: /etc/nsswitch.confe aggiungendo DNS alla seguente riga:

hosts:      files dns

-1

sudo vim /etc/resolv.conf per modificare resolv.conf, assicurati che gli indirizzi dei nameserver (così come la parola chiave 'nameserver') siano separati da un singolo spazio, non da una virgola, come di seguito:

nameserver 8.8.8.8 8.8.4.4
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.