Инициатива за деня на флага на DNS 2020 за справяне с проблемите с фрагментацията и поддръжката на TCP

Днес редица големи DNS услуги и производители на DNS сървъри ще проведат съвместно събитие Ден на флага на DNS 2020 гпредназначени да фокусират вниманието върху решението проблеми с IP фрагментация при обработка на големи DNS съобщения. Това е второто подобно събитие, миналата година “DNS flag day” беше фокусиран върху правилната обработка на EDNS заявки.

Участниците в инициативата за деня на флага на DNS 2020 призовават препоръчителните размери на буферите за EDNS да бъдат фиксирани на 1232 байта (размер на MTU 1280 минус 48 байта за заглавки), както и превеждам обработката на заявки чрез TCP е задължителна функция на сървърите. IN RFC 1035 Само поддръжката за обработка на заявки чрез UDP е маркирана като задължителна, а TCP е посочен като желателен, но не е необходим за работа. Нов RFC 7766 и RFC 5966 изрично изброява TCP като необходима способност за правилното функциониране на DNS. Инициативата предлага да се принуди преходът от изпращане на заявки през UDP към използване на TCP в случаите, когато установеният размер на EDNS буфера е недостатъчен.

Предложените промени ще премахнат объркването при избора на размера на EDNS буфера и ще решат проблема с фрагментацията на големи UDP съобщения, чиято обработка често води до загуба на пакети и изчакване от страна на клиента. От страна на клиента размерът на EDNS буфера ще бъде постоянен и големите отговори ще бъдат изпращани незабавно на клиента през TCP. Избягването на изпращане на големи съобщения през UDP също ще реши проблеми с изпускането на големи пакети на някои защитни стени и ще позволи блокиране атаки за отравяне на DNS кеша, базирано на манипулиране на фрагментирани UDP пакети (когато е разделен на фрагменти, вторият фрагмент не включва хедър с идентификатор, така че може да бъде подправен, за което е достатъчно само контролната сума да съвпадне) .

От днес участващите DNS доставчици, включително CloudFlare, Quad 9, Cisco (OpenDNS) и Google, постепенно ще се промени Размер на буфера на EDNS от 4096 до 1232 байта на неговите DNS сървъри (промяната на EDNS ще бъде разпределена в рамките на 4-6 седмици и ще покрива нарастващ брой заявки с течение на времето). Отговорите на UDP заявки, които не се вписват в новото ограничение, ще бъдат изпращани чрез TCP. Доставчиците на DNS сървъри, включително BIND, Unbound, Knot, NSD и PowerDNS, ще пуснат актуализации за промяна на размера на EDNS буфера по подразбиране от 4096 байта на 1232 байта.

В крайна сметка тези промени могат да доведат до проблеми с разрешаването при достъп до DNS сървъри, чиито UDP DNS отговори надвишават 1232 байта и не могат да изпратят TCP отговор. Експеримент, проведен в Google, показа, че промяната на размера на EDNS буфера практически няма ефект върху процента на неуспех - с буфер от 4096 байта, броят на съкратените UDP заявки е 0.345%, а броят на недостижими повторни опити през TCP е 0.115%. При буфер от 1232 байта тези цифри са 0.367% и 0.116%. Превръщането на TCP поддръжката в задължителна DNS функция ще причини проблеми с около 0.1% от DNS сървърите. Отбелязва се, че в съвременните условия, без TCP, работата на тези сървъри вече е нестабилна.

Администраторите на авторитетни DNS сървъри трябва да гарантират, че техният сървър отговаря чрез TCP на мрежов порт 53 и че този TCP порт не е блокиран от защитна стена. Уважаван DNS сървър също не трябва да изпраща UDP отговори, които са по-големи от
искан размер на EDNS буфер. На самия сървър размерът на EDNS буфера трябва да бъде зададен на 1232 байта. Резолвърите имат приблизително същите изисквания – задължителна възможност за отговор през TCP, задължителна поддръжка за изпращане на повтарящи се заявки през TCP при получаване на пресечен UDP отговор и настройка на EDNS буфера на 1232 байта.

Следните параметри са отговорни за настройката на размера на EDNS буфера в различни DNS сървъри:

  • BIND

    настроики {
    edns-udp-размер 1232;
    макс.-udp-размер 1232;
    };

  • Възел DNS

    max-udp-полезен товар: 1232

  • Разрешител на възли

    net.bufsize(1232)

  • PowerDNS авторитетен

    udp-truncation-threshold=1232

  • PowerDNS рекурсор

    edns-изходящ-bufsize=1232
    udp-truncation-threshold=1232

  • свободен

    edns-размер на буфер: 1232

  • NSD

    ipv4-edns-размер: 1232
    ipv6-edns-размер: 1232

    Източник: opennet.ru

  • Добавяне на нов коментар