ntpサーバの構築

2018年6月25日 2023年12月11日

この記事では、linuxでの時刻同期の設定方法を紹介します。

複数のサーバを構築している場合、サーバ間の連携やログのタイムスタンプを合わせるために、サーバ内の時刻が同じであることは必須です。 そこで、今回はNTPサーバを1台構築し、サーバのシステム時刻を日本標準時間に自動的に合わせます。併せて、その他のサーバは構築したNTPサーバを参照させることで、管理しているサーバの時刻を同期させます。

NTPサーバ機能の有名所としては、ntpdとchronyがありますが、今回はntpdでNTPサーバを構築していきます。

なお、linuxにおけるntpdの設定は基本的に共通していますが(バージョンによる違いはあります)、今回はArchLinuxにおけるntpdの設定になります。

ntpdのインストール

サーバにて以下のコマンドでntpをインストールします。

Terminal
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は使用されません。

/etc/ntp.conf
# 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デーモンを起動します。

Terminal
sudo systemctl start ntpd.service

さらに、以下のコマンドで ntp デーモンを起動時に有効します。

Terminal
sudo systemctl enable ntpd.service

ntpサーバの確認

以下のコマンドを実行して、同期先のサーバの前に+か*が付与されていれば問題ありません。

Terminal
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内で同期することが可能となります。

Posted by mako
関連記事
コメント
...