อะไรคือความแตกต่างระหว่าง `ขุด` และ `โฮสต์ 'เมื่อทำการค้นหาเซิร์ฟเวอร์ชื่อเฉพาะ?


11

ฉันใช้คำสั่งนี้เพื่อตรวจสอบว่าฉันตั้งค่าอย่างถูกต้องกับผู้ให้บริการ DNS หรือไม่:

host hostname.example.com ns1.example-nameserver.com

เท่าที่ฉันสามารถบอกได้สิ่งนี้ขอns1.example-nameserver.comให้ค้นหาhostname.example.comและรายงานคำตอบ ฉันได้รับการตอบกลับที่ไม่พบโฮสต์ดังนั้นฉันคิดว่าฉันทำผิด อย่างไรก็ตามโดยไม่ต้องระบุชื่อเซิร์ฟเวอร์ของพวกเขา (ดังนั้นอนุญาตให้เซิร์ฟเวอร์ชื่อ ISP ของฉันค้นหาได้) ฉันได้รับการตอบสนองที่ถูกต้อง ( hostnameเป็นCNAMEถ้ามันสำคัญ) ฉันไม่เข้าใจสิ่งนี้ดังนั้นฉันจึงค้นหาและพบdigคำสั่ง:

dig @ns1.example-nameserver.com hostname.example.com

เท่าที่ฉันสามารถบอกได้ว่าสิ่งนี้ทำในสิ่งเดียวกันกับhostคำสั่ง - ขอให้เซิร์ฟเวอร์ชื่อเฉพาะค้นหาโฮสต์ digดังนั้นผมจึงสรุปได้ว่าพวกเขาจะต้องทำมันแตกต่างกันอย่างใดและที่แคชเซิร์ฟเวอร์ชื่อจะต้องใช้วิธีการเดียวกับ

ข้อสรุปของฉันอาจถูกหรือผิดถ้ามันถูกต้อง:

ความแตกต่างระหว่างวิธีการค้นหาสองวิธีนี้คืออะไร

ถ้ามันผิด

อะไรคือความเข้าใจผิดของฉันเกี่ยวกับ DNS hostและdigคำสั่งและที่ทำให้ฉันได้ข้อสรุปนี้

ตัวอย่างผลลัพธ์:

$ host cardiff.tzmchapters.org ns1.livedns.co.uk
Using domain server:
Name: ns1.livedns.co.uk
Address: 213.171.192.250#53
Aliases: 

Host cardiff.tzmchapters.org not found: 3(NXDOMAIN)

$ dig @ns1.livedns.co.uk cardiff.tzmchapters.org

; <<>> DiG 9.8.3-P1 <<>> @ns1.livedns.co.uk cardiff.tzmchapters.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23620
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;cardiff.tzmchapters.org.   IN  A

;; ANSWER SECTION:
cardiff.tzmchapters.org. 3600   IN  CNAME   ghs.google.com.

;; AUTHORITY SECTION:
google.com.     3600    IN  SOA ns1.livedns.co.uk. admin.google.com. 1354213742 10800 3600 604800 3600

;; Query time: 27 msec
;; SERVER: 213.171.192.250#53(213.171.192.250)
;; WHEN: Mon Apr 22 23:47:05 2013
;; MSG SIZE  rcvd: 128

คำสั่งทั้งสองควรทำงานในลักษณะเดียวกันในกรณีนี้ คุณสามารถแสดงผลลัพธ์ที่สมบูรณ์ของแต่ละคำสั่งได้หรือไม่?
Renan

สังเกตว่าทั้งคู่digและhostรายงานNXDOMAINอย่างไร ด้วยdigคุณสามารถดูได้ในส่วนหัว (สายที่ไม่ว่างเปล่าที่ 5 ของการส่งออก) และhostมันเป็นที่ชัดเจนมากขึ้น NXDOMAINหมายความว่าไม่มีโดเมน ยังมีการCNAMEส่งคืนในส่วนคำตอบ! ฉันเชื่อว่าเป็นข้อผิดพลาดในเซิร์ฟเวอร์ DNS!
Celada

ดังนั้นในกรณีนั้นให้ทำdigและhostทั้งสองส่งแพ็กเก็ตคิวรีที่เหมือนกันรับแพ็คเก็ตการตอบสนองที่เหมือนกันแน่นอน (นอกเหนือจากการประทับเวลาใด ๆ ) แต่ตีความมันต่างกันหรือไม่ ไม่hostประกันตัวออกมาทันทีที่เห็นNXDOMAIN?
jhabbott

FWIW ฉันมีปัญหาตรงข้ามกับโดเมนย่อยที่เฉพาะเจาะจง การใช้โฮสต์บนโดเมนย่อยที่เฉพาะเจาะจงนี้ให้ระเบียนที่คาดว่าจะแสดงว่าโดเมนย่อยเฉพาะนี้แก้ไขเป็นชื่อโฮสต์ที่ยอมรับได้ อย่างไรก็ตามเมื่อใช้การขุดบนโดเมนย่อยนี้ - ฉันได้รับการตอบกลับว่าไม่มีบันทึก นอกจากนี้การนำทางไปยังโดเมนย่อยนี้ด้วยเบราว์เซอร์ไม่ทำงาน ฉันลองหลายครั้งตรวจสอบการสะกดผิด ฯลฯ คำสั่งนั้นไม่ทำงานอย่างชัดเจน
user12345

คำตอบ:


13

host, digและnslookupทั้งหมดใช้ฟังก์ชันการทำงานเดียวกันร่วมกันส่วนใหญ่ ในกรณีที่คุณกำลังถาม (ถามคำถาม DNS เฉพาะกับเนมเซิร์ฟเวอร์เฉพาะ) digและhost(และแน่นอนnslookup) ทำงานเหมือนกันทุกประการ

สำหรับการแก้ไขปัญหา DNS digเป็นที่ต้องการเนื่องจากรูปแบบผลลัพธ์เป็น "ดิบ" มากกว่า: ในผลลัพธ์จะแสดงเนื้อหาของฟิลด์ทั้ง 4 ในการตอบสนอง DNS โดยตรง: คำถามคำตอบสิทธิ์และส่วนเพิ่มเติม (รวมถึงค่าสถานะในส่วนหัว) และยังมีตัวเลือกเพิ่มเติม hostในทางกลับกันมีรูปแบบเอาต์พุตที่ใช้งานง่ายขึ้น

หากคุณไม่ต้องการตัวเลือกที่มีคำสั่งอย่างใดอย่างหนึ่งและอื่น ๆ ไม่หรือมีข้อมูลที่หนึ่งในนั้นส่งออกและอื่น ๆ ที่ไม่ทำแล้วมันมาลงในเรื่องของการตั้งค่า


2
หากพวกเขาทำสิ่งเดียวกันในด้านเครือข่าย (แบบสอบถามจริง) ฉันจะได้รับโฮสต์ไม่พบเมื่อใช้hostแต่คำตอบที่ถูกต้องเมื่อใช้dig? แม้ว่าเซิร์ฟเวอร์จะได้รับการกำหนดค่าโดยใช้การตั้งค่าเฉพาะ (ไม่ว่าจะโดยทางเลือกหรืออุบัติเหตุ) เพื่อให้เกิดสิ่งนี้เซิร์ฟเวอร์จะต้องสามารถแยกแยะคำขอได้
jhabbott

Nope! คำสั่งสองข้อที่คุณให้ในคำถามของคุณนั้นเท่ากันและควรให้คำตอบเดียวกัน คุณแน่ใจหรือไม่ว่าdigให้คำตอบจริงและไม่ใช่บันทึกในส่วนเพิ่มเติมหรือผู้มีอำนาจ? ตามที่Renanแนะนำมันอาจช่วยให้แสดงผลลัพธ์ได้
Celada

ตกลงฉันได้เพิ่มตัวอย่างผลลัพธ์ ฉันได้ผลเหมือนกันทั้งที่บ้านและที่ทำงาน เมื่อฉันไม่ได้ระบุเซิร์ฟเวอร์ชื่อที่จะใช้และ ISP ของฉันจัดการกับแบบสอบถามให้hostทำงานได้ดี โปรดลองด้วยตัวเองและแจ้งให้เราทราบผลลัพธ์
jhabbott

เพียงแค่ตรวจสอบนี้ - ในที่สุด ISP ก็บอกฉันว่าเซิร์ฟเวอร์ของพวกเขาได้รับการกำหนดค่าไม่ให้ตอบสนองต่อการสอบถามลูกค้าโดยตรงเฉพาะกับเซิร์ฟเวอร์ชื่ออื่น ๆ ที่ขอการถ่ายโอนข้อมูล - การdigสอบถามในลักษณะที่แตกต่างกัน
jhabbott

1
ขุดสามารถทำทั้งคำถามปกติ (ทุกประเภทยกเว้น AXFR) และการถ่ายโอนโซน (ประเภท AXFR) แต่ผู้ให้บริการ DNS มักจะ จำกัด การถ่ายโอนโซนไปยังทาสที่ได้รับอนุญาตดังนั้นคุณอาจต้องการใช้คำถามปกติ
Celada

0

หากคุณใช้ชื่อโฮสต์ที่ไม่ใช่ FQDN ผลลัพธ์อาจแตกต่างกันเนื่องจากhostจะใช้โดเมนการค้นหาในresolv.confขณะที่digไม่ได้เป็นค่าเริ่มต้น

คุณต้องใช้+searchตัวเลือกหากคุณต้องการdigใช้resolv.conf(หรือเพิ่มเข้าไป~/.digrc)

ตัวอย่างเช่น:

$ host foo
foo.myfqdn.com has address 10.1.2.3

$ dig +short foo
# (no result)

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