Busybox pinging IP は機能しますが、ホスト名 nslookup は「無効なアドレス」のため失敗します。

Busybox pinging IP は機能しますが、ホスト名 nslookup は「無効なアドレス」のため失敗します。

私は自分の3.14カーネルをコンパイルしています。 DNSが正しく機能するようにするいくつかの重要なネットワーキング機能が欠けていないか心配です。

ドメイン名を解決できません。私のDNSサーバーをpingできます。そのDNSを使用して他のコンピュータで確認できるため、サーバーではないことがわかります。

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

私が逃したアイデアはありますか?私の設定は次のとおりです。http://pastebin.com/vt4vGTgJ

編集する:

カーネルでない場合、何を見逃すことができますか?私はbusybox、静的接続を使用しています。このシステムには共有ライブラリはありません。

答え1

問題はビジボックスにあります。プリコンパイルされたバージョンに切り替えましたが、問題はありませんでした。コンパイルオプションを調べる必要があります。ご協力ありがとうございます。

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

libnssは動的にロードする必要があるため、静的にリンクされたglibcプログラム(この場合はbusybox)にはDNS機能に既知の問題があります。 uClibcツールチェーンを構築し、ここにbusyboxを接続すると、この問題は解決されます。

答え2

/etc/nsswitch.conf次の行を編集し、DNSを追加して同じ症状を解決しました。

hosts:      files dns

答え3

私は同じ問題があり、busyboxがresolv.confの形式に対して難しいことがわかりました。 nslookupが正常に機能するには、ネームサーバータグとアドレスの間に1つのスペースが必要です。また、/etc/nsswitch.confにはホストのDNSが含まれている必要があります。

[ ビジボックスマスター(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 

はい、この質問は古いですが、現在busyboxの場合はまだそうです。

[resolv.confの空白数を表示するには、以下のxxdを使用します。]

失敗します。

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'

これは働きます:

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

答え4

私も同じ問題があります。私はbuildrootを使ってファイルシステムを構築し、カーネルをコンパイルし、busyboxを使って追加のパッケージを追加します。

1つのIPアドレスしかpingできません。 pingコマンドはurl:を返しますbad address error。その後、resolv.confファイルを変更しました。

sudo vim /etc/resolv.conf

nameserver gateway_ip_address
nameserver 8.8.8.8
nameserver 8.8.4.4

みんな大丈夫です。

関連情報