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

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

Участниците в инициативата DNS flag day 2020 призовават да се фиксират препоръчителните размери на буферите за EDNS на ниво 1232 байта (размер MTU 1280 минус 48 байта за заглавия), а също така да се преведе обработката на запитвания по TCP в разред задължително поддържани на сървърите. В 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 сървъри, които предоставят DNS отговори по UDP над 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

    options {
    edns-udp-size 1232;
    max-udp-size 1232;
    };

  • Knot DNS

    max-udp-payload: 1232

  • Knot Resolver

    net.bufsize(1232)

  • PowerDNS Authoritative

    udp-truncation-threshold=1232

  • PowerDNS Recursor

    edns-outgoing-bufsize=1232
    udp-truncation-threshold=1232

  • Unbound

    edns-buffer-size: 1232

  • NSD

    ipv4-edns-size: 1232
    ipv6-edns-size: 1232

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

  • Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster