本篇介紹如何在 Linux 中安裝並設定 NTP 網路校時服務,讓系統自動校正時間。
系統的時間對於 Linux 伺服器來說是很重要的,如果系統的時間不準確,會連帶產生許多安全性問題。若要讓 Linux 系統維持正確的時間,可以透過 NTP 網路校時的方式來處理,以下是各種 NTP 網路校時的使用方式。
手動更新系統時間
如果想要以手動更新系統時間,可以執行:
# 網路校時
sudo ntpdate time.stdtime.gov.tw
13 Apr 11:16:01 ntpdate[19617]: step time server 118.163.81.61 offset 0.515170 sec
這裡所使用的 time.stdtime.gov.tw
這台 NTP 伺服器是由中華電信所提供的,其可用的 NTP 伺服器如下:
tock.stdtime.gov.tw
watch.stdtime.gov.tw
time.stdtime.gov.tw
clock.stdtime.gov.tw
tick.stdtime.gov.tw
校正時間時,任選一台伺服器來使用即可。
校正完系統時間之後,建議順便將正確的時間寫入 BIOS 的時鐘:
# 將時間寫入 BIOS sudo hwclock -w
設定 ntpdate
定期自動校時
若要設定讓系統可以定期自動校時,直接將校時的指令寫在 crontab 中即可,編輯 /etc/crontab
設定檔,加入一行:
# 定時自動網路校時 10 5 * * * root (/usr/sbin/ntpdate time.stdtime.gov.tw && /sbin/hwclock -w) &> /dev/null
這一行設定會讓系統自動在每天早上 5 點 10 分進行網路校時,並將時間寫入 BIOS 的時鐘。
NTP 服務
如果想讓 Linux 可以自動校時外,也提供其他台機器校時服務,可以安裝並啟動 ntpd
服務,以下我以 CentOS Linux 為例,示範安裝與設定方式,其他的 Linux 發行版的操作方式則大同小異。
ntpd
)本身就有自動校時的功能,若啟用 NTP 服務後,就不可以使用 ntpdate
的方式校時,兩者僅能擇一使用。安裝 ntp
套件
檢查一下系統是否有安裝 ntp
這個套件:
yum list installed ntp
如果出現 Error: No matching Packages to list
的訊息,就表示系統上沒有安裝 ntp
套件,請用 yum
安裝:
sudo yum install ntp
設定 NTP 服務
編輯 /etc/ntp.conf
設定檔,修改一下 NTP 伺服器的設定,將原本的 server
設定註解掉,改為自己指定的 NTP 伺服器:
# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst # 自己指定 NTP 伺服器 server tock.stdtime.gov.tw server watch.stdtime.gov.tw server time.stdtime.gov.tw server clock.stdtime.gov.tw server tick.stdtime.gov.tw
這裡若是不想修改設定檔,直接使用 CentOS Linux 預設的伺服器也可以運作,只是那些預設的 NTP 伺服器距離自己比較遠,校時的時候會花比較久一點,但也是可以正確校時的。
啟用 NTP 服務
修改好 NTP 的設定檔之後,啟動 ntpd
服務:
# 啟動 ntpd 服務
sudo systemctl start ntpd
查看一下 ntpd
服務是否正常啟動:
# 檢查 ntpd 服務狀態
systemctl status ntpd
● ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2018-04-13 11:33:48 CST; 7s ago Process: 31593 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 31594 (ntpd) CGroup: /system.slice/ntpd.service └─31594 /usr/sbin/ntpd -u ntp:ntp -g [略]
若 Active
欄位顯示 active (running)
就表示 ntpd
有正常在執行。
確認無誤後,再設定開機自動啟動 ntpd 服務:
# 設定開機自動啟動 ntpd 服務
sudo systemctl enable ntpd
參考資料:鳥哥的 Linux 私房菜