Назад | Перейти на главную страницу

Почему ntpd прослушивает так много портов / адресов?

Я заметил это некоторое время, и для меня это никогда не имело никакого смысла:

Почему ntpd нужно слушать столько адресов?

Например, машина Debian:

$ netstat
Proto Local Address Foreign Address Program name
udp   0.0.0.0:123   0.0.0.0:*       ntpd
udp   127.0.0.1:123 0.0.0.0:*       ntpd
udp   [LAN]:123     0.0.0.0:*       ntpd
udp   [IPv4]:123    0.0.0.0:*       ntpd
udp6  :::123        :::*            ntpd
udp6  ::1:123       :::*            ntpd
udp6  [link-local]  :::*            ntpd
udp6  [IPv6]        :::*            ntpd

Это (отредактировано) netstat листинг показывает nptd прослушивание широковещательных, локальных, LAN и глобальных адресов для IPv4 и IPv6.

Почему ntpd такой беспорядочный секс?

Это вовсе не беспорядочные половые связи. Это просто привязка к IP-адресам интерфейса и localhost, как по протоколам ipv4, так и ipv6. Если вы считаете, что некоторые из них не следует слушать, просто измените listen config, как описано в руководстве (это может быть для другой версии, которую вы используете):

 listen on address
         Specify a local IP address or a hostname the ntpd(8) daemon
         should listen on. If it appears multiple times, ntpd(8) will
         listen on each given address. If the exact string '*' is given as
         an address, ntpd(8) will listen on all local addresses. Other-
         wise, address can be followed by an asterisk ('*') and a UDP port
         number to listen on instead of the default 123. ntpd(8) does not
         listen on any address by default. For example:

               listen on *
               listen on 127.0.0.1
               listen on ::1

В некоторых других версиях вам нужно будет изменить параметры на ntpd сам демон, чтобы изменить, какие протоколы / интерфейсы слушать (такие параметры, как -4, -6, -I)

От моего чтение этой страницы, похоже, что ntp не использует INADDR_ANY 0.0.0.0 адрес исключительно частично из соображений безопасности, а частично из соображений аутентификации.

Первый порт 123 меньше 1024 и поэтому считается привилегированным портом, и только root может подключиться к этому порту. Ntp обычно сбрасывает привилегии после запуска. Насколько я понимаю из списков рассылки, и в статье после сброса привилегий невозможно открыть сокет для ответа с правильного исходного порта 123, поэтому ntp открывает сокеты для каждого назначенного адреса, прежде чем он отбрасывает привилегии.

Из того, что я прочитал, некоторые механизмы аутентификации для ntp в основном требуют, чтобы порт источника и назначения был 123 и ничего больше.

Дело не совсем понятно. См. Раздел о адрес подстановочного знака 0.0.0.0, по какой-то причине он открывается ntpd, но, судя по комментариям, его никогда не следует использовать, за исключением некоторых особых редких случаев, в которых разработчики не совсем уверены, но они не хотят удалять сокет, на всякий случай сломают.

Обратите внимание, что обычно ntpd не должен принимать пакеты по адресам с подстановочными знаками, поскольку при этом возникает ряд проблем, включая отправку ответных пакетов на адрес, отличный от адреса, запрошенного отправителем. Дэнни Мэйер - 27 апреля 2009 г.

Я думаю, что главный ответ на ваш вопрос находится в приведенном выше комментарии.