Busybox ping IP가 작동하지만 호스트 이름 nslookup이“잘못된 주소”로 실패합니다


14

내 자신의 3.14 커널을 컴파일하고 있습니다. DNS를 작동시키기 위해 중요한 네트워킹 기능을 생략했을 수도 있습니다.

도메인 이름을 확인할 수 없습니다. 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를 사용하고 있습니다. 이 시스템에는 공유 라이브러리가 없습니다.


방화벽이 구성되어 있습니까? 그렇다면 포트 53 UDP / TCP를 차단합니까?
Jenny D

방화벽, 포트 53의 차단 없음. 동일한 서브넷의 다른 컴퓨터에서 DNS에 액세스 할 수 있습니다.
AllenKll

내가 아는 한 커널에서 .config-options로 DNS 기능을 비활성화 할 수는 없습니다.
Bonsi Scott

1
DNS 서버 @ 192.168.13.5에서 재귀 쿼리를 허용하고 있습니까? 예를 들어 dig @192.168.13.5 www.google.com추가 정보가 있습니까? 다른 컴퓨터에서 DNS 서버 192.168.13.5에 대해 재귀 쿼리를 수행 할 수 있습니까?
Chipster

1
커널이 정상인 것 같지만 DNS 확인이 작동하지 않습니다. DHCP에서 네임 서버 IP를 얻었습니까? 경로가 설정되어 있습니까? 다른 네임 서버를 사용해보십시오 nameserver 8.8.8.8.

답변:


6

busybox에 문제가 있습니다. 미리 컴파일 된 버전으로 전환했는데 문제가 없었습니다. 컴파일 옵션을 조사해야합니다. 당신의 도움을 주셔서 감사합니다.

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

libns를 동적으로로드해야하기 때문에 정적으로 링크 된 glibc 프로그램 (이 경우 busybox와 같은)에는 DNS 기능에 대한 알려진 문제가 있습니다. uClibc 툴체인을 구축하고 busybox를 연결하면 문제가 해결됩니다.


실제로 uClibc에 대해 busybox를 컴파일 하여이 답변을 확인 했습니까? 아니면 가장 타당한 것 같습니까?
Tim

나는 이것을 테스트하지 않았다. 미리 준비된 버전이 내 문제에 효과적이었습니다.
AllenKll

2

동일한 문제가 발생하여 busybox가 resolv.conf의 형식에 대해 까다로운 것으로 나타났습니다. nslookup이 작동하려면 nameserver 태그와 주소 사이에 정확히 하나의 공백이 있어야합니다. 또한 /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

0

이것이 내가 가지고 있던 것과 같은 문제인지 확실하지 않지만 최근에 내부 DNS 서버 시스템을 OpenBSD 3.8에서 5.6으로 업그레이드하고 ping으로 호스트를 확인할 수 없었지만 host 명령이 작동했습니다. 내가 이미 가지고있는 192.168.0.0/16 외에도 named-clients 지시문에 127.0.0.1/8을 추가해야한다는 것이 밝혀졌으며 named를 다시 시작한 후에 제대로 작동하기 시작했습니다.


0

나는 같은 문제가 있었다. buildroot를 사용하여 파일 시스템을 빌드하고 커널을 컴파일하고 busybox로 패키지를 추가했습니다.

IP 주소 만 핑할 수있었습니다. 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

그리고 모든 것이 잘 작동했습니다.


1
그것은 나를 위해 문제를 해결하지 않는 것 같습니다. OP가 언급했듯이 정적으로 링크되면 libnss가 작동하지 않는 것 같습니다. uclibc (및 udhcpc)로 busybox를 컴파일하면 문제가 해결되는 것 같습니다.
Attila O.

0

편집 /etc/nsswitch.conf하여 다음 줄에 DNS를 추가 하여 동일한 증상을 해결했습니다 .

hosts:      files dns

-1

sudo vim /etc/resolv.conf resolv.conf를 편집하려면 다음과 같이 이름 서버 주소 (및 키워드 'nameserver')가 쉼표가 아닌 단일 공백으로 구분되어야합니다.

nameserver 8.8.8.8 8.8.4.4
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.