我正在编译自己的 3.14 内核。我担心我可能遗漏了一些重要的网络功能来让 DNS 正常工作。
我无法解析域名。我可以 ping 我的 DNS 服务器。我可以在其他机器上使用该 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
问题出在 busybox 上。我切换到预编译版本并且没有出现问题。我需要研究它的编译选项。感谢您的帮助。
https://gist.github.com/vsergeev/2391575:
静态链接的 glibc 程序(如本例中的 busybox)中的 DNS 功能存在已知问题,因为必须动态加载 libnss。构建 uClibc 工具链并将 busybox 链接到该工具链可以解决此问题。
答案2
/etc/nsswitch.conf
我通过编辑:并将 DNS 添加到以下行解决了相同的症状:
hosts: files dns
答案3
我遇到了同样的问题,结果发现 busybox 对 resolv.conf 的格式很挑剔。名称服务器标记和地址之间必须正好有一个空格,nslookup 才能正常工作。此外,/etc/nsswitch.conf 必须包含主机的 dns。
[ 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
是的,这个问题很老了,但是当前的 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
答案4
我有同样的问题。我使用 buildroot 来构建文件系统、编译内核并使用 busybox 添加额外的包。
我只能 ping 通一个 IP 地址。 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
一切都很好。