Нет способа (о котором я знаю) заставить стандартную библиотеку распознавателя (см. man 3 res_query
) использовать TCP для всех соединений, хотя отдельные приложения могут сделать это, установив флаг RES_USEVC
при запуске.
Также нет способа настроить BIND на отправку запросов только по TCP.
Я полагаю, что вы можете сделать это теоретически, запустив Unbound локально и установив флаг «do-udp» в false, а затем поместив 127.0.0.1 в конфигурацию DNS на панели управления сетью.
Однако в документации неясно, препятствует ли это тогда Unbound отвечать на запросы, полученные через UDP. Я проверю это ... Нет, это не сработало. Я написал автору по электронной почте ...
Тем не менее, вы действительно не должны этого делать - вы должны найти настоящую ошибку. Я твердо верю в необходимость поддержки TCP в DNS (я написал draft-ietf-dnsext-dns-tcp-needs-03), но он все еще должен использоваться в качестве запасного варианта, когда UDP-сообщения слишком велики, чтобы соответствовать в 512 байтах или в расширенном формате, совместимом с EDNS0.