私はこれにしばらく気づきましたが、意味がありません。
なぜntpd
は非常に多くのアドレスでリッスンする必要があるのですか?
たとえば、Debianマシン:
$ netstat プロトコルローカルアドレス外部アドレスプログラム名 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
リストは、IPv4およびIPv6のブロードキャスト、ローカル、LAN、およびグローバルアドレスでリスニングしているnptd
を示しています。
なぜntpd
はそれほど乱雑なのですか?
私の このページの読み取り から、ntpは部分的にセキュリティ上の理由と部分的に認証上の理由のためにINADDR_ANY 0.0.0.0
アドレスを排他的に使用していないようです。
最初のポート123は1024未満であり、特権ポートと見なされ、ルートのみがそのポートにバインドできます。 Ntpは通常、起動後に特権を削除するように設定されています。私がメールリストから理解していることと、特権が削除されると、記事はソケットを開いて正しい送信元ポート123から応答できないので、ntpは特権を削除する前に割り当てられたすべてのアドレスのソケットを開きます。
私がntpの認証メカニズムのいくつかを読んだことから、基本的に、送信元ポートと宛先ポートが123であることを必要とし、それ以外は何も必要としません。
問題は完全に明確ではありません。 ワイルドカードアドレス0.0.0.0
に関するセクションを参照してください。これは、何らかの理由でntpdによって開かれますが、開発者が特別なまれな場合を除いて、コメントから実際に使用されるべきではありません完全にはわかりませんが、万が一のためにソケットを削除したくありません。
送信者の要求したアドレスとは異なるアドレスで返信パケットを送信するなど、多くの問題があるため、通常ntpdはワイルドカードアドレスでパケットを受け入れないように注意してください。ダニーメイヤー-2009年4月27日
あなたの質問に対する主な答えは、ここの上のコメントにあると思います。
それは全く無差別ではありません。 ipv4とipv6プロトコルの両方で、インターフェースのIPアドレスとlocalhostにバインドするだけです。それらの一部をリッスンする必要がないと思われる場合は、マニュアルで説明されているようにlisten
構成を変更するだけです(これは、使用している別のバージョンの場合があります)。
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
などのオプション)