След една година и половина разработка релиз на кеширащия 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 000), е предложена директива „«, която определя броя на потоковете за приемане на идващи запитвания и тяхното разпределение между работни потоци (има смисъл само при използване на режим „«).
- Добавена е настройка за определяне на собствен файл със на домейни, в които потребителите могат да регистрират своите поддомейни, вместо вградения в 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
