Busybox ping IP hoạt động, nhưng tên máy chủ nslookup không thành công với địa chỉ xấu


14

Tôi đang biên dịch kernel 3.14 của riêng tôi. Tôi sợ rằng tôi có thể đã bỏ qua một số tính năng mạng quan trọng để DNS hoạt động.

Tôi không thể giải quyết tên miền. Tôi có thể ping máy chủ DNS của mình. Tôi có thể giải quyết bằng DNS đó trên các máy khác để tôi biết đó không phải là máy chủ.

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

Bất cứ ý tưởng những gì tôi để lại? đây là cấu hình của tôi: http://pastebin.com/vt4vGTgJ

CHỈNH SỬA :

Nếu đó không phải là kernel, tôi có thể thiếu gì? Tôi đang sử dụng busybox, liên kết tĩnh. không có thư viện chia sẻ trong hệ thống này.


Bạn có cấu hình tường lửa nào không? Nếu vậy, bạn có chặn cổng 53 UDP / TCP không?
Jenny D

Không có tường lửa, không có khối trên cổng 53. Tôi có thể truy cập DNS từ một máy khác trên cùng mạng con.
AllenKll

Theo như tôi biết, bạn không thể vô hiệu hóa chức năng DNS bằng các tùy chọn .config từ kernel của mình.
Bonsi Scott

1
Bạn có chắc chắn rằng máy chủ DNS của bạn @ 192.168.13.5 đang cho phép truy vấn đệ quy không? Ví dụ, nếu dig @192.168.13.5 www.google.combạn nhận được bất kỳ thông tin bổ sung? Bạn có thể thực hiện các truy vấn đệ quy đối với máy chủ DNS 192.168.13.5 của mình từ các máy khác không?
Chipster

1
kernel của bạn có vẻ ổn, nhưng việc phân giải DNS của bạn không hoạt động. Bạn đã có được IP máy chủ tên từ DHCP? tuyến đường được đặt? thử một máy chủ tên khác nhau tức là nameserver 8.8.8.8.

Câu trả lời:


6

Vấn đề là với busybox. Tôi đã chuyển sang phiên bản tiền biên dịch và không gặp vấn đề gì. Tôi cần xem xét các tùy chọn biên dịch với nó. Cảm ơn bạn đã giúp đỡ.

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

Có các vấn đề đã biết với chức năng DNS trong các chương trình glibc được liên kết tĩnh (như busybox trong trường hợp này), vì libnss phải được tải động. Xây dựng một chuỗi công cụ uClibc và liên kết busybox với điều đó sẽ giải quyết điều này.


Bạn đã thực sự biên dịch busybox dựa trên uClibc để xác minh câu trả lời này, hay nó có vẻ hợp lý nhất?
Tim

Tôi đã không kiểm tra điều này. Phiên bản tiền chế đã làm việc cho các vấn đề của tôi.
AllenKll

2

Tôi gặp vấn đề tương tự và hóa ra busybox rất kén chọn định dạng cho độ phân giải. Phải có chính xác một khoảng trống giữa thẻ máy chủ tên và địa chỉ để nslookup hoạt động. Ngoài ra /etc/nsswitch.conf phải bao gồm dns cho máy chủ.

[busybox master (git hash 349d72c19) sysroot-glibc-linaro-2.25-2018.05-arm-linux-gnuispihf]

root@4000000a:~# cat /etc/nsswitch.conf 
passwd:    files compat
shadow:    files compat
hosts:    files dns compat 

Có câu hỏi đã cũ, nhưng busybox hiện tại vẫn hoạt động theo cách này.

[Tôi đã sử dụng xxd bên dưới để hiển thị số lượng khoảng trống trong độ phân giải].

Điều này không thành công:

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'

và điều này hoạt động:

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

Tôi không chắc đây có phải là cùng một vấn đề tôi gặp phải hay không, nhưng gần đây tôi đã nâng cấp và hệ thống máy chủ DNS nội bộ cũ từ OpenBSD 3.8 lên 5.6 và tôi đã mất khả năng giải quyết các máy chủ bằng ping, nhưng lệnh máy chủ đã hoạt động. Hóa ra tôi đã phải thêm 127.0.0.1/8 vào chỉ thị của ứng dụng khách phù hợp có tên ngoài 192.168.0.0/16 mà tôi đã có ở đó, và sau đó nó bắt đầu hoạt động bình thường sau khi khởi động lại được đặt tên.


0

Tôi đã từng gặp vấn đề tương tự. Tôi đã sử dụng buildroot để xây dựng hệ thống tập tin, để biên dịch kernel và thêm các gói bổ sung với busybox.

Tôi chỉ có thể ping một địa chỉ IP. Với url, lệnh ping được trả về : bad address error. Sau đó tôi thay đổi resolv.conftập tin.

sudo vim /etc/resolv.conf

nameserver gateway_ip_address
nameserver 8.8.8.8
nameserver 8.8.4.4

Và mọi thứ hoạt động tốt.


1
Điều đó dường như không giải quyết vấn đề cho tôi. Như OP đã đề cập, có vẻ như libnss không hoạt động khi được liên kết tĩnh. Biên dịch busybox với uclibc (và udhcpc) ​​dường như giải quyết vấn đề cho tôi.
Attila O.

0

Tôi đã giải quyết các triệu chứng tương tự bằng cách chỉnh sửa: /etc/nsswitch.confvà thêm DNS vào dòng sau:

hosts:      files dns

-1

sudo vim /etc/resolv.conf để chỉnh sửa độ phân giải, hãy đảm bảo các địa chỉ máy chủ tên (cũng như từ khóa 'máy chủ tên') được phân tách bằng một khoảng trắng, không phải dấu phẩy, như bên dưới:

nameserver 8.8.8.8 8.8.4.4
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.