Score:-1

บันทึก DNS ที่มีหลาย IP + ขีดจำกัด UDP 512 ไบต์

ธง kr

ฉันมีระเบียน DNS (เช่น: test.example.com) ที่ชี้ไปที่ IP เดียว:

test.example.com ใน 192.0.2.1

ทำงานได้ดี ตอนนี้ฉันมี +30 IP ที่ตอบรับ เช่น:

teste.example.com ใน 192.0.2.1
teste.example.com ใน 192.0.2.2
(...)
teste.example.com ใน 192.0.2.31

และตอนนี้มันไม่เสถียร (ข้อผิดพลาด "ไม่พบโฮสต์") โดยใช้ ขุด ฉันได้รับคำเตือน "ถูกตัดทอน กำลังลองใหม่ในโหมด TCP"หลังจากการค้นหาใน Google หลายครั้ง ฉันพบว่าการสืบค้นแบบหลาย IP ต้องมีไม่เกิน 512 ไบต์เพื่อรับประกันว่าจะมีการใช้ UDP และหลีกเลี่ยงการสืบค้นเพิ่มเติม (หรือปัญหาเกี่ยวกับไคลเอ็นต์หรือผู้ให้บริการ DNS ที่ไม่มี tcp, DNS SW เก่า ฯลฯ).

แล้วฉันจะรู้ได้อย่างไรว่าฉันมี v4 IP กี่รายการในรายการ DNS เดียวเพื่อรับประกันคำตอบ UDP สูงสุด 512 ไบต์

หรือ

เป็นไปได้ไหมที่จะกำหนดค่า ISC Bind ให้ส่งคืนเพียง IP เดียวในแบบสอบถามหลาย IP ฉันรู้ว่า IP สามารถหมุนเวียนได้ด้วย rrset-order { สั่งซื้อเป็นวัฏจักร; };.

เช่น:

> test.example.com
เซิร์ฟเวอร์: x.x.x.x
ที่อยู่: x.x.x.x:53

ชื่อ: test.example.com
ที่อยู่: 192.0.2.6

ดังนั้นเพียงหนึ่งในนั้น? ขอบคุณ.

Ron Maupin avatar
us flag
คุณสามารถใช้ TCP สำหรับ DNS ไม่มีเหตุผลที่จะยึดติดกับ UDP หากคุณประสบปัญหา _[RFC 7766, DNS Transport over TCP - Implementation Requirements](https://datatracker.ietf.org/doc/html/rfc7766)_ อธิบายและกล่าวว่า: "_เอกสารนี้จึงอัปเดตข้อกำหนดโปรโตคอล DNS หลักที่รองรับ ต่อจากนี้ไป TCP เป็นส่วนหนึ่งของการใช้งานโปรโตคอล DNS เต็มรูปแบบ_"
Arvy avatar
kr flag
ใช่ ในสถานการณ์ปกติ แต่ผู้ที่ได้รับผลกระทบในกรณีนี้กำลังใช้เราเตอร์ที่ไม่รองรับ TCP DNS หรือตัวบั๊กกี้ ฉันรู้เรื่องนี้เนื่องจากผู้ที่ได้รับผลกระทบกำลังใช้เราเตอร์เก่าจากผู้ให้บริการในพื้นที่ มีเพียง wifi/ใช้สายเท่านั้น การใช้ 3G/4G ไม่ได้รับผลกระทบใดๆ
Ron Maupin avatar
us flag
ฉันอยากจะแนะนำว่าเป็นปัญหาสำหรับผู้ใช้ในการแก้ไข ตัวอย่างเช่น หากคุณมีเว็บไซต์ที่เป็น HTTPS เท่านั้นด้วยเหตุผลที่ดี คุณจะพยายามใช้ HTTP สำหรับผู้ใช้ที่มีเบราว์เซอร์เก่าที่ไม่สามารถใช้ HTTPS ได้อย่างถูกต้องหรือไม่ เมื่อถึงจุดหนึ่ง คุณต้องหยุดสนับสนุนแอปพลิเคชันและเทคโนโลยีที่ล้าสมัย และคุณไม่ควรทนกับผลิตภัณฑ์รถบั๊กกี้
Score:2
ธง cn

และตอนนี้มันไม่เสถียร (ข้อผิดพลาด "ไม่พบโฮสต์")

มาจากไหน/อย่างไร?

ดังที่คุณสังเกตเห็น การตั้งค่าตัวแก้ไขที่ตั้งค่าอย่างถูกต้องทั้งหมดจะได้รับการตั้งค่าสถานะที่ถูกตัดทอนในการสืบค้นครั้งแรกผ่าน UDP จากนั้นจะเปลี่ยนเป็น TCP และทุกอย่างจะเรียบร้อยดี

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

หลังจากการค้นหาโดย Google ฉันพบว่าการสืบค้นแบบหลาย IP ต้องมีไม่เกิน 512 ไบต์เพื่อรับประกันว่าจะมีการใช้ UDP

มันขึ้นอยู่กับ. บางครั้งคุณสามารถไปมากกว่า 1,000 ได้ แต่ที่สำคัญที่สุด สิ่งต่าง ๆ กลับไปใช้ TCP ดังนั้นจึงไม่ควรเป็นปัญหา (อาจสูญเสียประสิทธิภาพเล็กน้อย)

และหลีกเลี่ยงการสอบถามเพิ่มเติม (หรือปัญหาเกี่ยวกับไคลเอ็นต์หรือผู้ให้บริการ DNS ที่ไม่ใช่ tcp, DNS SW แบบเก่า ฯลฯ)

"ไคลเอ็นต์หรือผู้ให้บริการ no-tcp dns" ไม่ควรมีอยู่จริงเนื่องจากไม่สมเหตุสมผลและขัดต่อข้อกำหนด DNS ที่เขียนไว้... เมื่อกว่า 40 ปีก่อน! หรือคุณมีหลักฐานเฉพาะสำหรับกรณีเหล่านั้นหรือไม่?

อย่าพยายามไปเรื่องแบบนั้น หากมีซอฟต์แวร์เหล่านี้อยู่ซอฟต์แวร์เหล่านั้นจะใช้งานไม่ได้และจะมีปัญหาอื่นๆ มากมาย เช่น สำหรับโดเมนที่มีการรักษาความปลอดภัย DNSSEC

แล้วฉันจะรู้ได้อย่างไรว่าฉันมี v4 IP กี่รายการในรายการ DNS เดียวเพื่อรับประกันคำตอบ UDP สูงสุด 512 ไบต์

สิ่งนี้เป็นไปไม่ได้ที่จะตอบโดยทั่วไป (เพราะขึ้นอยู่กับชื่อ) แต่ที่สำคัญที่สุดคือการพยายามเพิ่มประสิทธิภาพสิ่งต่าง ๆ ด้วยวิธีนั้นไร้ประโยชน์

อย่างไรก็ตามคุณสามารถคำนวณได้อย่างง่ายดาย:

  • แพ็กเก็ต UDP มีส่วนหัว 8 ไบต์ก่อนข้อมูล (RFC 768)
  • แพ็คเก็ต DNS ดูที่ RFC 1035 มีส่วนหัว (12 ไบต์) ตามด้วยคำถาม (จำนวนตัวแปรของไบต์ ดูภายหลัง) ตามด้วยคำตอบ (ดูภายหลัง) และเราจะถือว่าส่วนเพิ่มเติมและสิทธิ์การใช้งานว่างเปล่า

ดังนั้นเราจึงอยู่ที่ 512-8-12 = 492 ไบต์สำหรับคำถาม + คำตอบ DNS

ตอบ ก บันทึกจะเป็นชื่อ (ความยาวตัวแปร) + ประเภท (2 ไบต์) + คลาส (2 ไบต์) + TTL (4 ไบต์) + ความยาว (2 ไบต์) จากนั้นข้อมูล สำหรับ ข้อมูลมีขนาด 4 ไบต์ (ที่อยู่ IPv4)

คำถามคือชื่อ (ความยาวตัวแปร) + ประเภท (2 ไบต์) + คลาส (2 ไบต์)

ชื่อในแพ็กเก็ต DNS มีคุณสมบัติสองอย่างนี้:

  • พวกมันถูกเข้ารหัสเป็นรายการป้ายกำกับที่นำหน้าด้วยความยาว
  • อาจมีการบีบอัดเพื่อให้ชื่อหรือบางส่วนของชื่อปรากฏเพียงครั้งเดียว

ตัวอย่างเช่น ตัวอย่าง.คอม ถูกเข้ารหัสใน DNS เป็น 7,e,x,a,m,p,l,e,3,c,o,m,0 โดยที่แต่ละความยาวคือหนึ่งไบต์ แต่ถ้าต้องการชื่อในภายหลัง ชื่อนั้นจะถูกแทนที่ด้วยพอยน์เตอร์ที่ใช้ 2 ไบต์เท่านั้น

ถ้าเราใช้ชื่อนั้น:

  • ขนาดของส่วนชื่อที่เป็นปัญหาจะเป็น: 13 ไบต์ ดังนั้นขนาดทั้งหมดของคำถาม: 13 + 2 + 2 = 17
  • ในคำตอบ แต่ละชื่อสามารถเป็นตัวชี้ขนาด 2 ไบต์ที่อ้างอิงชื่อในคำถาม ดังนั้นแต่ละระเบียนในคำตอบจะมีความยาว 2 ไบต์สำหรับชื่อ และส่วนที่เหลือด้านบน ดังนั้น 16 ไบต์

ดังนั้นแพ็กเก็ต DNS แบบเต็มจะมีขนาด 12 (ส่วนหัว) + 17 (คำถาม) + x คูณ 16 โดยที่ x คือจำนวน บันทึก

ดังนั้นเราต้องแก้ไข: 512 = 8 + 12 + 17 + 16x สำหรับ x ซึ่งให้ผล x=29 หรือไม่ก็. โปรดจำไว้ว่าสิ่งนี้อยู่ภายใต้สถานการณ์ที่ดีที่สุด (ไม่มีบันทึกเพิ่มเติม/ผู้มีอำนาจ และการบีบอัดชื่อที่ใช้แบบเต็ม) และสำหรับชื่อเฉพาะ (แต่หากใช้การบีบอัด ชื่อจะปรากฏแบบเต็มเพียงครั้งเดียวในคำถาม ดังนั้นขนาดดังกล่าวจึงเปลี่ยนไปเท่านั้น)

[นอกจากนี้ อย่าติดอยู่ในอินเทอร์เน็ตแบบดั้งเดิมของศตวรรษที่แล้ว ทุกวันนี้ IPv6 ควรเป็นบรรทัดฐาน แน่นอนคุณใส่น้อยลง AAAA ประเภทบันทึกในแพ็กเก็ต DNS ขนาดคงที่มากกว่า IPv4 :-) ]

เป็นไปได้ไหมที่จะกำหนดค่า ISC Bind ให้ส่งคืนเพียง IP เดียวในแบบสอบถามหลาย IP

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

PS: โปรดจำไว้ว่า DNS มีส่วนขยายเพื่อให้ฝ่ายใดฝ่ายหนึ่งระบุขนาดบัฟเฟอร์ (UDP) ที่สามารถรับได้ ดู RFC 6891 ล่าสุด ขุด ใช้ 1232 เป็นค่าเริ่มต้นที่นั่น คุณอาจสนใจโดยทั่วไปที่จะดู https://kb.isc.org/docs/aa-01219 หรือวันธง DNS ประจำปี 2563 ได้ที่ https://dnsflagday.net/2020/ นั่นคือเกี่ยวกับเรื่องนี้

Arvy avatar
kr flag
ขอบคุณสำหรับคำตอบ! ด้วยเหตุผลบางประการ หลายคนประสบปัญหาในการแก้ไขคำตอบ DNS 31 IPs... ฉันกำลังตรวจสอบแพ็กเก็ต DNS โดยใช้ WireShark อยู่ กำลังส่งคืน 572 ไบต์...`112402 2022-03-09 18:28:09 ,664371 8.8.8.8 192.168.0.3 DNS 572 การตอบกลับแบบสอบถามมาตรฐาน 0x0003 A xxxxxxxx A` (...รายการ IP แบบยาว)
Patrick Mevzek avatar
cn flag
แน่นอนว่า 31 IPs ไม่ใช่กรณีที่เกิดขึ้นบ่อย แต่ก็ไม่ควรกังวลสำหรับไคลเอนต์ DNS ทั่วไป ถามคน "หลายคน" เหล่านั้นว่าพวกเขาใช้ผู้ให้บริการ DNS แบบเรียกซ้ำแบบใด หากมีการเปลี่ยนแปลงโดยการบังคับใช้ TCP (`+tcp` ใน `dig`) หรือโดยการเล่นกับ `+bufsize` (ดูคำตอบที่แก้ไขของฉันในตอนท้ายเกี่ยวกับเรื่องนั้น)
Arvy avatar
kr flag
ใช่ ฉันเข้าใจคำอธิบายของคุณ และฉันสามารถเข้าใจสิ่งที่คุณพูดใน WireShark ได้อย่างสมบูรณ์ ฉันเห็นด้วยเกี่ยวกับ UDP+TCP แต่ฉันพบปัญหาในเราเตอร์บางตัว (เช่น: D-Link 510) แม้แต่เราเตอร์สมัยใหม่ที่มีปัญหาในการแก้ไข 31 IPs DNS นั้น (*หมายเหตุ*: ตัวแก้ไข DNS ภายใน, การใช้พร็อกซี) `ping` ง่ายๆ ใน Windows ล้มเหลวหรือ ping เฉพาะบางครั้ง (ฉันเห็นด้วย ไร้สาระ)... ถ้าฉันลดจำนวน IP จะไม่มีวันล้มเหลว
Arvy avatar
kr flag
ถ้าฉัน `nslookup` กับเราเตอร์ (192.168.0.1) มันจะส่งคืน "เซิร์ฟเวอร์ล้มเหลว" สำหรับรายการ 31 IP ถ้าฉันเปลี่ยน `เซิร์ฟเวอร์ 8.8.8.8` ใช้งานได้ดี ฉันจะลดเพื่อหลีกเลี่ยงสิ่งนี้ทั้งที่ฉันไม่รู้ว่าทำไม ขอบคุณสำหรับความช่วยเหลืออันมีค่าของคุณ
Patrick Mevzek avatar
cn flag
"ถ้าฉัน nslookup ไปที่เราเตอร์ (192.168.0.1) มันจะส่งคืน "เซิร์ฟเวอร์ล้มเหลว" สำหรับรายการ 31 IP ถ้าฉันเปลี่ยนเซิร์ฟเวอร์ 8.8.8.8 ใช้งานได้ดี " ฉันคิดว่านั่นแสดงให้เห็นได้เป็นอย่างดีว่าปัญหาคือ...ดังนั้นคุณจึงสามารถพยายามหลีกเลี่ยงมันได้ (คุณสามารถทำสถาปัตยกรรมใหม่ให้ระบบของคุณไม่ต้องพึ่งพาที่อยู่ IP มากกว่า 30+ ดูที่ anycast เป็นต้น) หรือเพียงแค่อธิบายให้ผู้คนทราบว่าพวกเขามีระบบที่เสียหายและควรแก้ไข (หรือใช้งาน ตัวแก้ไขสาธารณะแทนตัวที่เสียในเครื่อง)
Arvy avatar
kr flag
ใช่ อธิบายให้คนอื่นๆ ฟังเป็นไปไม่ได้ ฉันลด IP เหลือ 20 และดูเหมือนว่าจะใช้ได้ในตอนนี้ เป็นไปได้ว่าฉันจะสร้างรายการ DNS 2 รายการ โดยมี 15 IP แต่ละรายการ จากนั้นจึง "โหลดบาลานซ์" รายการโดยทางโปรแกรม (เนื่องจากจะถูกโหลดในไซต์ PHP) ขอบคุณ!
Patrick Mevzek avatar
cn flag
การแข่งขันสู่จุดต่ำสุดไม่ใช่สิ่งที่ฉันแนะนำเป็นการส่วนตัว สิ่งนี้ไม่ได้ช่วยอินเทอร์เน็ตทั่วโลกหรือไคลเอนต์เหล่านั้นจริงๆ เพราะหากพวกเขาประสบปัญหานี้ สิ่งอื่นๆ มากมายอาจเสียหายสำหรับพวกเขาหรือช้าผิดปกติ เป็นต้น
Arvy avatar
kr flag
เห็นด้วย แต่ฉันไม่มีทางเลือก คนที่ได้รับผลกระทบกำลังใช้เราเตอร์รุ่นเก่าที่ให้บริการโดยผู้ให้บริการอินเทอร์เน็ตรายใหญ่ ดังนั้น เนื่องจากฉันอยู่ในบราซิล เรากำลังพูดถึงเราเตอร์หลายล้านเครื่อง :( "test.example.com" ของฉัน ในโลกแห่งความเป็นจริง เป็นบริการสตรีมเสียงสำหรับผู้ใช้มากกว่า 200,000 ราย

โพสต์คำตอบ

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