Днес редица големи DNS услуги и производители на DNS сървъри ще проведат съвместно събитие предназначени да фокусират вниманието върху с IP фрагментация при обработка на големи DNS съобщения. Това е второто подобно събитие, миналата година “DNS flag day” върху правилната обработка на EDNS заявки.
Участниците в инициативата за деня на флага на DNS 2020 призовават препоръчителните размери на буферите за EDNS да бъдат фиксирани на 1232 байта (размер на MTU 1280 минус 48 байта за заглавки), както и обработката на заявки чрез TCP е задължителна функция на сървърите. IN Само поддръжката за обработка на заявки чрез UDP е маркирана като задължителна, а TCP е посочен като желателен, но не е необходим за работа. Нов и изрично изброява 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 сървъри:
настроики {
edns-udp-размер 1232;
макс.-udp-размер 1232;
};
max-udp-полезен товар: 1232
net.bufsize(1232)
udp-truncation-threshold=1232
edns-изходящ-bufsize=1232
udp-truncation-threshold=1232
edns-размер на буфер: 1232
ipv4-edns-размер: 1232
ipv6-edns-размер: 1232
Източник: opennet.ru
