淺析NTP的重要性(以CentOS搭建為例)
我們?yōu)槭裁磿?huì)需要NTP?它的結(jié)構(gòu)又是什么,又該如何搭建?有人說(shuō)NTP這種協(xié)議可以讓你所有主機(jī)上的時(shí)鐘保持同步。到底具體如何,我們一起來(lái)看看吧!
網(wǎng)絡(luò)時(shí)間協(xié)議(NTP)用來(lái)同步網(wǎng)絡(luò)上不同主機(jī)的系統(tǒng)時(shí)鐘。所有受管理的主機(jī)可以與一臺(tái)名為NTP服務(wù)器的指定時(shí)間服務(wù)器同步時(shí)間。另一方面,NTP服務(wù)器則與任何公共NTP服務(wù)器或者你所選擇的任何服務(wù)器同步自己的時(shí)間。所有NTP管理的設(shè)備其系統(tǒng)時(shí)間同步時(shí)可以精確到毫秒級(jí)。
在企業(yè)環(huán)境下,如果企業(yè)不想為NTP流量打開(kāi)防火墻,就有必要搭建一臺(tái)內(nèi)部的NTP服務(wù)器,讓員工可以使用內(nèi)部服務(wù)器,而不是公共NTP服務(wù)器。我們?cè)诒窘坛讨袑⒔榻B如何將CentOS系統(tǒng)配置成NTP服務(wù)器。在具體介紹細(xì)節(jié)之前,不妨先來(lái)了解NTP概念。
我們?yōu)楹涡枰狽TP?由于制造方面的差異,所有(非原子)時(shí)鐘并不完全以一樣的速度運(yùn)行。有些時(shí)鐘往往走得快點(diǎn),而有些時(shí)鐘走得慢點(diǎn)。所以經(jīng)過(guò)一段很長(zhǎng)的時(shí)間后,一個(gè)時(shí)鐘的時(shí)間與另一個(gè)時(shí)鐘逐漸發(fā)生偏差,導(dǎo)致所謂的“時(shí)鐘漂移”或“時(shí)間漂移”。為了盡量減小時(shí)鐘漂移影響,使用NTP的主機(jī)應(yīng)該定期與指定的NTP服務(wù)器進(jìn)行聯(lián)系,保持時(shí)鐘同步。
不同主機(jī)之間的時(shí)間同步對(duì)計(jì)劃備份、入侵檢測(cè)日志、分布式任務(wù)調(diào)度或事務(wù)簿記之類的事務(wù)而言很重要,甚至可能是監(jiān)管合規(guī)所需要的一個(gè)要求。
NTP層次結(jié)構(gòu)NTP時(shí)鐘以分層層次結(jié)構(gòu)來(lái)加以組織。該層次結(jié)構(gòu)中的每一層被稱為層(stratum)。層這個(gè)概念描述了某機(jī)器距離權(quán)威時(shí)間源有多少個(gè)NTP跳。
Stratum 0含有幾乎沒(méi)有時(shí)間漂移的時(shí)鐘,比如原子鐘。這些時(shí)鐘無(wú)法通過(guò)網(wǎng)絡(luò)直接使用。Stratum N(N 》 1)服務(wù)器對(duì)照Stratum N-1服務(wù)器同步其時(shí)間。Stratum N時(shí)鐘可以通過(guò)網(wǎng)絡(luò)彼此連接。
NTP最多可支持層次結(jié)構(gòu)中的15層。Stratum 16被認(rèn)為不同步、無(wú)法使用。
準(zhǔn)備CentOS服務(wù)器現(xiàn)在不妨接著講講如何在CentOS上搭建NTP服務(wù)器。
首先,我們需要確保服務(wù)器的時(shí)區(qū)正確設(shè)置。在CentOS 7中,我們可以使用TImedatectl命令來(lái)查看和更改服務(wù)器的時(shí)區(qū)(比如“Australia/Adelaide”)。
# TImedatectl list-TImezones | grep Australia
# TImedatectl set-timezone Australia/Adelaide
# timedatectl
接下來(lái)使用yum,安裝必要的軟件。
# yum install ntp
然后,我們將添加用來(lái)同步時(shí)間的全局NTP服務(wù)器。
# 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
默認(rèn)情況下,NTP服務(wù)器日志保存在/var/log/messages中。如果你想使用自定義的日志文件,也可以指定該文件的位置。
logfile /var/log/ntpd.log
如果你果真選擇使用自定義的日志文件,確保更改其所有權(quán)和SELinux上下文。
# chown ntp:ntp /var/log/ntpd.log
# chcon -t ntpd_log_t /var/log/ntpd.log
現(xiàn)在啟動(dòng)NTP服務(wù),確保它已添加到啟動(dòng)項(xiàng)。
# systemctl restart ntp
# systemctl enable ntp
驗(yàn)證NTP服務(wù)器時(shí)鐘
我們可以使用ntpq命令,檢查本地服務(wù)器的時(shí)鐘如何通過(guò)NTP實(shí)現(xiàn)同步。
下面這張表解釋了上述輸出列。
控制對(duì)NTP服務(wù)器的訪問(wèn)
在默認(rèn)情況下,NTP服務(wù)器允許來(lái)自所有主機(jī)的入站查詢。如果你想過(guò)濾入站NTP同步連接,可以在防火墻中添加一條規(guī)則,以過(guò)濾流量。
# iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 123 -j ACCEPT
# iptables -A INPUT -p udp --dport 123 -j DROP
該規(guī)則將允許來(lái)自192.168.1.0/24的NTP服務(wù)器(經(jīng)由端口UDP/123),拒絕來(lái)自其他所有網(wǎng)絡(luò)的流量。你可以更新規(guī)則以符合自己的要求。
配置NTP客戶端1. Linux
NTP客戶端主機(jī)需要ntpdate程序包來(lái)對(duì)照服務(wù)器同步其時(shí)間。可以使用yum或apt-get,很容易安裝該程序包。安裝該程序包后,運(yùn)行帶服務(wù)器IP地址的命令。
# ntpdate 《server-IP-address》
如果是基于RHEL和Debian的系統(tǒng),命令完全一樣。
2. Windows
如果你使用Windows,在日期和時(shí)間設(shè)置下尋找“Internet時(shí)間”。
3. 思科設(shè)備
如果你想同步設(shè)備的時(shí)間,可以從全局配置模式使用下面這個(gè)命令。
# ntp server 《server-IP-address》