Могу ли я использовать TCP в качестве протокола DNS-запроса в Mac OS?

1425

Я использую Mac OS, Snow Leopard 10.6.2, и я страдаю от потери пакетов UDP во время DNS-запроса. Так что мой веб-браузер слишком медленный для серфинга в интернете. Но это сработало очень хорошо, когда я попробовал DNS-запрос по TCP с помощью команды dig.

Тем не менее, я не могу найти какой-то управляющий переключатель для использования TCP во время DNS-запроса. Есть ли способ изменить это в Mac OS?

Спасибо.

3

1 ответ на вопрос

4
Alnitak

Нет способа (о котором я знаю) заставить стандартную библиотеку распознавателя (см. 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.

ага, найдите причину потери пакетов. не откладывайте эту проблему, говоря: «хорошо, tcp позаботится об этом за меня, просто продолжайте посылать пакеты, пока запрос не будет завершен». akira 13 лет назад 1

Похожие вопросы