NTPは外部のサーバから正確な時刻を得るためのプロトコルです。
家庭レベルであれば、特にサーバーを設ける必要はないのですが、デフォルトでインストールされているので活用してみましょう。
(「サーバー立てなくても・・・」という方は、「ntpd」をリムーブして、「ntpdate」をインストールし、cron等で定期的に同期すれば良いでしょう。)
NTPの設定
Raspbianには「ntpd」がデフォルトでインストールされているので、設定の説明から入ります。
- ntpdの設定ファイル「/etc/ntp.conf」を以下のように編集する。
(「「iburst」って何?」と思われるかもしれませんが、これは起動時に多くのNTPリクエストをサーバーに送り、サンプルを得ることで、同期を高速化するオプションなので、つけておくことを推奨。)(変更) server 0.debian.pool.ntp.org iburst server 1.debian.pool.ntp.org iburst server 2.debian.pool.ntp.org iburst server 3.debian.pool.ntp.org iburst ↓ #server 0.debian.pool.ntp.org iburst #server 1.debian.pool.ntp.org iburst #server 2.debian.pool.ntp.org iburst #server 3.debian.pool.ntp.org iburst pool ntp.nict.jp iburst pool ntp.jst.mfeed.ad.jp iburst server ats1.e-timing.ne.jp iburst (追加) disable monitor restrict -4 default ignore restrict -6 default ignore restrict ntp.nict.jp kod notrap nomodify nopeer noquery restrict ntp.jst.mfeed.ad.jp kod notrap nomodify nopeer noquery restrict ats1.e-timing.ne.jp kod notrap nomodify nopeer noquery restrict (時刻を参照させたいネットワークアドレス) mask (サブネットマスク) kod nomodify nopeer notrap
(「disable monitor」は、一時期、monlist機能を使ったDDoS攻撃が問題になり、その対策としてmonlist機能を無効にするためのもの。最新版では修正されていますが、大抵の人には不要な機能なので無効にしておくことを推奨。) - 以下のコマンドで、iptablesの設定を書き換え、NTPの通信ができるようにする。
ntpユーザのユーザーIDは以下のコマンドで調べられる。sudo iptables -A INPUT -j ACCEPT -s (時刻を参照させたいネットワークアドレス)/(サブネットマスク) --protocol udp --source-port 123 --destination-port 123 sudo iptables -A OUTPUT -j ACCEPT -m owner --uid-owner (ntpユーザのユーザーID) --protocol udp --source-port 123 --destination-port 123
2.5.の通り、iptablesの設定の変更後は以下のコマンドで設定を記録しておくこと。id -u ntp
sudo iptables-save | sudo tee /etc/iptables/rules.v4
- 以下のコマンドで、ntpdに設定を読み直しさせます。
sudo systemctl restart ntp
- 外部からNTPで時刻を取得してみる。
Windows XP以降では、コントロールパネルから「日付と時刻」に関する設定の「インターネット時刻」タブから設定できます。
Windowsのデフォルトは、「time.windows.com」という海外にあるアクセスが多いサーバーになっているので、サーバーを立てていなくても変更した方がよいでしょう。
それ以外のOSについては、「(使用しているOS)+NTPクライアント」で調べてください。(^^;)
4.参考サイト
- ntp.confについて詳しく知りたい場合は、ntp.conf(5) manページを参照