web-dev-qa-db-ja.com

ntpdが非常に多くのポート/アドレスでリッスンするのはなぜですか?

私はこれにしばらく気づきましたが、意味がありません。

なぜ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はそれほど乱雑なのですか?

18
Abraham Vegh

私の このページの読み取り から、ntpは部分的にセキュリティ上の理由と部分的に認証上の理由のためにINADDR_ANY 0.0.0.0アドレスを排他的に使用していないようです。

最初のポート123は1024未満であり、特権ポートと見なされ、ルートのみがそのポートにバインドできます。 Ntpは通常、起動後に特権を削除するように設定されています。私がメールリストから理解していることと、特権が削除されると、記事はソケットを開いて正しい送信元ポート123から応答できないので、ntpは特権を削除する前に割り当てられたすべてのアドレスのソケットを開きます。

私がntpの認証メカニズムのいくつかを読んだことから、基本的に、送信元ポートと宛先ポートが123であることを必要とし、それ以外は何も必要としません。

問題は完全に明確ではありません。 ワイルドカードアドレス0.0.0.0に関するセクションを参照してください。これは、何らかの理由でntpdによって開かれますが、開発者が特別なまれな場合を除いて、コメントから実際に使用されるべきではありません完全にはわかりませんが、万が一のためにソケットを削除したくありません。

送信者の要求したアドレスとは異なるアドレスで返信パケットを送信するなど、多くの問題があるため、通常ntpdはワイルドカードアドレスでパケットを受け入れないように注意してください。ダニーメイヤー-2009年4月27日

あなたの質問に対する主な答えは、ここの上のコメントにあると思います。

15
Zoredache

それは全く無差別ではありません。 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などのオプション)

16
coredump