自分の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を使用しています。このシステムには共有ライブラリはありません。
問題はbusyboxにあります。コンパイル済みバージョンに切り替えても問題はありませんでした。コンパイルオプションを調べる必要があります。ご協力いただきありがとうございます。
https://Gist.github.com/vsergeev/2391575 :
Libnssを動的にロードする必要があるため、静的にリンクされたglibcプログラム(この場合はbusyboxなど)のDNS機能には既知の問題があります。 uClibcツールチェーンを構築し、busyboxをそれに対してリンクすると、これは解決します。
私は同じ問題に出くわしました、そして、busyboxがresolv.confのフォーマットについてうるさいことがわかりました。 nslookupが機能するためには、ネームサーバータグとアドレスの間に1つの空白が必要です。さらに、/ etc/nsswitch.confにはホストのDNSを含める必要があります。
[busyboxマスター(gitハッシュ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はまだこのように動作します。
[以下のxxdを使用して、resolv.confの空白の数を示しました]
これは失敗します:
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
同じ問題がありました。私はbuildrootを使用してファイルシステムを構築し、カーネルをコンパイルして、busyboxで追加のパッケージを追加しました。
IPアドレスのみをpingできました。 urlを使用すると、pingコマンドが返されます:bad address error
。次に、resolv.conf
ファイル。
Sudo vim /etc/resolv.conf
nameserver gateway_ip_address
nameserver 8.8.8.8
nameserver 8.8.4.4
そして、すべてがうまくいきました。
これが同じ問題であるかどうかはわかりませんが、最近、古い内部DNSサーバーシステムをOpenBSD 3.8から5.6にアップグレードし、pingでホストを解決する機能を失いましたが、Hostコマンドは機能していました。すでにある192.168.0.0/16に加えて、namedのmatch-clientsディレクティブに127.0.0.1/8を追加する必要があり、namedを再起動した後、正しく機能し始めました。
私は編集して同じ症状を解決しました:/etc/nsswitch.conf
およびDNSを次の行に追加します。
hosts: files dns