ฉันจะค้นหาเซิร์ฟเวอร์ชื่อที่เชื่อถือได้สำหรับชื่อโดเมนได้อย่างไร


317

ฉันจะค้นหาต้นกำเนิดของระเบียน DNS ที่ขัดแย้งกันได้อย่างไร

คำตอบ:


413

คุณจะต้องการบันทึก SOA (เริ่มต้นของผู้ให้บริการออก) สำหรับชื่อโดเมนที่กำหนดและนี่คือวิธีที่คุณทำสำเร็จโดยใช้เครื่องมือบรรทัดคำสั่งnslookup ที่มีให้ใช้งานทั่วไป:

command line> nslookup
> set querytype=soa
> stackoverflow.com
Server:         217.30.180.230
Address:        217.30.180.230#53

Non-authoritative answer:
stackoverflow.com
        origin = ns51.domaincontrol.com # ("primary name server" on Windows)
        mail addr = dns.jomax.net       # ("responsible mail addr" on Windows)
        serial = 2008041300
        refresh = 28800
        retry = 7200
        expire = 604800
        minimum = 86400
Authoritative answers can be found from:
stackoverflow.com       nameserver = ns52.domaincontrol.com.
stackoverflow.com       nameserver = ns51.domaincontrol.com.

กำเนิด (หรือเซิร์ฟเวอร์ชื่อหลักใน Windows) สายจะบอกคุณว่าns51.domaincontrolเป็นเซิร์ฟเวอร์ชื่อหลักสำหรับstackoverflow.com

เมื่อสิ้นสุดการแสดงผลเซิร์ฟเวอร์ที่เชื่อถือได้ทั้งหมดรวมถึงเซิร์ฟเวอร์สำรองสำหรับโดเมนที่ระบุจะแสดงรายการ


158
nslookup -type = soa stackoverflow.com
Ben Amada

6
ภายใต้หน้าต่างอย่างไรก็ตามฉันไม่สามารถเห็นการตอบสนอง "คำตอบที่มีสิทธิ์" ฉันมี Windows 8 และ Ubuntu 12 อยู่เคียงข้างกันและจากนั้นคำสั่งเดียวกันสำหรับโดเมนเดียวกันจะทำงานบน Ubuntu ได้อย่างถูกต้อง แต่ไม่ใช่ใน Windows
Mario Awad

1
ระวังว่าการแสดงนี้ไม่จำเป็นต้องแสดงให้เห็นการเปลี่ยนแปลงล่าสุดของการกำหนดค่า DNS แต่ใช้digดูเหมือนจะสำหรับฉัน (ดูคำตอบด้านล่าง)
rogerdpack

6
หมายความว่าอย่างไรหากไม่มีคำตอบที่เชื่อถือได้ แต่คำตอบที่ไม่ได้รับอนุญาตนั้นดี
Overmind

6
หากคุณทำงานnslookup -type=soa stackoverflow.comบน linux วันนี้ (2019 ก.พ. ) ส่วนที่เชื่อถือได้จะว่างเปล่า
simpleuser

174

คุณใช้เอกพจน์ในคำถามของคุณ แต่โดยทั่วไปจะมีเซิร์ฟเวอร์ชื่อที่เชื่อถือได้หลายตัว RFC 1034 แนะนำอย่างน้อยสองตัว

เว้นแต่คุณจะหมายถึง "เซิร์ฟเวอร์ชื่อหลัก" และไม่ใช่ "เซิร์ฟเวอร์ชื่อที่เชื่อถือได้" เซิร์ฟเวอร์ชื่อสำรองมีสิทธิ์

หากต้องการค้นหาเนมเซิร์ฟเวอร์ของโดเมนบน Unix:

  % dig +short NS stackoverflow.com
 ns52.domaincontrol.com.
 ns51.domaincontrol.com.

หากต้องการค้นหาเซิร์ฟเวอร์ที่ระบุว่าเป็นรายการหลัก (แนวคิดของ "หลัก" ค่อนข้างคลุมเครือในปัจจุบันและมักไม่มีคำตอบที่ดี):

% dig +short  SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.

ในการตรวจสอบความแตกต่างระหว่างเซิร์ฟเวอร์ชื่อการตั้งค่าของฉันไปที่check_soaเครื่องมือเก่าที่อธิบายไว้ในหนังสือ Liu & Albitz "DNS & BIND" (ตัวแก้ไข O'Reilly) ซอร์สโค้ดมีอยู่ในhttp://examples.oreilly.com/dns5/

% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300

ที่นี่เซิร์ฟเวอร์ชื่อที่เชื่อถือได้สองแห่งมีหมายเลขซีเรียลเหมือนกัน ดี.


5
dig + short ไม่ได้ให้คำตอบที่ฉันคาดหวังเสมอไป ตัวอย่างเช่นไซต์ที่กำหนดเป็นwww.pressero.comซึ่งเป็น CNAME สำหรับไซต์อื่น - dig + short SOA เพียงส่งคืนเป้าหมาย CNAME
Ross Presser

คุณสร้างสิทธิ NS ได้อย่างไร
Overmind

1
@Overmind คุณไม่ได้ทำ NS "เผด็จการ" หาก Nameserver ถูกกำหนดค่าเป็นสิทธิ์สำหรับบางโดเมนหมายความว่ามีไฟล์ในเครื่อง (โดยทั่วไปคือไฟล์ข้อความแบบแบน แต่สามารถทำได้ต่างกันด้วย) สำหรับโดเมนเหล่านี้และตอบสนองต่อการค้นหา เพื่อให้มีประโยชน์พวกเขาจำเป็นต้องถูกระบุว่าเป็นระเบียน NS ในโซนหลักสำหรับแต่ละโดเมนที่ได้รับอนุญาตมิฉะนั้นจะไม่มีใครสอบถามได้โดยค่าเริ่มต้น
Patrick Mevzek

@RossPresser คำตอบที่พูดถึงระเบียน NS / SOA และฉันสงสัยว่าคุณทำเช่นนั้นwww.pressero.comคุณอาจคิดเกี่ยวกับระเบียน A (ซึ่งเป็นประเภทระเบียนเริ่มต้นdigหากคุณไม่ได้ระบุไว้) แต่ถ้าจำเป็นให้เพิ่ม a tail -1เพื่อดึงผลลัพธ์สุดท้าย
Patrick Mevzek

@PatrickMevzek dig +short SOA www.pressero.comที่ผมกล่าวในความคิดเห็นของผมผมใช้ สิ่งนี้จะส่งกลับเฉพาะเป้าหมาย CNAME - ไม่ใช่ระเบียน SOA สำหรับpressero.comโดเมนซึ่งเป็นสิ่งที่ฉันคาดไว้ tail -1ไม่ได้ช่วยเรื่อง dig +short SOAมีการเปล่งเพียงหนึ่งบรรทัด
Ross Presser

40

บน * ระวัง:

$ dig -t ns <domain name>

3
เขาขอชื่อเซิร์ฟเวอร์ไม่ใช่ที่อยู่ IPv4 ดังนั้นประเภท (-t) ควรเป็น NS ไม่ใช่ A.
bortzmeyer

1
ทำไมไม่พิมพ์ SOA @bortzmeyer
แรนดี้ L

เอ่อเพราะมันคืนค่า SOA แทน NS
tripleee

17

ฉันมีเครื่องมือการเผยแพร่ DNSออกแบบมาเพื่อตอบคำถามประเภทนี้

แหล่งเผยแพร่ภายใต้ AGPLv3

(ใช่อินเทอร์เฟซค่อนข้างพื้นฐานในขณะนี้ :))

คุณสามารถค้นหาเนมเซิร์ฟเวอร์สำหรับโดเมนที่มีคำสั่ง "host":

[davidp @ supernova: ~] $ host -t ns stackoverflow.com
stackoverflow.com เซิร์ฟเวอร์ชื่อ ns51.domaincontrol.com
stackoverflow.com เซิร์ฟเวอร์ชื่อ ns52.domaincontrol.com

@cacho นั่นเป็นเรื่องจริง ฉันอาจเพิ่มมันถ้าฉันมีโอกาส
David Precious

1
มันพังแสดงว่า "502 Bad Gateway nginx / 1.14.2"
Marco Demaio

8

ฉันพบว่าวิธีที่ดีที่สุดในการเพิ่มตัวเลือก + ติดตามเสมอ:

dig SOA +trace stackoverflow.com

มันทำงานได้กับ CNAME แบบเรียกซ้ำซึ่งโฮสต์ในผู้ให้บริการที่ต่างกัน + การติดตามร่องรอยบ่งบอกถึง + norecurse ดังนั้นผลลัพธ์จึงเป็นเพียงสำหรับโดเมนที่คุณระบุ


หมายเหตุถ้าคุณใช้เซิร์ฟเวอร์ NS ในพื้นที่เช่นการติดตาม dnsmasq + จะไม่ส่งคืนสิ่งใด ...
Daniel Sokolowski

คำสั่งนี้ให้ 53 บรรทัด, 3652 ไบต์ของการส่งออกซึ่งส่วนใหญ่เป็นค่าสุ่ม บางคนควรตีความผลลัพธ์เพื่อตัดสินว่าเนมเซิร์ฟเวอร์ที่เชื่อถือได้คืออะไร
theferrit32

ฉันอ่านจากล่างขึ้นบน ระเบียน SOA คือสิ่งที่คุณค้นหา คุณสามารถ grep เพื่อให้ SOA มีข้อมูลน้อยลง
อเล็กซ์

6

คำที่คุณควรใช้เป็น Google คือ "เชื่อถือได้" ไม่ใช่ "ชัดเจน"

บน Linux หรือ Mac คุณสามารถใช้คำสั่งwhois, dig, host, nslookupหรืออื่น ๆ อีกหลาย nslookupอาจทำงานบน Windows

ตัวอย่าง:

$ whois stackoverflow.com
[...]
   Domain servers in listed order:
      NS51.DOMAINCONTROL.COM
      NS52.DOMAINCONTROL.COM

สำหรับเครดิตเพิ่มเติม: ใช่มันเป็นไปได้


aryeh ผิดแน่นอนเนื่องจากคำแนะนำของเขามักจะให้ที่อยู่ IP สำหรับชื่อโฮสต์เท่านั้น หากคุณใช้digคุณต้องค้นหาระเบียน NS เช่น:

dig ns stackoverflow.com

โปรดทราบว่าสิ่งนี้อาจถามเซิร์ฟเวอร์ DNS ในพื้นที่ของคุณและอาจให้คำตอบที่ผิดหรือล้าสมัยที่มีอยู่ในแคช


6
คำสั่งเหล่านี้ไม่เทียบเท่า ไม่มีอะไรบอกว่าข้อมูลที่ได้รับจาก whois เป็นข้อมูลล่าสุด บ่อยครั้งที่มันไม่ได้เป็นเพราะคนปรับปรุงระเบียน NS ในไฟล์โซนโดยไม่ต้องแจ้งรีจิสทรีหรือนายทะเบียน
bortzmeyer

ฉันไม่เคยพูดว่าพวกเขาเป็น;) คุณสามารถเปลี่ยนระเบียน NS ในโซนของคุณได้ทุกอย่างที่คุณต้องการตราบใดที่โซนหลักไม่ได้รับการปรับปรุงจะไม่มีอะไรเปลี่ยนแปลง และการอัปเดตของโซนหลักมักจะไปพร้อมกับการอัปเดตข้อมูล whois (อย่างน้อยกับผู้ให้บริการของฉัน)

5

เราได้สร้างเครื่องมือค้นหา DNSที่ให้บริการเนมเซิร์ฟเวอร์ที่เชื่อถือได้ของโดเมนและบันทึก DNS ทั่วไปในคำขอเดียว

ตัวอย่าง: https://www.misk.com/tools/#dns/stackoverflow.com

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

นอกจากนี้คุณยังสามารถดูเส้นทางการมอบหมายเนมเซิร์ฟเวอร์ได้โดยคลิกที่ "Author Names Namesers" ที่ด้านล่างของผลลัพธ์การค้นหา dns จากตัวอย่างด้านบน

ตัวอย่าง: https://www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net


2

คุณสามารถใช้บริการ whois บน UNIX เช่นระบบปฏิบัติการคุณจะใช้คำสั่งต่อไปนี้ หรือคุณสามารถทำมันได้ในเว็บที่http://www.internic.net/whois.html

whois stackoverflow.com

คุณจะได้รับคำตอบดังต่อไปนี้

... ลบข้อความที่นี่ ...

เซิร์ฟเวอร์โดเมนตามลำดับที่ระบุไว้: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM

คุณสามารถใช้ nslookup หรือขุดเพื่อค้นหาข้อมูลเพิ่มเติมเกี่ยวกับระเบียนสำหรับโดเมนที่กำหนด สิ่งนี้อาจช่วยคุณแก้ไขข้อขัดแย้งที่คุณอธิบายไว้


2
ไม่มีอะไรบอกว่าข้อมูลที่ได้รับจาก whois เป็นข้อมูลล่าสุด บ่อยครั้งที่มันไม่ได้เป็นเพราะคนปรับปรุงระเบียน NS ในไฟล์โซนโดยไม่ต้องแจ้งรีจิสทรีหรือนายทะเบียน
bortzmeyer

แม้ว่าจะไม่ใช่คำตอบที่ตรงกับคำถาม "whois" มีประโยชน์เพราะมันบอกคุณว่าใครควรจะเป็นเนมเซิร์ฟเวอร์สำหรับบางแห่ง
SomeoneElse

1

น่าเสียดายที่เครื่องมือเหล่านี้ส่วนใหญ่จะส่งคืนระเบียน NS ตามที่ระบุโดยเซิร์ฟเวอร์ชื่อจริงเท่านั้น เพื่อให้แม่นยำยิ่งขึ้นในการพิจารณาว่าเซิร์ฟเวอร์ชื่อใดรับผิดชอบโดเมนจริง ๆ คุณต้องใช้ "whois" และตรวจสอบโดเมนที่แสดงอยู่ที่นั่นหรือใช้ "dig [domain] NS @ [root name server]" และเรียกใช้ ซ้ำจนกว่าคุณจะได้รับรายชื่อเซิร์ฟเวอร์ ...

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

ใครรู้คำสั่งโดยใช้ "ขุด" หรือ "โฮสต์" หรืออย่างอื่นใน * ระวัง?


2
ง่าย สมมติว่าโดเมนคือ example.org ก่อนอื่นคุณต้องค้นหาเซิร์ฟเวอร์ชื่อของ ".org" ด้วย "dig + short NS org." จากนั้นคุณสอบถามหนึ่งในนั้น (ทุกคนพวกเขาล้วนมีสิทธิ์) ลองเลือก d0.org.afilias-nst.org คุณสืบค้นด้วย 'dig @ d0.org.afilias-nst.org NS example.org.'
bortzmeyer

ความจริงที่ว่าตัวแก้ไขส่งกลับโดยค่าเริ่มต้นเซิร์ฟเวอร์ชื่อที่แสดงรายการโดยโดเมนนั้นเป็นสิ่งที่ดี นั่นคือข้อมูลที่เชื่อถือได้ การมอบหมายในโซนหลักไม่ใช่สิทธิ์
bortzmeyer

และตัวชี้ไปยัง whois คือปลาเฮอริ่งแดง ข้อมูลเซิร์ฟเวอร์ชื่อ whois มักจะเก่า ทรัพยากรที่มีสิทธิ์คือ DNS
tripleee

1
Whois เป็นคนที่ไม่มีเหตุผล ค่าที่คุณเห็นในรายชื่อ whois นั้นไม่มีความเกี่ยวข้องทางเทคนิคกับ DNS มันมักจะล้าสมัยหรือผิดพลาด ฉันจะบอกว่าข้อมูล whois ไม่น่าเชื่อถือ มีการลงทะเบียน 'บาง' และ 'หนา' การลงทะเบียนหนาสองที่รู้จักกันดีคือการลงทะเบียน. com และ. net การลงทะเบียนเหล่านี้มีข้อมูล DNS ทั้งหมดและให้บริการการตอบสนองที่น่าเชื่อถือ การลงทะเบียนอื่น ๆ เกือบทั้งหมดเป็น 'สิ่ง' และดำเนินการลงทะเบียน whois ของตัวเอง ข้อมูลนี้ผิดพลาดบ่อยครั้ง
ทำเครื่องหมาย

1

ระเบียน SOA จะปรากฏบนเซิร์ฟเวอร์ทั้งหมดในลำดับชั้นที่เจ้าของโดเมนไม่มีการควบคุมและจะมีผลต่อเซิร์ฟเวอร์ชื่อที่เชื่อถือได้ภายใต้การควบคุมของเจ้าของโดเมน

ระเบียน SOA บนเซิร์ฟเวอร์ที่เชื่อถือได้นั้นไม่จำเป็นสำหรับการแก้ไขโดเมนนั้นอย่างเคร่งครัดและสามารถมีข้อมูลปลอม (หรือซ่อนเซิร์ฟเวอร์หลักหรือเซิร์ฟเวอร์ จำกัด อื่น ๆ ) และไม่ควรเชื่อถือเพื่อกำหนดเซิร์ฟเวอร์ชื่อที่เชื่อถือได้ สำหรับโดเมนที่กำหนด

คุณต้องสอบถามเซิร์ฟเวอร์ที่มีสิทธิ์สำหรับโดเมนระดับบนสุดเพื่อรับข้อมูล SOA ที่เชื่อถือได้สำหรับโดเมนย่อยที่กำหนด

(ข้อมูลเกี่ยวกับเซิร์ฟเวอร์ใดที่เชื่อถือได้ซึ่ง TLD สามารถสอบถามได้จากเซิร์ฟเวอร์ชื่อหลัก)

เมื่อคุณมีข้อมูลที่เชื่อถือได้เกี่ยวกับ SOA จากเซิร์ฟเวอร์ที่มีสิทธิ์ TLD คุณสามารถสอบถามเซิร์ฟเวอร์ชื่อหลักที่มีสิทธิ์ (หนึ่งในบันทึกใน SOA ใน gTLD nameserver!) สำหรับระเบียน NS อื่น ๆ จากนั้นดำเนินการตรวจสอบทั้งหมด เซิร์ฟเวอร์ชื่อเหล่านั้นที่คุณได้รับจากการสอบถามระเบียน NS เพื่อดูว่ามีความไม่สอดคล้องกันสำหรับระเบียนเฉพาะอื่น ๆ บนเซิร์ฟเวอร์เหล่านั้นหรือไม่

ทั้งหมดนี้ใช้งานได้ดีกว่า / เชื่อถือได้กับ linux และ dig มากกว่า nslookup / windows


0

วิธีที่ง่ายคือใช้เครื่องมือโดเมนออนไลน์ สิ่งที่ฉันชอบคือเครื่องมือโดเมน (เดิมคือ whois.sc) ฉันไม่แน่ใจว่าพวกเขาสามารถแก้ไขระเบียน DNS ที่ขัดแย้งได้หรือไม่ ตัวอย่างเช่นเซิร์ฟเวอร์ DNS สำหรับ stackoverflow.com คือ

  NS51.DOMAINCONTROL.COM
  NS52.DOMAINCONTROL.COM

0

ฉันพบว่าสำหรับบางโดเมนคำตอบข้างต้นไม่ได้ผล วิธีที่เร็วที่สุดที่ฉันพบคือการตรวจสอบระเบียน NS ก่อน หากไม่มีอยู่ให้ตรวจสอบเรกคอร์ด SOA หากไม่มีอยู่ให้แก้ไขชื่อซ้ำโดยใช้ dig และนำระเบียน NS สุดท้ายที่ส่งกลับมา ตัวอย่างที่เหมาะกับสิ่งนี้คือanalyticsdcs.ccs.mcafee.com.

  1. ตรวจสอบระเบียน NS

host -t NS analyticsdcs.ccs.mcafee.com.

  1. หากไม่พบ NS ให้ตรวจสอบเรกคอร์ด SOA

host -t SOA analyticsdcs.ccs.mcafee.com.

  1. ถ้าไม่ใช่ NS หรือ SOA ให้ทำแบบเรียกซ้ำทั้งหมดและรับ NS คืนสุดท้าย

dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1

  1. ทดสอบว่าเนมเซิร์ฟเวอร์ส่งคืนได้ผล

host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.

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