Busybox ping IP ใช้งานได้ แต่ชื่อโฮสต์ nslookup ล้มเหลวด้วย“ ที่อยู่ไม่ถูกต้อง”


14

ฉันกำลังรวบรวมเคอร์เนล 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, การเชื่อมโยงแบบคงที่ ไม่มีไลบรารีที่แชร์ในระบบนี้


คุณมีการกำหนดค่าไฟร์วอลล์ใด ๆ ถ้าใช่คุณบล็อกพอร์ต 53 UDP / TCP หรือไม่
เจนนี่ D

ไม่มีไฟร์วอลล์ไม่มีบล็อกบนพอร์ต 53 ฉันสามารถเข้าถึง DNS จากเครื่องอื่นบนซับเน็ตเดียวกัน
AllenKll

เท่าที่ฉันทราบคุณไม่สามารถปิดใช้งานฟังก์ชัน DNS ได้โดย. config-options จากเคอร์เนลของคุณ
Bonsi Scott

1
คุณแน่ใจหรือว่าเซิร์ฟเวอร์ DNS ของคุณ @ 192.168.13.5 อนุญาตการสืบค้นซ้ำ ตัวอย่างเช่นหากdig @192.168.13.5 www.google.comคุณได้รับข้อมูลเพิ่มเติมใด ๆ คุณสามารถทำการสอบถามซ้ำกับเซิร์ฟเวอร์ DNS ของคุณ 192.168.13.5 จากเครื่องอื่นได้หรือไม่?
Chipster

1
เคอร์เนลของคุณดูเหมือนจะโอเค แต่การแก้ไข DNS ของคุณไม่ทำงาน คุณได้รับเนมเซิร์ฟเวอร์ IP จาก DHCP หรือไม่ กำหนดเส้นทางหรือไม่ ลองใช้เนมเซิร์ฟเวอร์nameserver 8.8.8.8อื่น

คำตอบ:


6

ปัญหาเกิดขึ้นกับ busybox ฉันเปลี่ยนเป็นเวอร์ชั่นที่คอมไพล์แล้วและไม่มีปัญหา ฉันต้องดูตัวเลือกการรวบรวมด้วย ขอบคุณสำหรับความช่วยเหลือของคุณ.

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

มีปัญหาที่ทราบเกี่ยวกับฟังก์ชันการทำงาน DNS ในโปรแกรม glibc ที่เชื่อมโยงแบบคงที่ (เช่น busybox ในกรณีนี้) เนื่องจาก libnss ต้องโหลดแบบไดนามิก การสร้างเครื่องมือ uClibc และเชื่อมโยง busybox เพื่อแก้ไขปัญหานี้


คุณได้รวบรวม busybox กับ uClibc เพื่อตรวจสอบคำตอบนี้จริง ๆ หรือว่าดูเหมือนเป็นคำตอบที่น่าเชื่อถือที่สุด?
ทิม

ฉันไม่ได้ทดสอบสิ่งนี้ รุ่นก่อนหน้านี้ใช้งานได้สำหรับปัญหาของฉัน
AllenKll

2

ฉันพบปัญหาเดียวกันและปรากฎว่า busybox เป็นเรื่องเกี่ยวกับรูปแบบสำหรับ resolv.conf ต้องมีหนึ่งช่องว่างอย่างแน่นอนระหว่างแท็ก nameserver และที่อยู่เพื่อให้ 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

0

ฉันไม่แน่ใจว่านี่เป็นปัญหาเดียวกันกับที่ฉันมีหรือไม่ แต่ฉันเพิ่งอัพเกรดและระบบเซิร์ฟเวอร์ DNS ภายในเก่าจาก OpenBSD 3.8 เป็น 5.6 และฉันสูญเสียความสามารถในการแก้ไขโฮสต์ด้วย ping แต่คำสั่งโฮสต์ทำงาน กลับกลายเป็นว่าฉันต้องเพิ่ม 127.0.0.1/8 ไปยังคำสั่งการจับคู่ไคลเอ็นต์ในชื่อเพิ่มเติมจาก 192.168.0.0/16 ซึ่งฉันมีอยู่แล้วจากนั้นมันก็เริ่มทำงานได้อย่างถูกต้องหลังจากรีสตาร์ทชื่อ


0

ผมมีปัญหาเดียวกัน. ฉันใช้ buildroot เพื่อสร้างระบบไฟล์เพื่อคอมไพล์เคอร์เนลและเพิ่มแพ็คเกจเพิ่มเติมด้วย busybox

ฉันสามารถ ping ที่อยู่ 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 ได้เมื่อลิงก์แบบสแตติก การรวบรวม busybox กับ uclibc (และ udhcpc) ​​ดูเหมือนว่าจะแก้ปัญหาให้ฉันได้
อัตติลาโอ

0

ฉันแก้ไขอาการเดียวกันโดยแก้ไข: /etc/nsswitch.confและเพิ่ม DNS ในบรรทัดต่อไปนี้:

hosts:      files dns

-1

sudo vim /etc/resolv.conf ในการแก้ไข resolv.conf ตรวจสอบให้แน่ใจว่าที่อยู่ nameserver (รวมถึงคำหลัก 'nameserver') คั่นด้วยช่องว่างเดียวไม่ใช่เครื่องหมายจุลภาคเช่นด้านล่าง:

nameserver 8.8.8.8 8.8.4.4
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.