2007/02/07

NTP broadcast設定

に「NTPDを使って、ブロードキャストで時刻同期させる方法が判らない」と書いた。この解決篇。

次のようなネットワークを考える。
NTPサーバ
192.168.55.133。外部の上位stratumサーバと同期し、ローカルネットワーク192.168.55/24にntpをブロードキャストする。
NTPクライアント
192.168.55.6。NTPDブロードキャストクライアントとして構成される。
まずはNTPサーバ側だが、上位stratumサーバとの時刻同期の部分は省くとして、ブロードキャストサーバとしての設定は、/etc/ntp.confに以下の様な行を追加すれば良い。
broadcast 192.168.55.255
また、ファイアウォール(iptables)が動作している場合は、ntp:udpを許可しておく必要がある。これは、FC5だと、system-config-networkを使えばよい。設定は、/etc/sysconfig/iptablesに以下のように反映される
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT


続いてNTPクライアント側だが、まず、/etc/ntp.confに以下のような行を追加する。
restrict 192.168.55.0 mask 255.255.255.0 nomodify notrap
broadcastclient
次に、NTPサーバと同様に、ファイアウォールが動作している場合は、ntp:udpを許可する。私は、これを忘れていたため、時刻同期ができなかったようだ。
なお、NTPブロードキャストで認証を行わない場合は、ntpdへ渡すオプションに-Aを付ける必要がある。起動時に行うには、/etc/sysconfig/ntpdOPTIONSの部分を編集する。

時刻同期ができているかどうかは、NTPクライアント側で次のように確認する。
# ntpstat
synchronised to NTP server (192.168.55.133) at stratum 4
time correct to within 167 ms
polling server every 128 s
#
ちなみに、NTPサーバ=NTPクライアント間の通信は、次のように行われているようだ
# tcpdump -n -p udp port ntp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
11:32:40.425917 IP 192.168.55.133.ntp > 192.168.55.255.ntp: NTPv4, Broadcast, length 48
11:32:41.385443 IP 192.168.55.6.ntp > 192.168.55.133.ntp: NTPv4, Client, length 48
11:32:41.386969 IP 192.168.55.133.ntp > 192.168.55.6.ntp: NTPv4, Server, length 48
ブロードキャストパケットが、NTPサーバからNTPクライアントに届いた後、NTPクライアントからNTPサーバへNTPパケットが送られ、NTPサーバからNTPクライアントに応答がある。そんなもんかな?

0 件のコメント: