ntpサーバの構築
この記事では、linuxでの時刻同期の設定方法を紹介します。
複数のサーバを構築している場合、サーバ間の連携やログのタイムスタンプを合わせるために、サーバ内の時刻が同じであることは必須です。 そこで、今回はNTPサーバを1台構築し、サーバのシステム時刻を日本標準時間に自動的に合わせます。併せて、その他のサーバは構築したNTPサーバを参照させることで、管理しているサーバの時刻を同期させます。
NTPサーバ機能の有名所としては、ntpdとchronyがありますが、今回はntpdでNTPサーバを構築していきます。
なお、linuxにおけるntpdの設定は基本的に共通していますが(バージョンによる違いはあります)、今回はArchLinuxにおけるntpdの設定になります。
ntpdのインストール
サーバにて以下のコマンドでntpをインストールします。
sudo pacman -S ntp
ntpデーモンの設定
/etc/ntp.confを編集して、ntpデーモンの設定を行います。
ntpdの同期先の指定
デフォルトでは、ntpdの同期先の指定方法してserverが利 用されていますが、poolで指定すると、DNSのラウンドロビンのサーバも指定できますので、poolで指定します。 ntpdの同期先としては、インターネットマルチフィード株式会社が運営をするPublic NTPサーバを利用します。 また、インターネットにアクセスできない場合でも、時刻の提供を続行できるように サーバのlocal timeを追加します。その際に、fudgeを使ってstratum 12 サーバーとして 追加することで、インターネットが接続可能な限りlocal timeは使用されません。
# server 0.arch.pool.ntp.org
# server 1.arch.pool.ntp.org
# server 2.arch.pool.ntp.org
# server 3.arch.pool.ntp.org
pool ntp.jst.mfeed.ad.jp
server 127.127.1.1
fudge 127.127.1.1 stratum 12
restrictの指定
restrictを以下のように設定して、ntpdの同期先との同期、サーバ自身及びLAN(ここでは、192.168.10.0/24)内からの時刻問い合わせを許可します。
restrict default kod limited nomodify nopeer noquery notrap # default設定
restrict 127.0.0.1 # サーバ自身のアクセス許可(ipv4)
restrict ::1 # サーバ自身のアクセス許可(ipv6)
restrict source notrap nomodify noquery # ntpdの同期先との同期許可
restrict 192.168.10.0 mask 255.255.255.0 nomodify nopeer noquery # LAN内からの時刻問い合わせ許可
ntpデーモンの起動と有効化
以下のコマンドで ntpデーモンを起動します。
sudo systemctl start ntpd.service
さらに、以下のコマンドで ntp デーモンを起動時に有効します。
sudo systemctl enable ntpd.service
ntpサーバの確認
以下のコマンドを実行して、同期先のサーバの前に+か*が付与されていれば問題ありません。
ntpq -p
# remote refid st t when poll reach delay offset jitter
# ==============================================================================
# ntp.jst.mfeed.a .POOL. 16 p - 64 0 0.000 0.000 0.000
# LOCAL(1) .LOCL. 12 l 478 64 200 0.000 0.000 0.000
# +ntp1.jst.mfeed. 133.243.236.17 2 u 60 64 377 2.790 0.190 0.636
# +ntp3.jst.mfeed. 133.243.236.17 2 u 8 64 377 2.808 -0.018 0.755
# *ntp2.jst.mfeed. 133.243.236.17 2 u 4 64 377 2.738 1.666 0.637
iptablesの設定
NTPサーバとしてLAN内に公開しますので、iptablesで123番ポートへアクセスを許可します。
iptablesの具体的な設定方法は、iptablesの設定を参照ください。
# 123番ポートへのアクセス許可
iptables -A INPUT -p udp --dport 123 -j ACCEPT
終わりに
今回はntpサーバの構築を紹介しました。
今後は、他のサーバを構築した際に、今回設定したNTPサーバを参照することで、時刻をLAN内で同期することが可能となります。