3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NTP(Chrony)サーバ構築

Last updated at Posted at 2022-11-03

数あるサーバ構築の中で、Chronyサーバ(NTP)構築は一番簡単らしいので実際に構築作業をした。

##環境
Rocky Linux 8.6

理解すること

・デーモンプロセスChronyd
・クライアントコマンドchronyc
・設定ファイル /etc/chrony.conf
・SV構築基本手順

前提知識

■SV構築の基本手順
①最新パッケージのDLインストール rpm dnf install
②設定ファイル編集 vi /etc
③デーモン再起動 systemctl start/restart
④FW許可 firewall-cmd
⑤動作確認

■NTP(Network Time Protocol):
時刻情報プロトコルで、NW上にあるコンピュータの時刻を同期させるために使用する。このプロトコルを利用するクライアントコンピュータと、NW上のNTPサーバから基準となる時刻情報を受け取り、その情報をもとに内部時計を修正する。

■Chrony:
前述したNTPと同じ意味と解釈していい。
CentOS7以降sytemdの時代になり、NTPではなくChronyに代替された。
※以下chronyの説明だけする。

Chrony SV構築手順

chrony.jpg

① 仮想SV2台用意(ChronyサーバとChronyクライアント)

→各々に2つNIC設置
・enp0s3:送信元NAT用(仮想LANから外部通信可)
・enp0s8:内部NW用

② 社内Chronyサーバとインターネット上のNTP SV(Stratum)と同期

③ 社内Chronyクライアントが社内Chronyサーバと同期

手順①はすでに構築済みのため、手順②から始める

仮想SVのNICのIP情報確認

Chrony SV
[root@localhost ~]# ip a s enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 172.16.1.1/24 brd 172.16.1.255 scope global noprefixroute enp0s8
       valid_lft forever preferred_lft forever
Chrony Cliant
[root@localhost ~]# ip a show enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 172.16.1.2/24 brd 172.16.1.255 scope global noprefixroute enp0s8
       valid_lft forever preferred_lft forever
       valid_lft forever preferred_lft forever

NTP(NW経由で時刻を同期するプロトコル)のポート番号を調べる。

/etc/servicesファイルは、TCPやUDPのポート番号と、そのポートを利用するサービス
(あるいはプロトコル名)の情報を対応させるファイル。

[root@localhost ~]# grep ntp /etc/services | grep 123
ntp             123/tcp
ntp             123/udp                         # Network Time Protocol

NTP通信には123番ポートが使われることを確認。

chronyデーモンのサービスの稼働状況確認

[root@localhost ~]# systemctl status chronyd.service 
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: e>
   Active: inactive (dead) since Fri 2022-11-04 03:33:41 JST; 3s ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)

3行目あたりActive: inactive (dead)とあるので、「chronyd.serviceというunitは存在するが稼働していない」

システム起動同時に、同unitを起動する設定になっているかデフォルトの状態を確認。

[root@localhost ~]# systemctl is-enabled chronyd.service 
disabled

システム起動時に chronydサービスは起動しない設定となっている。

chronyd PKGの確認とDL&インストール

rpm -qaコマンドで指定したPKGがインストール済みか照会。

[root@localhost ~]# rpm -qa | grep chrony
chrony-4.1-1.el8.rocky.0.1.x86_64

設定ファイルの編集 /etc/chrony.conf

設定ファイルにコピーしバックアップファイルを作成しておく。
何かあっても、デフォルトの状態に復元可能にするため。

[root@localhost ~]# cp -p  /etc/chrony.conf /etc/chrony.conf_org
[root@localhost ~]# ls -l /etc/chrony.conf*
-rw-r--r--. 1 root root 1108 11月 4 4:00 /etc/chrony.conf
-rw-r--r--. 1 root root 1108 11月 4 4:00 /etc/chrony.conf_org
/etc/chrony.conf
      3 #pool 2.rhel.pool.ntp.org iburst   //Red Hatがインターネット上に公開してるNTP SV。
      4 #今回は面白くないのでこれをコメントアウトし、他のNTP SVを指定する
      5 server ntp.nict.jp iburst

5行目に、NICT-NTP 独立行政法人 情報通信研究機構が公開してるNTP SVを指定した。
※頭にserverを付ける
※iburst ( initial burst ):起動時に4回連続Stratumに問合せ精度を上げる

/etc/chrony.conf
     23 # Allow NTP client access from local network.
     24 # 仮想LAN(内部NW)でNTPクライアントとサーバを同期させるためIP指定
     25 allow 172.16.1.0/24

25行目:社内Chronyクライアントが社内Chronyサーバと同期させるために、クライアントのIP記述

ログファイル格納されるディレクトリ確認

35 # Specify directory for log files.
36 logdir /var/log/chrony

保存して設定ファイルの編集完了

Stratumと同期をとれる状態か確認

timedatectlコマンドで設定ファイル編集しただけでは、tratumと同期をとれない状態と確認

[root@localhost ~]# timedatectl
               Local time: 金 2022-11-04 04:23:21 JST
           Universal time: 木 2022-11-03 19:23:21 UTC
                 RTC time: 木 2022-11-03 19:23:20
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: inactive
          RTC in local TZ: no

デーモンの起動

編集した設定ファイル/etc/chrony.confを読みに行かせるためにchronydデーモン(chronyd.service)の起動

[root@localhost ~]# systemctl status chronyd.service
→ inactive (dead)
[root@localhost ~]# systemctl start chronyd.service 
[root@localhost ~]# systemctl status chronyd.service 
Active: active (running)

プロセスも確認し、chronudデーモンが稼働している事をPIDレベルで確認

[root@localhost ~]# ps aux | grep chronyd | grep -v grep
chrony     11209  0.0  0.0 132568  3620 ?        S    04:29   0:00 /usr/sbin/chronyd

システム起動と同時にchronydも起動させる

[root@localhost ~]# systemctl enable chronyd.service 
Created symlink /etc/systemd/system/multi-user.target.wants/chronyd.service → /usr/lib/systemd/system/chronyd.service.
[root@localhost ~]# systemctl is-enabled chronyd.service 
enabled

Stratumと同期をとれる状態か確認

設定ファイルを編集し, chronydデーモンを起動したので編集した設定ファイルを読みにいった。
そのためStratumと同期とれているはず。
確認。

[root@localhost ~]# timedatectl 
               Local time: 金 2022-11-04 04:38:00 JST
           Universal time: 木 2022-11-03 19:38:00 UTC
                 RTC time: 木 2022-11-03 19:37:58
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Stratumと同期をとれる状態か確認できた。

LAN内のChrony SVがStratumと同期する様子の確認

[root@localhost ~]# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* ntp-a3.nict.go.jp             1   6   377    18  -3407us[-4422us] +/-   26ms

同期がとれている場合、左側に*
ntp-a3.nict.go.jpというStratumを使ってChrony SVが同期する様子の確認できた。

これで社内Chrony SVがStratumとインターネット経由で同期した。

chrony.jpg

FWの許可 firewall-cmd

現在のFWの状況を確認。

[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8
  services: cockpit dhcpv6-client ntp ssh

現在デフォルトでは、【①ssh ②dhcpv6クライアント③cockpit】の3つのサービスしかFWは許可されていない。

今、NTPサーバとして振舞いたいのでNTP(ポート番号123)を許可したい。
FWの許可設定を行う。

クライアントからのアクセスに対し、NTPを許可する。

色々なサービスがある中で今回FWを許可するntpがあるか確認

[root@localhost ~]# firewall-cmd --get-services | grep ntp
→ ntp 
長いので割愛

永続的にntpを許可する

[root@localhost ~]# firewall-cmd --add-service=ntp --permanent --zone=public
Warning: ALREADY_ENABLED: ntp
success

firewalldというデーモンに設定変更した内容を読みこませるため、再起動する。
FWにNTPが追加されたか確認する

[root@localhost ~]# systemctl restart firewalld.service
[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8
  sources: 
  services: cockpit dhcpv6-client ntp ssh telnet 

以上、LAN内のchrony SVの設定は終了。
現在、chrony SVのメモリにおいて、chronydデーモンは待機中。
誰かが時刻を聞きに来たら教えてあげるSV設置済みのため、
CLからのリクエストを待つ状態。 psコマンドで稼働中のchronydデーモンのプロセスID確認する。

[root@localhost ~]# ps aux | grep chrony | grep -v grep
chrony       782  0.0  0.1 151164  4540 ?        S    11月04   0:00 /usr/sbin/chronyd

メモリ上に展開されているPID782のchronydデーモンがクライアントからの時間リクエストを待っている状態です。
リクエストがあれば、chronydデーモンが正確な時間を返す。

Chrony CL側の設定ファイル編集()

①chrony PKGがインストール済みか・稼働状態を確認する
②クライアント側がアクセスするChrony SVのIPアドレスを編集ファイル/etc/chrony.confに記述
③chronydデーモンの再起動し編集した設定ファイルを読み込ませる

[root@localhost ~]# rpm -qa | grep chrony
chrony-4.1-1.el8.rocky.0.1.x86_64     
[root@localhost ~]# systemctl status chronyd.service 
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sat 2022-11-05 00:43:03 JST; 1s ago

インストール済みだが、サービスが稼働していない。

設定ファイルの編集

vi /etc/chrony.conf
→#pool 2.centos.pool.ntp.org iburst    :コメントアウト#をつける
server 172.16.1.2 iburst               :chronySVのIP追記

設定ファイル編集したので、デーモン再起動しデーモンの稼働状態を確認する

systemctl start chronyd.service ; systemctl status chronyd.service
→active (running)

以上、Chrony SV構築完了。

クライアントからのChronyアクセスのログは、SV側の/var/log/messagesに格納されている。

[root@localhost ~]# grep chrony /var/log/messages
Nov  4 04:29:05 localhost chronyd[11209]: Using right/UTC timezone to obtain leap second data
Nov  4 04:29:09 localhost chronyd[11209]: Selected source 133.243.238.244 (ntp.nict.jp)
Nov  4 04:29:09 localhost chronyd[11209]: System clock TAI offset set to 37 seconds
Nov  4 23:39:59 localhost chronyd[782]: chronyd version 4.1 starting (+CMDMON +NTP +REFCLOCK +RTC 

まとめ

Chrony SV構築手順:
①最新PKGのDLインストール
rpm -qa | grep chrony
dnf install chrony -y

②設定ファイルの編集
vi /etc/chrony.conf

③デーモン起動
systemctl start/restart chronyd

④FW許可
firewall-cmd --add-service=ntp --permanent --zone=public
systemctl restart firewalld

⑤動作確認
chronyc sources/tracking/ntpdata

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?