انتشار PowerDNS Recursor 4.2 و ابتکار روز پرچم DNS 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) قرار می گیرد. مقدار پارامتر آستانه کوتاه کردن که وظیفه کوتاه کردن پاسخ‌ها به مشتری را بر عهده دارد نیز به 1232 کاهش یافته است.

سایر تغییرات در PowerDNS Recursor 4.2:

  • پشتیبانی مکانیزم اضافه شده است XPF (X-Proxied-For)، که معادل DNS هدر X-Forwarded-For HTTP است، که به شما امکان می دهد اطلاعات مربوط به آدرس IP و شماره پورت درخواست کننده اصلی را ارسال کنید، که از طریق پراکسی های میانی و متعادل کننده های بار (برای به عنوان مثال، dnsdist). برای فعال کردن XPF، گزینه های "xpf-allow-from"و"کد xpf-rr«؛
  • پشتیبانی بهبود یافته برای پسوند EDNS زیرشبکه مشتری (ECS)، که به اطلاعات مربوط به زیرشبکه ای که درخواست اصلی از آن مسموم شده است در یک درخواست DNS به یک سرور DNS معتبر اجازه می دهد (داده های مربوط به زیرشبکه منبع مشتری برای عملکرد مؤثر شبکه های تحویل محتوا ضروری است). نسخه جدید تنظیماتی را برای کنترل انتخابی استفاده از EDNS Client Subnet اضافه می کند: «ecs-add-for» با لیستی از ماسک های شبکه که IP برای آنها در ECS در درخواست های خروجی استفاده می شود. برای آدرس هایی که با ماسک های مشخص شده مطابقت ندارند، آدرس عمومی مشخص شده در "ecs-scope-zero-address". از طریق بخشنامهuse-incoming-edns-subnet» می توانید زیرشبکه ها را تعریف کنید، درخواست های دریافتی با مقادیر ECS پر شده که جایگزین آن ها نمی شود.
  • برای سرورهایی که تعداد زیادی درخواست در ثانیه (بیش از 100 هزار) را پردازش می کنند، دستورالعمل "رشته های توزیع کننده"، که تعداد رشته‌ها را برای دریافت درخواست‌های دریافتی و توزیع آنها در بین رشته‌های کارگری تعیین می‌کند (فقط در هنگام استفاده از " منطقی است.pdns-distributes-queries=yes«)
  • تنظیمات اضافه شد عمومی-پسوند-لیست-فایل برای تعریف فایل خود با لیست پسوندهای عمومی دامنه‌هایی که کاربران می‌توانند زیر دامنه‌های خود را به جای فهرست داخلی PowerDNS Recursor ثبت کنند.

پروژه PowerDNS همچنین یک چرخه توسعه شش ماهه را اعلام کرد و نسخه اصلی بعدی PowerDNS Recursor 4.3 در ژانویه 2020 منتشر خواهد شد. به‌روزرسانی‌های نسخه‌های اصلی در طول یک سال و پس از آن شش ماه دیگر برای رفع آسیب‌پذیری‌ها منتشر خواهد شد. بنابراین، پشتیبانی از شاخه PowerDNS Recursor 4.2 تا ژانویه 2021 ادامه خواهد داشت. تغییرات چرخه توسعه مشابهی برای محصول PowerDNS Authoritative Server اتخاذ شده است که انتظار می رود به زودی نسخه 4.2 منتشر شود.

ویژگی های کلیدی PowerDNS Recursor:

  • ابزار جمع آوری آمار از راه دور؛
  • راه اندازی مجدد فوری؛
  • موتور داخلی برای اتصال هندلرها به زبان Lua.
  • پشتیبانی کامل از DNSSEC و DNS64;
  • پشتیبانی از RPZ (مناطق سیاست پاسخ) و توانایی تعریف لیست سیاه.
  • مکانیسم های ضد جعل؛
  • امکان نوشتن نتایج حل به عنوان فایل های BIND zone.
  • برای اطمینان از کارایی بالا، مکانیسم‌های مالتی پلکس اتصال مدرن در FreeBSD، Linux و Solaris (kqueue، epoll، /dev/poll) و همچنین یک تجزیه‌کننده بسته DNS با کارایی بالا که قادر به پردازش ده‌ها هزار درخواست موازی است استفاده می‌شود.

منبع: opennet.ru

اضافه کردن نظر