การเปิดตัว PowerDNS Recursor 4.2 และ DNS flag day ปี 2020

หลังจากหนึ่งปีครึ่งของการพัฒนา นำเสนอ การเปิดตัวเซิร์ฟเวอร์ DNS แคช ทรัพยากร PowerDNS 4.2รับผิดชอบการแปลงชื่อแบบเรียกซ้ำ PowerDNS Recursor สร้างขึ้นบนฐานโค้ดเดียวกันกับ PowerDNS Authoritative Server แต่เซิร์ฟเวอร์ DNS แบบเรียกซ้ำและที่เชื่อถือได้ของ PowerDNS ได้รับการพัฒนาผ่านวงจรการพัฒนาที่แตกต่างกัน และเผยแพร่เป็นผลิตภัณฑ์ที่แยกจากกัน รหัสโครงการ จัดจำหน่ายโดย ได้รับอนุญาตภายใต้ GPLv2

เวอร์ชันใหม่ขจัดปัญหาทั้งหมดที่เกี่ยวข้องกับการประมวลผลแพ็กเก็ต DNS ด้วยแฟล็ก EDNS PowerDNS Recursor เวอร์ชันเก่าก่อนปี 2016 มีวิธีปฏิบัติในการเพิกเฉยต่อแพ็กเก็ตที่มีแฟล็ก EDNS ที่ไม่รองรับ โดยไม่ส่งการตอบกลับในรูปแบบเก่า โดยละทิ้งแฟล็ก EDNS ตามที่กำหนดในข้อกำหนด ก่อนหน้านี้ การทำงานที่ไม่ได้มาตรฐานนี้ได้รับการสนับสนุนใน BIND ในรูปแบบของวิธีแก้ปัญหา แต่อยู่ภายในขอบเขตของ ดำเนินการ ในโครงการริเริ่มเดือนกุมภาพันธ์ วันธง DNSนักพัฒนาเซิร์ฟเวอร์ DNS ตัดสินใจละทิ้งแฮ็คนี้

ใน PowerDNS ปัญหาหลักในการประมวลผลแพ็กเก็ตด้วย EDNS ได้รับการแก้ไขในปี 2017 ในรุ่น 4.1 และในสาขา 2016 ที่เปิดตัวในปี 4.0 ความเข้ากันไม่ได้แต่ละรายการเกิดขึ้นภายใต้สถานการณ์บางชุดและโดยทั่วไปแล้ว จะไม่รบกวนการทำงานปกติ การดำเนินการ. ใน PowerDNS Recursor 4.2 เช่นเดียวกับใน ผูก 9.14, วิธีแก้ปัญหาที่ถูกลบออกเพื่อรองรับเซิร์ฟเวอร์ที่เชื่อถือได้ซึ่งตอบสนองต่อคำขอด้วยแฟล็ก EDNS อย่างไม่ถูกต้อง จนถึงขณะนี้ หากหลังจากส่งคำขอด้วยแฟล็ก EDNS แล้ว ไม่มีการตอบกลับหลังจากช่วงระยะเวลาหนึ่ง เซิร์ฟเวอร์ DNS จะสันนิษฐานว่าไม่รองรับแฟล็กแบบขยาย และส่งคำขอที่สองโดยไม่มีแฟล็ก EDNS พฤติกรรมนี้ถูกปิดใช้งานแล้ว เนื่องจากโค้ดนี้ส่งผลให้เวลาแฝงเพิ่มขึ้นเนื่องจากการส่งสัญญาณแพ็กเก็ตใหม่ โหลดเครือข่ายเพิ่มขึ้น และความคลุมเครือเมื่อไม่ตอบสนองเนื่องจากความล้มเหลวของเครือข่าย และป้องกันการใช้งานคุณสมบัติที่ใช้ EDNS เช่นคุกกี้ DNS เพื่อป้องกันการโจมตี DDoS

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

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

PowerDNS Recursor 4.2 คำนึงถึงปัญหาเกี่ยวกับแพ็กเก็ต UDP ขนาดใหญ่ และเปลี่ยนไปใช้ขนาดบัฟเฟอร์ EDNS (edns-outgoing-bufsize) ที่ 1232 ไบต์ แทนที่จะเป็นขีดจำกัดที่ใช้ก่อนหน้านี้ที่ 1680 ไบต์ ซึ่งจะช่วยลดโอกาสที่จะสูญเสียแพ็กเก็ต UDP ได้อย่างมาก . เลือกค่า 1232 เนื่องจากเป็นขนาดสูงสุดที่ขนาดของการตอบสนอง DNS เมื่อคำนึงถึง IPv6 จะพอดีกับค่า MTU ขั้นต่ำ (1280) ค่าของพารามิเตอร์ truncation-threshold ซึ่งรับผิดชอบในการตัดการตอบสนองไปยังไคลเอ็นต์ ก็ลดลงเหลือ 1232 เช่นกัน

การเปลี่ยนแปลงอื่นๆ ใน PowerDNS Recursor 4.2:

  • เพิ่มการรองรับกลไก XPF (X-Proxied-For) ซึ่งเทียบเท่ากับ DNS ของส่วนหัว X-Forwarded-For HTTP ช่วยให้ข้อมูลเกี่ยวกับที่อยู่ IP และหมายเลขพอร์ตของผู้ร้องขอดั้งเดิมได้รับการส่งต่อผ่านพร็อกซีระดับกลางและโหลดบาลานเซอร์ (เช่น dnsdist) . หากต้องการเปิดใช้งาน XPF มีตัวเลือกต่างๆ "xpf-allow-จาก"และ"xpf-rr-รหัส";
  • ปรับปรุงการรองรับส่วนขยาย EDNS ซับเน็ตไคลเอ็นต์ (ECS) ซึ่งช่วยให้คุณสามารถส่งการสืบค้น DNS ไปยังเซิร์ฟเวอร์ DNS ที่เชื่อถือได้ข้อมูลเกี่ยวกับเครือข่ายย่อยที่คำขอเริ่มต้นที่ส่งไปตามสายโซ่ถูกวางยา (ข้อมูลเกี่ยวกับเครือข่ายย่อยต้นทางของไคลเอนต์จำเป็นสำหรับการทำงานที่มีประสิทธิภาพของเครือข่ายการจัดส่งเนื้อหา) . รุ่นใหม่เพิ่มการตั้งค่าสำหรับการควบคุมแบบเลือกผ่านการใช้เครือข่ายย่อยไคลเอนต์ EDNS: “ecs-add-for» พร้อมรายการเน็ตเวิร์กมาสก์ที่จะใช้ IP ใน ECS ในคำขอขาออก สำหรับที่อยู่ที่ไม่อยู่ในมาสก์ที่ระบุ ให้ระบุที่อยู่ทั่วไปในคำสั่ง "ecs-ขอบเขต-ศูนย์-ที่อยู่". ผ่านคำสั่ง "ใช้ขาเข้า edns-subnet» คุณสามารถกำหนดเครือข่ายย่อยที่จะไม่ถูกแทนที่คำขอขาเข้าที่มีค่า ECS ที่กรอก
  • สำหรับเซิร์ฟเวอร์ที่ประมวลผลคำขอจำนวนมากต่อวินาที (มากกว่า 100) คำสั่ง “ผู้จัดจำหน่าย-เธรด" ซึ่งกำหนดจำนวนเธรดสำหรับรับคำขอที่เข้ามาและกระจายระหว่างเธรดของผู้ปฏิบัติงาน (เหมาะสมเมื่อใช้ "pdns-distributes-queries=ใช่«)
  • เพิ่มการตั้งค่า ไฟล์รายการต่อท้ายสาธารณะ เพื่อกำหนดไฟล์ของคุณเองด้วย รายการคำต่อท้ายสาธารณะ โดเมนที่ผู้ใช้สามารถลงทะเบียนโดเมนย่อยของตนได้ แทนที่จะเป็นรายการที่สร้างไว้ใน PowerDNS Recursor

โครงการ PowerDNS ยังประกาศการย้ายไปสู่รอบการพัฒนาหกเดือน โดยคาดว่าจะมีการเปิดตัว PowerDNS Recursor 4.3 รุ่นใหญ่ครั้งต่อไปในเดือนมกราคม 2020 การอัปเดตสำหรับการเผยแพร่ที่สำคัญจะได้รับการพัฒนาตลอดทั้งปี หลังจากนั้นจะมีการเปิดตัวการแก้ไขช่องโหว่ต่อไปอีกหกเดือน ดังนั้นการสนับสนุนสาขา PowerDNS Recursor 4.2 จะคงอยู่จนถึงเดือนมกราคม 2021 มีการเปลี่ยนแปลงวงจรการพัฒนาที่คล้ายกันสำหรับ PowerDNS Authoritative Server ซึ่งคาดว่าจะเปิดตัว 4.2 ในอนาคตอันใกล้นี้

คุณสมบัติหลักของ PowerDNS Recursor:

  • เครื่องมือสำหรับการรวบรวมสถิติระยะไกล
  • รีสตาร์ททันที
  • เอ็นจิ้นในตัวสำหรับเชื่อมต่อตัวจัดการในภาษา Lua
  • รองรับ DNSSEC เต็มรูปแบบและ DNS64;
  • รองรับ RPZ (Response Policy Zones) และความสามารถในการกำหนดบัญชีดำ
  • กลไกป้องกันการปลอมแปลง
  • ความสามารถในการบันทึกผลลัพธ์ความละเอียดเป็นไฟล์โซน BIND
  • เพื่อให้มั่นใจว่ามีประสิทธิภาพสูง จึงมีการใช้กลไกการเชื่อมต่อแบบมัลติเพล็กซ์ที่ทันสมัยใน FreeBSD, Linux และ Solaris (kqueue, epoll, /dev/poll) รวมถึงตัวแยกวิเคราะห์แพ็กเก็ต DNS ประสิทธิภาพสูงที่สามารถประมวลผลคำขอแบบขนานนับหมื่นรายการ

ที่มา: opennet.ru

เพิ่มความคิดเห็น