Я заметил это некоторое время, и для меня это никогда не имело никакого смысла:
Почему 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 г.
Я думаю, что главный ответ на ваш вопрос находится в приведенном выше комментарии.