2020年10月20日 星期二

設定Linux主機同步時區與時間

 

前言

在Linux主機上設定時間同步向來不是很困難的事情,隨便Google都有,但是在Google後又沒經過驗證就擅自修改設定的情況下,主機出錯是沒人救得了你。
筆者我日前就只用Ntpdate+Cronjob的方式讓主機定時更新時間,且多台都是如此,但後來卻發現多台主機的時間都不相同,誤差了將近20秒!
此文便是修正,使用ntpd讓主機更新時間。

安裝ntpd

yum install ntpd

安裝後執行:

systemctl stop ntpd

先關閉ntpd,但最好確認是否成功關閉

ps -ef | grep ntpd
如果仍舊存在ntpd process,使用kill -9強制關閉

使用ntpdate先手動更新,然後再關閉ntpdate service

ntpdate time.stdtime.gov.tw
systemctl stop ntpdate

目的在於先讓主機跟校時主機手動同步一次,之後再由ntpd程式接管校時任務,避免只使用ntpdate校時產生時間跳躍的問題。

ntpd設定

vim /etc/ntp.conf

driftfile /var/lib/ntp/drift logfile /var/log/ntp.log restrict default nomodify notrap nopeer noquery restrict 127.0.0.1 restrict ::1 # Hosts on local network are less restricted. #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # 自己指定 NTP 伺服器 server tock.stdtime.gov.tw server watch.stdtime.gov.tw server time.stdtime.gov.tw prefer server clock.stdtime.gov.tw server tick.stdtime.gov.tw includefile /etc/ntp/crypto/pw # Key file containing the keys and key identifiers used when operating # with symmetric key cryptography. keys /etc/ntp/keys disable monitor

同步到硬體時鐘

vim /etc/sysconfig/ntpd

增加內容

SYNC_HWCLOCK=yes

手動強制使硬體時鐘與網路時間同步

hwclock --systohc

重啟ntpd服務

systemctl restart ntpd
systemctl enable ntpd
systemctl status ntpd

查看ntpd狀態

ntpq -p

remote refid st t when poll reach delay offset jitter ============================================================================== +211-22-103-157. 192.168.0.3 2 u 220 512 377 3.270 2.888 0.453 +118-163-81-63.H .IRIG. 1 u 490 512 377 2.713 2.590 0.266 *118-163-81-61.H 192.168.0.3 2 u 521 512 377 2.765 3.061 0.557 +211-22-103-158. 192.168.0.2 2 u 146 512 377 2.774 2.610 0.491 +118-163-81-62.H 192.168.0.3 2 u 412 512 377 2.892 2.742 0.419
  • Remote: “*” 已被優先選定為同步對象者, "+"良好且優先選用的備用時間伺服器
  • refid: REFERENCE IDENTIFICATION
    通常是伺服器的 IP 位址或外部時鐘的名稱,但也有可能是
    介於用戶端和伺服器之間的路由器。
  • st STRATUM:
    此項目用來測量所有用戶端距離實際時間來源的遠近。GPS 時鐘:
    Stratum=0;連接到 GPS 時鐘的 NTP Daemon:Stratum=1;其他
    (距離再遠一步的) 來源:Stratum=2。
  • t TYPE (類型)
    可能出現的類型如下:
    • l local (例如 GPS 時鐘)
    • u unicast (此為最常見的類型)
    • m multicast
    • b broadcast
    • netaddr (通常為 0)
  • when:此伺服器上次回應是在多久以前 (以秒計)
  • poll: POLL PERIOD
    向此伺服器提出查詢的週期 (以秒計)?若透過網路
    連線,通常會使用 512 秒 (約 8 分鐘) 和 1024 秒
    (約 17 分鐘),不過接有外部時鐘 (如 GPS) 的系統
    必須少於 64 秒。
  • reach: REACHABILITY 註:值越高越好
    用戶端連往伺服器的成功率
  • delay: ROUND TRIP TIME 註:值越小越好
    向伺服器提出詢問時,答覆封包返回所需的時間 (以毫秒
    計)。
  • offset: TIME DIFFERENCE 註:值越小越好
    伺服器時鐘與用戶端時鐘的時差 (以毫秒計)。
    當此數值大於 128 時,NTP 即會大幅加以調整 (而且 logfile會出現 Synchronization Lost 訊息)。

NTP 真正的功能在於管理 Offset 數值,並且將其降至最低。


沒有留言:

張貼留言