|
Начало Сетевая часть DNS и резолвинг имен BIND
Почему named слушает на странных портах UDP? Например:
$ sockstat -l | grep named
...
bind named 725 28 udp4 *:50382 *:*
bind named 725 29 udp6 *:50383 *:*
...
Неужели это хакеры взломали BIND? На самом деле, беспокоиться не стоит.
Дело здесь в том, что новый BIND (кажется, >=8.x) направляет свои запросы DNS
с эфемерного порта.
Когда BIND получает от клиента рекурсивный запрос, который
он не может удовлетворить из локального кэша, BIND должен перенаправить этот
запрос авторитетному серверу DNS. При этом наш BIND выступает в роли клиента DNS:
сначала он должен узнать, каков адрес авторитетного сервера, а потом обратиться
к нему. Из соображений эффективности сначала BIND посылает свои запросы по UDP.
Так как в UDP нет соединений, то получить ответ BIND может, только слушая все
дейтаграммы на том порту, с которого он направил запрос, и самостоятельно отбирая
среди этих дейтаграмм исходящие от удаленного сервера DNS.
При общении по TCP эту функцию отбора берет на себя транспортный
уровень сетевого стека, так что установленные соединения TCP жестко привязаны к паре
портов.
Создано: Yar Tikhiy
|