Inisyatiba ng DNS flag day 2020 para tugunan ang mga isyu sa fragmentation at suporta sa TCP

Сегодня ряд крупных DNS-сервисов и производителей DNS-серверов проведут совместное мероприятие Araw ng bandila ng DNS 2020dinisenyo upang ituon ang pansin sa ang desisyon mga problema с IP-фрагментацией при обработке DNS-сообщений большого размера. Это второе подобное мероприятие, в прошлом году «DNS flag day» был сосредоточен на корректной обработке запросов EDNS.

Участники инициативы DNS flag day 2020 призывают зафиксировать рекомендованные размеры буферов для EDNS до значений на уровне 1232 байтов (размер MTU 1280 минус 48 байт для заголовков), а также isalin обработку запросов по TCP в разряд обязательно поддерживаемых на серверах. В RFC 1035 обязательной помечена только поддержка обработки запросов по UDP, а TCP указан как желательный, но не обязательный для работы. Новые RFC 7766 и RFC 5966 явно относят TCP к числу обязательных возможностей, необходимых для корректной работы DNS. В рамках проводимой инициативы предлагается форсировать переход от отправки запросов по UDP к применению TCP в случаях, когда установленного размера буфера EDNS недостаточно.

Предложенные изменения избавят от путаницы с выбором размера буфера EDNS и решат проблему с фрагментацией больших UDP-сообщений, обработка которых нередко приводит к потере пакетов и таймаутам на стороне клиента. На стороне клиента размер буфера EDNS будет постоянным, а большие ответы сразу будут отправляться клиенту по TCP. Исключение отправки больших сообщений по UDP также решит проблемы с отбрасыванием больших пакетов на некоторых межсетевых экранах и позволит блокировать mga pag-atake para sa pagkalason sa cache ng DNS, batay sa pagmamanipula ng mga pira-pirasong UDP packet (kapag nahati sa mga fragment, ang pangalawang fragment ay hindi kasama ang isang header na may isang identifier, kaya maaari itong mapeke, kung saan ito ay sapat lamang para sa checksum upang tumugma) .

Начиная с сегодняшнего дня участвующие в инициативе провайдеры 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 работа данных серверов и так нестабильна.

Администраторам авторитетных (authoritative) DNS-серверов следует убедиться, что их сервер отвечает по TCP на сетевом порту 53 и данный TCP-порт не блокируется межсетевым экраном. Авторитетный DNS-сервер также не должен отправлять UDP-ответы, размер которых превышает
запрошенный размер буфера EDNS. На самом сервере размер буфера EDNS должен быть установлен в 1232 байт. К резолверам предъявляются примерно такие же требования — обязательная возможность ответа по TCP, обязательная поддержка отправки повторных запросов по TCP при получении урезанного ответа UDP и установка буфера EDNS в 1232 байт.

За настройку размера буфера EDNS в разных DNS-серверах отвечают следующие параметры:

  • MAGBIGKIS

    mga pagpipilian {
    edns-udp-size 1232;
    max-udp-size 1232;
    };

  • KnotDNS

    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

  • walang tali

    edns-buffer-size: 1232

  • NSD

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

    Pinagmulan: opennet.ru

  • Magdagdag ng komento