나는 내 자신의 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이 제대로 작동하려면 이름 서버 태그와 주소 사이에 정확히 하나의 공백이 있어야 합니다. 또한 /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를 사용하여 추가 패키지를 추가합니다.
하나의 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
모두 괜찮습니다.