การแก้ปัญหาโดเมน

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

ก่อนจะเริ่มขั้นตอนเหล่านี้ ให้ตรวจสอบโดเมนที่ dns.google ตามที่อธิบายไว้ในหน้าการแก้ปัญหาทั่วไป ซึ่งอาจนําคุณไปยังขั้นตอนการวินิจฉัยที่เฉพาะเจาะจงด้านล่าง หรือลองทําตามขั้นตอนต่อไปนี้ทั้งหมดจนกว่าจะพบสาเหตุ

ขั้นตอนที่ 1: ตรวจสอบปัญหาการตรวจสอบ DNSSEC

หากการค้นหาเว็บ dns.google สําหรับโดเมนแสดง "Status": 2 (SERVFAIL) และการค้นหาที่ไม่มี DNSSEC สําเร็จ อาจมีปัญหา DNSSSEC กับเนมเซิร์ฟเวอร์หรือรีจิสทรีของโดเมน (TLD) ของโดเมนนั้นๆ (ซึ่งเผยแพร่ระเบียน DS สําหรับการตรวจสอบ DNSSEC ของโดเมนที่ลงทะเบียน)

การเปลี่ยนแปลงในผู้รับจดทะเบียนหรือบริการ DNS

ปัญหา DNSSEC อาจเกิดขึ้นได้หลังจากโดเมนเปลี่ยนจากผู้รับจดทะเบียนหรือบริการ DNS ที่รองรับ DNSSEC ไปใช้โดเมนที่ไม่รองรับ #39 หากบริการก่อนหน้านี้ไม่เก็บระเบียน DS ที่ไม่มีอัปเดตในรีจิสทรี TLD และบริการใหม่จะไม่สร้างระเบียน DNSKEY ใหม่ที่มีระเบียน DS ตรงกันในรีจิสทรี TLD การตรวจสอบความถูกต้องของรีโซลเวอร์ เช่น Google DNS สาธารณะจะไม่สามารถแปลค่าโดเมนได้

หากเกิดปัญหานี้ โปรดขอให้ผู้รับจดทะเบียนโดเมนนําระเบียน DS เก่าออกจากรีจิสทรี TLD

การตอบกลับ DNSSEC มีขนาดใหญ่เกินไป

อีกสาเหตุหนึ่งของปัญหา DNSSEC อาจเป็นการตอบสนอง DNSSEC ที่มีขนาดใหญ่เกินไปที่จะใส่ไว้ในแพ็กเก็ต IP หนึ่งแพ็กเก็ต ซึ่งทําให้เกิดการตอบกลับที่กระจัดกระจาย หาก DNSViz แสดง "ไม่ได้รับการตอบสนองจนกว่าขนาดเพย์โหลด UDP จะลดลง" ข้อผิดพลาด ความล้มเหลวของ DNSSEC อาจเกิดจากการตอบกลับขนาดใหญ่มาก คุณลดขนาดการตอบกลับได้โดยใช้การดําเนินการต่อไปนี้อย่างน้อย 1 รายการ

  • กําหนดค่า "คําตอบที่สั้นที่สุด" สําหรับเนมเซิร์ฟเวอร์ที่เชื่อถือได้
  • ลดจํานวนระเบียน DNSKEY ที่ใช้งานอยู่ให้เหลือ 2 หรือ 3 รายการ
  • ใช้ระเบียน DNSKEY 1280 หรือ 2048 บิต (RFC 6781, StackExchange)
  • เปลี่ยนจากลายเซ็น RSA เป็นลายเซ็น ECDSA ขนาดเล็ก (RFC 8624)

รวมทั้งตรวจสอบปัญหา DNSSEC อื่นๆ ที่เครื่องมือรายงานในขั้นตอนที่ 2 ด้วย ตัวอย่างเช่น ระเบียนการปฏิเสธการปฏิเสธ NSEC หรือ NSEC3 ที่พิสูจน์ว่าไม่มีโดเมนย่อย (PowerDNS ที่มีโซนที่จัดเก็บไว้ในฐานข้อมูลภายนอกอาจมีลายเซ็นเหล่านี้) หรือลายเซ็น RRSIG ที่หมดอายุ (โดยกระบวนการลงชื่อกําหนดค่าด้วยตนเอง)

ขั้นตอนที่ 2: ตรวจสอบเนมเซิร์ฟเวอร์ที่เชื่อถือได้

หน้า DNSViz ที่เก็บไว้

หาก DNS สาธารณะของ Google (หรือรีโซลเวอร์แบบเปิด) มีปัญหาเกี่ยวกับการแก้ไขโดเมน DNSViz จะแสดงปัญหาเกี่ยวกับโดเมนและเนมเซิร์ฟเวอร์ที่ก่อให้เกิดปัญหาดังกล่าว ไปที่หน้าเว็บ DNSViz แล้วป้อนชื่อโดเมนที่มีปัญหา หาก DNSViz ไม่มีข้อมูลย้อนหลังหรือมีเฉพาะข้อมูลที่เก่ากว่า 1 วัน (เช่น ที่แสดงในหน้านี้) ให้คลิกปุ่มวิเคราะห์ขนาดใหญ่เพื่อให้แสดงปุ่มวิเคราะห์เล็กๆ ด้านล่าง (หากไม่ปรากฏอยู่แล้ว) และคลิกข้อมูลนั้นด้วย เมื่อการวิเคราะห์เสร็จสมบูรณ์ ให้คลิก&การเสนอราคา{0}ต่อไป" เพื่อแสดงผลลัพธ์ คลิกข้อผิดพลาดสีแดงและคําเตือนสีเหลืองในแถบด้านซ้ายเพื่อแสดงรายละเอียด หรือกดปุ่มตัวชี้เหนือวัตถุในไดอะแกรมเพื่อแสดงข้อมูลนั้นในบริบท

หากการวินิจฉัยก่อนหน้านี้ระบุว่าอาจเกิดปัญหา DNSSEC กับโดเมน ให้ไปที่หน้าเว็บเครื่องมือวิเคราะห์ DNSSEC แล้วกรอกชื่อโดเมน หากเครื่องมือวิเคราะห์นี้รายงานข้อผิดพลาดหรือคําเตือน DNSSEC ให้ชี้เมาส์ไปที่ไอคอน สีแดงหรือสีเหลือง ⚠︎ สีเหลืองเพื่อดูคําแนะนําเกี่ยวกับวิธีแก้ไข

หน้าเว็บ intoDNS จะรายงานปัญหาที่ไม่ใช่ของ DNSSEC กับโดเมนที่ป้อนไว้ในหน้าหลัก และจะแสดงคําแนะนําในการแก้ไขปัญหาดังกล่าว

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

ขั้นตอนที่ 3: ตรวจสอบปัญหาการมอบสิทธิ์

DNS สาธารณะของ Google เป็นรีโซลเวอร์ที่มีหลักพื้นฐาน "&;; ใช้เฉพาะเนมเซิร์ฟเวอร์ที่แสดงผลเมื่ออ้างอิงจากโดเมนระดับบนเท่านั้น หากชื่อเนมเซิร์ฟเวอร์และที่อยู่ Glue ใน TLD เก่าเกินไปหรือไม่ถูกต้อง อาจทําให้เกิดปัญหาในการมอบสิทธิ์ได้

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

ปัญหาการมอบสิทธิ์อาจเกิดจากการไม่แก้ไขชื่อเนมเซิร์ฟเวอร์สําหรับโดเมน ตรวจสอบระเบียน A และ AAAA สําหรับเนมเซิร์ฟเวอร์ใน dns.google เพื่อดูว่าเนมเซิร์ฟเวอร์มีโดเมน ##39 หรือไม่

ขั้นตอนที่ 4: ตรวจหาการตอบกลับขนาดใหญ่

DNS ต้องใช้ UDP ในการรับส่งข้อมูลส่วนใหญ่ แผนภูมิข้อมูล UDP ขนาดใหญ่ต้องกระจัดกระจายและทําให้ UDP กระจัดกระจายเนื่องจากมีการแสดงโฆษณาที่ไม่น่าเชื่อถือ จุดนี้เป็นจุดมุ่งเน้นของ DNS Flag Day 2020 ซึ่งเป็นความพยายามที่จะเพิ่มความน่าเชื่อถือของ DNS ทั่วโลก DNS สาธารณะของ Google มีส่วนร่วมในความพยายามนี้ และจํากัดขนาดของการตอบกลับ UDP ที่เซิร์ฟเวอร์ยอมรับผ่าน UDP ลองใช้คําค้นหาที่คล้ายกับตัวอย่างด้านล่างด้วยพรอมต์คําสั่งของคุณเองหรือ Google Cloud Shell

$ dig +short example.com NS
ns1.example.com
ns2.example.com
$ dig +dnssec +nocrypto +bufsize=1400 +timeout=1 @ns1.example.com example.com A
...
$ dig +dnssec +nocrypto +bufsize=1400 +timeout=1 @ns1.example.com example.com TXT
...
$ dig +dnssec +nocrypto +bufsize=1400 +timeout=1 @ns1.example.com example.com DNSKEY
...
$ dig +dnssec +nocrypto +bufsize=1400 +timeout=1 @ns1.example.com com DNSKEY
...

ข้อความค้นหาสําหรับระเบียนประเภทต่างๆ เหล่านี้จะระบุสิ่งต่อไปนี้

+dnssec
เปิดใช้ DNSSEC โดยเฉพาะการส่งคืนระเบียนที่จําเป็นสําหรับการตรวจสอบ DNSSEC เมื่อพร้อมใช้งาน ซึ่งจะขยายขนาดของผลการค้นหาได้อย่างมาก การดําเนินการนี้จะจําลองพฤติกรรม DNS สาธารณะของ Google&#39
+bufsize=1400
จํากัดขนาดบัฟเฟอร์ UDP ที่อนุญาต สิ่งนี้เลียนแบบลักษณะการทํางานของ DNS สาธารณะของ Google&#39 ซึ่งเป็นความพยายามของ DNS Flag Day 2020
+timeout=1
ตั้งค่าระยะหมดเวลาเป็น 1 วินาที การดําเนินการนี้จะจําลองพฤติกรรม DNS สาธารณะของ Google&#39
@ns1.example.com
เซิร์ฟเวอร์ที่เชื่อถือได้ที่จะค้นหา เก็บสัญลักษณ์ @ ไว้ แต่ให้แทนที่ด้วยเซิร์ฟเวอร์ที่เชื่อถือได้ของคุณเอง ดังที่แสดงในคําสั่งแรก

สังเกตเอาต์พุต เห็นบรรทัดดังนี้

;; Truncated, retrying in TCP mode.
สิ่งนี้บ่งชี้ว่าการตอบสนองมีขนาดใหญ่กว่าขนาดบัฟเฟอร์ UDP ที่ขอ ระบบจึงตัดข้อความตอบกลับแล้ว และเพื่อตอบสนองต่อไคลเอ็นต์ที่เปลี่ยนไปใช้ TCP เซิร์ฟเวอร์ที่เชื่อถือได้ควรรองรับการรับส่งข้อมูล DNS ในพอร์ต 53 ของ TCP (ดู RFC 7766 ที่จําเป็น "การใช้งานต้องรองรับทั้งการรับส่งข้อมูล UDP และ TCP".)
;; MSG SIZE rcvd: 2198
หากมีหมายเลขมากกว่า 1,400 ซึ่งระบุอีกครั้งว่ามีการตอบกลับขนาดใหญ่
;; Query time: 727 msec
หากมีหมายเลขมากกว่า 500 Google Public DNS อาจทิ้งการตอบกลับที่ช้า (โดยเฉพาะการตอบกลับที่อยู่ใกล้หรือเกิน 1 วินาที) ซึ่งมักจะเป็นเช่นนี้หากมีผู้ใช้เวลา เพื่อพยายามเข้าถึง UDP และตามมาด้วยการพยายามใช้ TCP สถานที่ตั้งทางภูมิศาสตร์ของเซิร์ฟเวอร์และไคลเอ็นต์มีผลอย่างมากต่อเวลาในการตอบสนอง
;; connection timed out; no servers could be reached
โดยเฉพาะในกรณีที่มีคําถามบางรายการ กรณีนี้จะระบุปัญหาที่เซิร์ฟเวอร์ตอบคําถาม DNS ไม่ได้ทันท่วงที

คุณสามารถลองใช้รูปแบบต่างๆ ต่อไปนี้

กําลังเพิ่มพารามิเตอร์ +tcp
การดําเนินการนี้จะบังคับให้ dig ใช้ TCP ทันที คุณตรวจสอบได้ว่าเซิร์ฟเวอร์ที่เชื่อถือได้จัดการคําค้นหา TCP โดยตรงด้วยวิธีนี้หรือไม่
กําลังนําพารามิเตอร์ +bufsize=1400 ออก
การดําเนินการนี้จะคืนค่าพฤติกรรมเริ่มต้นของ dig&#39 (ตัวย่อของ 4096) หากการค้นหาของคุณล้มเหลวกับการตั้งค่านี้ แต่ทํางานได้โดยไม่มีคําแนะนําดังกล่าว หมายความว่าเซิร์ฟเวอร์ของคุณไม่สามารถรองรับ TCP เฟลโอเวอร์ได้เป็นอย่างดี การพึ่งพา UDP เพื่อดําเนินการตอบกลับขนาดใหญ่อาจใช้งานได้ในบางครั้งเท่านั้น การดําเนินการที่ดีที่สุดคือการรองรับการส่งผ่าน TCP สําหรับ DNS
การทําซ้ําที่เนมเซิร์ฟเวอร์แต่ละรายการ
ตัวอย่างข้างต้นมีเนมเซิร์ฟเวอร์ที่เชื่อถือได้ 2 รายการ (ns1 และ ns2) ปัญหาบางอย่างอาจเกิดจากเซิร์ฟเวอร์ที่ต่างกันแสดงคําตอบที่แตกต่างกัน ตรวจสอบว่าทุกคนตอบคําถามได้สอดคล้องกันโดยใช้คําค้นหาเดียวกันซ้ําในเซิร์ฟเวอร์ที่เชื่อถือได้ทั้งหมด

หากคําค้นหาทั้งหมดเป็นคําตอบเล็กๆ น้อยๆ (ไม่เกิน 1,400 ไบต์) เร็ว (ควรเป็น 500 มิลลิวินาทีขึ้นไป) และเชื่อถือได้ (ทํางานอย่างต่อเนื่องผ่าน TCP และ UDP) คุณไม่จําเป็นต้องกังวลเรื่องขนาดการตอบสนอง โปรดอ่านส่วนการแก้ปัญหาอื่นๆ ถึงแม้คําตอบจะเป็นไปอย่างรวดเร็ว แต่การค้นหาจากพื้นที่ทางภูมิศาสตร์ที่ห่างไกลก็อาจช้ากว่าปกติ

หากการตรวจสอบเหล่านี้ล้มเหลว (ขนาดใหญ่หรือช้าหรือไม่เสถียร) การดําเนินการหลักคือ ก) ตรวจสอบว่าเซิร์ฟเวอร์ของคุณตอบสนองด้วยการตัด UDP เมื่อการตอบสนองเกินขนาดบัฟเฟอร์ UDP ที่ขอ และ ข) เซิร์ฟเวอร์สามารถจัดการการสอบถาม TCP ใหม่ซึ่งจะเกิดขึ้นหลังจากนั้น เครื่องมือหลายรายการช่วยคุณวินิจฉัย ปัญหาความน่าเชื่อถือของ DNS ได้ดังนี้

หากเครื่องมือหรือเครื่องมือดังกล่าวแสดงข้อผิดพลาดหรือคําเตือนใดๆ โปรดแก้ไขปัญหาดังกล่าว โปรดอ่านคําแนะนําในการแก้ปัญหาอื่นๆ ทั้งหมดในเว็บไซต์นี้

ขั้นตอนที่ 5: ตรวจสอบว่ารีโซลเวอร์สาธารณะอื่นแก้ไขโดเมนหรือไม่

หากไม่พบสาเหตุของปัญหาหลังจากทําตามขั้นตอนข้างต้น ให้เรียกใช้คําสั่งต่อไปนี้ที่ Command Prompt โดยแทนที่ example.test. ด้วยโดเมนที่เป็นปัญหา (และเก็บจุดต่อท้ายไว้)

Windows

nslookup example.test. resolver1.opendns.com.
nslookup example.test. dns.quad9.net.
nslookup example.test. one.one.one.one.

macOS หรือ Linux

dig example.test. '@resolver1.opendns.com.'
dig example.test. '@dns.quad9.net.'
dig example.test. '@one.one.one.one.'

คําสั่งเหล่านี้จะใช้รีโซลเวอร์ DNS ของ OpenDNS, Quad9 และ Cloudflare 1.1.1.1 ถ้าคุณได้รับความล้มเหลวจากทั้ง 2 อย่างนี้ รวมถึง DNS สาธารณะของ Google แสดงว่าปัญหาอาจเกิดจากโดเมนหรือเนมเซิร์ฟเวอร์

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