След година и половина разработки релиз на кеширащ DNS сървър , който отговаря за рекурсивното преобразуване на имена. PowerDNS Recursor е построен на една кодова база с PowerDNS Authoritative Server, но рекурсивните и авторитетните DNS сървъри на PowerDNS се развиват в рамките на различни цикли на разработка и се издават като отделни продукти. Кодът на проекта под лицензия GPLv2.
В новата версия са отстранени всички забележки, свързани с обработката на DNS пакети с флагове EDNS. В старите версии PowerDNS Recursor до 2016 година беше практикувано игнорирането на пакети с неподдържани флагове EDNS, без изпращане на отговор в стария формат, отхвърляйки флаговете EDNS, както изисква спецификацията. По-рано подобно нестандартно поведение се подкрепяше в BIND под формата на обходно решение, но в рамките на в февруари инициатива , разработчиците на DNS сървъри решиха да се откажат от този хак.
В PowerDNS основните проблеми в обработката на пакети с EDNS бяха отстранени още през 2017 година в изданието 4.1, а в издадената през 2016 година версия 4.0 се появяваха отделни несъвместимости, възникващи при определени обстоятелства и в общи линии не пречещи на нормалната работа. В PowerDNS Recursor 4.2, както и в , са премахнати обходните пътища за поддръжка на авторитетни сървъри, които неправилно отговарят на заявки с флагове EDNS. До сега, ако след изпращане на заявка с флагове EDNS след определен период от време не постъпваше отговор, DNS сървърът смяташе, че разширените флагове не се поддържат и изпращаше повторна заявка без флагове EDNS. Отсега нататък това поведение е деактивирано, тъй като наличието на подобен код водеше до увеличаване на закъсненията поради повторно изпращане на пакети, увеличаване на натоварването на мрежата и неяснота при липса на отговор заради мрежови сривове, а също така пречеше на внедряването на функции, базирани на EDNS, като прилагане на DNS Cookies за защита от DDoS атаки.
Следващата година е решено да се проведе мероприятие , което цели да фокусира вниманието върху с 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 е намалена и стойността на параметъра truncation-threshold, отговарящ за отрязването на отговорите до клиента.
Други промени в PowerDNS Recursor 4.2:
- Добавена е поддръжка на механизма (X-Proxied-For), представляващ еквивалент на HTTP заглавката X-Forwarded-For за DNS, позволяващ предаване на информация за IP адреса и номера на порта на първоначалния инициатор на запитването, пренасочено през междинни проксита и балансировачи на натоварването (например dnsdist). За активиране на XPF са предвидени опции «» и „«;
- Подобрена е поддръжката на EDNS разширението (ECS), позволяваща да се предават в DNS-запитите на авторитетен DNS-сървър информация за подсетите, от които е изпратен транслираният по веригата първоначален запит (данни за оригиналната подсет на клиента са необходими за ефективната работа на мрежите за доставка на съдържание). В новата версия са добавени настройки за селективен контрол върху приложението на EDNS Client Subnet: «» със списък на мрежовите маски, за които IP ще бъде използван в ECS в изходящите запитвания. За адресите, които не попадат под посочените маски, ще бъде използван общ адрес, указан в директивата ««. Чрез директивата «» може да се определят подсетите, от които входящите запитвания с попълнени стойности ECS няма да бъдат заменени;
- За сървърите, обработващи голям брой запитвания в секунда (над 100 хиляди), е предложена директивата ««, определяща броя на потоковете за получаване на входящи запитвания и тяхното разпределение между работните потоци (има смисъл само при използване на режим ««).
- Добавена настройка за определяне на собствен файл с домейни, в които потребителите могат да регистрират своите подсайтове, вместо вградения в PowerDNS Recursor списък.
Проектът PowerDNS също така обяви преминаването към шестмесечен цикъл на разработка, съгласно който следващата значителна версия на PowerDNS Recursor 4.3 се очаква през януари 2020 година. Актуализации за значителни версии ще се извършват в течение на годината, след което още половин година ще се издават поправки на уязвимости. Така поддръжката на версията PowerDNS Recursor 4.2 ще продължи до януари 2021 година. Аналогични промени в цикъла на разработка са приети и за продукта PowerDNS Authoritative Server, чийто 4.2 е в очакване да излезе скоро.
Основни характеристики на PowerDNS Recursor:
- Средства за отдалечено събиране на статистика;
- Мгновен рестарт;
- Вграден двигател за свързване на обработчици на език Lua;
- Пълна поддръжка за DNSSEC и ;
- Поддръжка на RPZ (Response Policy Zones) и възможност за определяне на черни списъци;
- Механизми за борба със спуфинг;
- Възможност за записване на резултатите от резолвиране под формата на файлове със зони BIND.
- За осигуряване на висока производителност се използват съвременни механизми за мултиплексиране на връзки в FreeBSD, Linux и Solaris (kqueue, epoll, /dev/poll), както и високопроизводителен парсер за DNS пакети, способен да обработва десетки хиляди паралелни запитвания.
Източник: opennet.ru
