2008/11/03

NTPDとIP multicast

以前このブログでNTPDについて書いた。この中で、『注意!IPマルチキャストに関して訂正・本編』という記事を書いたが、これに間違いが見つかったので訂正する。
Ntpdは、その認証機構がIPアドレスと結びついているため、マルチキャストパケットを送信する際に、送信元となる自分自身のIPアドレスをntpd自身が明示的に知る必要があります。そのため、IPマルチキャスト用のソケット(socket)を取得する際、そのIPマルチキャストアドレス(通常なら 224.0.1.1)で経路情報(routing table)を引き、得られたネットワークインターフェースのIPアドレスを送信元IPアドレスとするようです。
この赤字の部分が誤り。
まず、マルチキャストサーバモードの時の動作だが、manpageの記述も間違っている。

broadcast
For type b and m addresses (only), this command mobilizes a persistent broadcast mode association. Multiple commands can be used to specify multiple local broadcast interfaces (subnets) and/or multiple multicast groups. Note that local broadcast messages go only to the interface associated with the subnet specified, but multicast messages go to all interfaces.
IPマルチキャストを使う場合、つまり、/etc/ntp.confの中で、broadcastコマンドにIPマルチキャストアドレス(m address)を指定した場合、すべてのインターフェースに対してマルチキャストメッセージが送信される、となっている。実際には、この通りにはならない。
実際には、複数のインターフェースを持っている場合には、マルチキャストメッセージが送信されるのは、それらのインターフェースの中の一つのみ。しかも、それはip route showで表示されるルーティングテーブルとは無関係の様だ。
この現象は、NTP BugzillaBug ID 785として扱われているようだ。バージョン4.2.6辺りで修正されるのかもしれない。

0 件のコメント: