網絡時間協議(NTP)用來同步網絡上不同主機的系統時鐘。所有受管理的主機可以與一臺名為NTP服務器的指定時間服務器同步時間。另一方面,NTP服務器則與任何公共NTP服務器或者你所選擇的任何服務器同步自己的時間。所有NTP管理的設備其系統時間同步時可以精確到毫秒級。
在企業環境下,如果企業不想為NTP流量打開防火墻,就有必要搭建一臺內部的NTP服務器,讓員工可以使用內部服務器,而不是公共NTP服務器。我們在本教程中將介紹如何將CentOS系統配置成NTP服務器。在具體介紹細節之前,不妨先來了解NTP概念。
我們為何需要NTP?
由于制造方面的差異,所有(非原子)時鐘并不完全以一樣的速度運行。有些時鐘往往走得快點,而有些時鐘走得慢點。所以經過一段很長的時間后,一個時鐘的時間與另一個時鐘逐漸發生偏差,導致所謂的“時鐘漂移”或“時間漂移”。為了盡量減小時鐘漂移影響,使用NTP的主機應該定期與指定的NTP服務器進行聯系,保持時鐘同步。
不同主機之間的時間同步對計劃備份、入侵檢測日志、分布式任務調度或事務簿記之類的事務而言很重要,甚至可能是監管合規所需要的一個要求。
NTP層次結構
NTP時鐘以分層層次結構來加以組織。該層次結構中的每一層被稱為層(stratum)。層這個概念描述了某機器距離權威時間源有多少個NTP跳。
Stratum 0含有幾乎沒有時間漂移的時鐘,比如原子鐘。這些時鐘無法通過網絡直接使用。Stratum N(N >1)服務器對照Stratum N-1服務器同步其時間。Stratum N時鐘可以通過網絡彼此連接。
NTP最多可支持層次結構中的15層。Stratum 16被認為不同步、無法使用。
準備CentOS服務器
現在不妨接著講講如何在CentOS上搭建NTP服務器。
首先,我們需要確保服務器的時區正確設置。在CentOS 7中,我們可以使用timedatectl命令來查看和更改服務器的時區(比如“Australia/Adelaide”)。
# timedatectl list-timezones | grep Australia
# timedatectl set-timezone Australia/Adelaide
# timedatectl
接下來使用yum,安裝必要的軟件。
# yum install ntp
然后,我們將添加用來同步時間的全局NTP服務器。
# vim /etc/ntp.conf
server 0.oceania.pool.ntp.org
server 1.oceania.pool.ntp.org
server 2.oceania.pool.ntp.org
server 3.oceania.pool.ntp.org
默認情況下,NTP服務器日志保存在/var/log/messages中。如果你想使用自定義的日志文件,也可以指定該文件的位置。
logfile /var/log/ntpd.log
如果你果真選擇使用自定義的日志文件,確保更改其所有權和SELinux上下文。
# chown ntp:ntp /var/log/ntpd.log
# chcon -t ntpd_log_t /var/log/ntpd.log
現在啟動NTP服務,確保它已添加到啟動項。
# systemctl restart ntp
# systemctl enable ntp
[page]驗證NTP服務器時鐘
我們可以使用ntpq命令,檢查本地服務器的時鐘如何通過NTP實現同步。
下面這張表解釋了上述輸出列。
控制對NTP服務器的訪問
在默認情況下,NTP服務器允許來自所有主機的入站查詢。如果你想過濾入站NTP同步連接,可以在防火墻中添加一條規則,以過濾流量。
# iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 123 -j ACCEPT
# iptables -A INPUT -p udp --dport 123 -j DROP
該規則將允許來自192.168.1.0/24的NTP服務器(經由端口UDP/123),拒絕來自其他所有網絡的流量。你可以更新規則以符合自己的要求。
配置NTP客戶端
1. Linux
NTP客戶端主機需要ntpdate程序包來對照服務器同步其時間。可以使用yum或apt-get,很容易安裝該程序包。安裝該程序包后,運行帶服務器IP地址的命令。
# ntpdate <server-IP-address>
如果是基于RHEL和Debian的系統,命令完全一樣。
2. Windows
如果你使用Windows,在日期和時間設置下尋找“Internet時間”。
3. 思科設備
如果你想同步思科設備的時間,可以從全局配置模式使用下面這個命令。
# ntp server <server-IP-address>
來自其他廠商的具有NTP功能的設備在Internet時間方面有各自的參數。如果你想與NTP服務器同步時間,就要查閱設備的說明文檔。
結束語
總而言之,NTP這種協議可以讓你所有主機上的時鐘保持同步。我們已演示了如何搭建一臺NTP服務器,讓具有NTP功能的設備對照該服務器同步其時間。
但愿本文對大家有所幫助。
英文:How to set up NTP server in CentOS