■ 北京 趙琳
編者按:時(shí)間同步是數(shù)據(jù)產(chǎn)生價(jià)值的基礎(chǔ)保障和技術(shù)支撐。本文將介紹在CentOS下如何配置NTP時(shí)間服務(wù)器的具體方法。
N T P(Network Time Protocol,網(wǎng)絡(luò)時(shí)間協(xié)議),是由RFC 1305定義的時(shí)間同步協(xié)議,用來在分布式時(shí)間服務(wù)器和客戶端之間進(jìn)行時(shí)間同步的一種協(xié)議,它可以使計(jì)算機(jī)對其服務(wù)器或時(shí)鐘源(如石英鐘,GPS等等)做同步化,它可以提供高精準(zhǔn)度的時(shí)間校正(LAN上與標(biāo)準(zhǔn)間差小于1毫秒,WAN上幾十毫秒),且可利用加密確認(rèn)的方式來防止惡毒的協(xié)議攻擊。
NTP是基于UDP報(bào)文進(jìn)行傳輸?shù)?,使用的UDP端口號為123。
使用NTP的目的是對網(wǎng)絡(luò)內(nèi)所有具有時(shí)鐘的設(shè)備進(jìn)行時(shí)鐘同步,使網(wǎng)絡(luò)內(nèi)所有設(shè)備的時(shí)鐘保持一致,從而使設(shè)備能夠提供基于統(tǒng)一時(shí)間的多種應(yīng)用。
對于運(yùn)行NTP的本地系統(tǒng),既可以接收來自其他時(shí)鐘源的同步,又可以作為時(shí)鐘源同步其他的時(shí)鐘,并且可以和其他設(shè)備互相同步。
NTP有兩種不同類型的報(bào)文,一種是時(shí)鐘同步報(bào)文,另一種是控制報(bào)文。
NTP的工作模式,一般有客戶端/服務(wù)器模式、對等體模式、廣播模式等。
1.大數(shù)據(jù)產(chǎn)生與處理系統(tǒng)是各種計(jì)算設(shè)備集群的,計(jì)算設(shè)備將統(tǒng)一、同步的標(biāo)準(zhǔn)時(shí)間用于記錄各種事件發(fā)生時(shí)序,如E-MAIL信息、文件創(chuàng)建和訪問時(shí)間、數(shù)據(jù)庫處理時(shí)間等。
2.大數(shù)據(jù)系統(tǒng)內(nèi)不同計(jì)算設(shè)備之間控制、計(jì)算、處理、應(yīng)用等數(shù)據(jù)或操作都具有時(shí)序性,若計(jì)算機(jī)時(shí)間不同步,這些應(yīng)用或操作或?qū)o法正常進(jìn)行。
3.大數(shù)據(jù)系統(tǒng)是對時(shí)間敏感的計(jì)算處理系統(tǒng),時(shí)間同步是大數(shù)據(jù)能夠得到正確處理的基礎(chǔ)保障,是大數(shù)據(jù)得以發(fā)揮作用的技術(shù)支撐。
4.大數(shù)據(jù)時(shí)代,整個(gè)處理計(jì)算系統(tǒng)內(nèi)的大數(shù)據(jù)通信都是通過網(wǎng)絡(luò)進(jìn)行。
5.時(shí)間同步也是如此,利用大數(shù)據(jù)的互聯(lián)網(wǎng)絡(luò)傳送標(biāo)準(zhǔn)時(shí)間信息,實(shí)現(xiàn)大數(shù)據(jù)系統(tǒng)內(nèi)時(shí)間同步。
1.確認(rèn)是否已安裝NTP服務(wù)(linux系統(tǒng)一般自帶NTP4.2)
命令:rpm -qa | grep ntp
若只有ntpdate而未見ntp,則需刪除原有ntpdate。如:
ntpdate-4.2.6p5-22.el7_0.x86_64
2.刪除已安裝NTP服務(wù)
命令:yum -y remove ntpdate-4.2.6p5-22.el7.x86_64
3.重新安裝NTP服務(wù)
命令:yum -y install ntp
4.NTP服務(wù)端配置文件編輯
命 令:vim /etc/ntp.conf
內(nèi)容:在server部分添加以下部分,設(shè)置允許訪問此時(shí)間服務(wù)器的時(shí)間服務(wù)的IP地址。
restrict 192.168.6.0 mask 255.255.255.0 nomodify notrap
//允許內(nèi)網(wǎng)中相應(yīng)網(wǎng)段的其他計(jì)算機(jī)可以與NTP時(shí)間服務(wù)器進(jìn)行時(shí)間同步。
restrict 127.0.0.1
//允許本機(jī)地址一切的操作。
備注:如果需要限制向從192.168.0.1-192.168.0.254這些IP段的計(jì)算機(jī)提供NTP服務(wù),采用如下命令:
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap noquery
如果需要設(shè)置默認(rèn)策略為允許任何主機(jī)進(jìn)行時(shí)間同步,采用如下命令:
restrict default ignore
如果需要設(shè)置允許任何主機(jī)跟NTP時(shí)間服務(wù)器進(jìn)行時(shí)間同步,采用如下命令:
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap
小知識:使用restrict控制相關(guān)權(quán)限。
語法為:restrict IP地址mask 子網(wǎng)掩碼 參數(shù),IP地址和子網(wǎng)掩碼指定了對網(wǎng)絡(luò)中哪些范圍的計(jì)算機(jī)進(jìn)行控制,如果使用default關(guān)鍵字,則表示對所有的計(jì)算機(jī)進(jìn)行控制,參數(shù)指定了具體的限制內(nèi)容。參數(shù)有以下幾個(gè):
ignore:關(guān)閉所有的 NTP聯(lián)機(jī)服務(wù)。
nomodify:客戶端不能更改服務(wù)端的時(shí)間參數(shù),但是客戶端可以通過服務(wù)端進(jìn)行網(wǎng)絡(luò)校時(shí)。
notrust:客戶端除非通過認(rèn)證,否則該客戶端來源將被視為不信任子網(wǎng)。
noquery:不提供客戶端的時(shí)間查詢,用戶端不能使用ntpq、ntpc等命令來查詢NTP時(shí)間服務(wù)器。
notrap:不提供trap遠(yuǎn)程登錄功能,trap服務(wù)是一種遠(yuǎn)程時(shí)間日志服務(wù)。
nopeer:提供時(shí)間服務(wù),但不作為對等體。
kod:向不安全的訪問者發(fā)送Kiss-Of-Death報(bào)文
restrict -6:表 示 IPV6地址的權(quán)限設(shè)置。
內(nèi)容:在server部分添加如下語句,設(shè)置是允許IPV4和IPV6查詢,且拒絕修改。
restrict -4 default kod notrap nomodify
restrict -6 default kod notrap nomodify
備注:如果需要拒絕IPV4或者是IPV6的用戶,添加如下語句:
restrict default kod nomodify notrap nopeer noquery
//拒絕IPV4的用戶
restrict -6 default kod nomodify notrap nopeer noquery
//拒絕IPV6的用戶
內(nèi)容:在server部分添加以下部分,改動(dòng)-注釋掉上級時(shí)間服務(wù)器地址。
server 203.107.6.88 prefer
//設(shè)置此服務(wù)器同上層服務(wù)器做時(shí)間同步的 IP地 址,prefer表示首選IP地址,203.107.6.88是阿里云NTP服務(wù)器。
server 0.centos.pool.ntp.org iburst
圖1 正常結(jié)果
圖2 客戶端與每個(gè)服務(wù)器關(guān)系
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
內(nèi)容:在server部分添加以下部分,改動(dòng)-注釋掉上級時(shí)間服務(wù)器地址。
server 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 10
//指定階層編號為10,降低其優(yōu)先度。當(dāng)外部時(shí)間服務(wù)器不可用時(shí),以本地時(shí)間作為時(shí)間服務(wù)。
內(nèi)容:在server部分添加如下語句,設(shè)置NTP時(shí)間服務(wù)器日志的path。
statsdir /var/log/ntp/
內(nèi)容:在server部分添加如下語句,設(shè)置NTP時(shí)間服務(wù)器日志文件。
logfile /var/log/ntp/ntp.log
內(nèi)容:在server部分添加如下語句,設(shè)置記錄上次的NTP時(shí)間服務(wù)器與上層NTP時(shí)間服務(wù)器聯(lián)接所花費(fèi)的時(shí)間。
driftfile /etc/ntp/drift
內(nèi)容:在server部分添加如下語句,設(shè)置允許上層時(shí)間服務(wù)器主動(dòng)修改本機(jī)時(shí)間。
restrict 203.107.6.88 nomodify notrap noquery
1.啟動(dòng)或停止NTP時(shí)間服務(wù)器
命 令:service ntpd start
命 令:service ntpd stop
命 令:service ntpd restart
2.設(shè)置NTP時(shí)間服務(wù)器開機(jī)自動(dòng)啟動(dòng)
命令:chkconfig ntpd on
3.查看NTP時(shí)間服務(wù)器運(yùn)行
命令:ntpstat
備注:查看NTP狀態(tài)時(shí),可能會(huì)出現(xiàn)如下所示情況:
①unsynchronised time server re-starting polling server every 8 s
②unsynchronised polling server every 8 s
這種情況屬于正常,NTP時(shí)間服務(wù)器配置完畢后,一般需要等待5-10分鐘才能與/etc/ntp.conf中配置的標(biāo)準(zhǔn)時(shí)間服務(wù)器進(jìn)行同步。等一段時(shí)間之后,再次使用ntpstat命令查看狀態(tài),就會(huì)變成如圖1所示的正常結(jié)果。
4.查看網(wǎng)絡(luò)中的NTP時(shí)間服務(wù)器,同時(shí)顯示客戶端和每個(gè)服務(wù)器的關(guān)系。
命令:ntpq -p,具體如圖2所示。
remote:響應(yīng)這個(gè)請求的NTP時(shí)間服務(wù)器的名稱,“+”表示優(yōu)先響應(yīng)這個(gè)查詢請求的NTP服務(wù)器,“*”表示次優(yōu)先。
refid:NTP時(shí) 間服務(wù)器使用的更高一級服務(wù)器的名稱。
st:正在響應(yīng)請求的NTP時(shí)間服務(wù)器的級別(stratum階層)。
when:上一次成功請求之后到現(xiàn)在的秒數(shù)。
poll:本地和遠(yuǎn)程服務(wù)器多少時(shí)間進(jìn)行一次同步,單位秒,在一開始運(yùn)行NTP的時(shí)候這個(gè)poll值會(huì)比較小,服務(wù)器同步的頻率大,可以盡快調(diào)整到正確的時(shí)間范圍,之后poll值會(huì)逐漸增大,同步的頻率也就會(huì)相應(yīng)減小。
reach:用來測試能否和服務(wù)器連接,是一個(gè)八進(jìn)制值,每成功連接一次它的值就會(huì)增加。
delay:從本地機(jī)發(fā)送同步要求到NTP時(shí)間服務(wù)器的往返時(shí)間。
offset:主機(jī)通過NTP時(shí)鐘同步與所同步時(shí)間源的時(shí)間偏移量,單位為毫秒,offset越接近于0,主機(jī)和NTP時(shí)間服務(wù)器的時(shí)間越接近。
jitter:統(tǒng)計(jì)了在特定個(gè)連續(xù)的連接數(shù)里offset的分布情況。簡單地說這個(gè)數(shù)值的絕對值越小,主機(jī)的時(shí)間就越精確。
圖3 時(shí)間同步情況
5.查看時(shí)間同步狀況,如圖3所示。
命令:ntpq -p
終止:按 Ctrl+C 停止查看進(jìn)程。
第一列中的字符指示源的質(zhì)量。星號 ( * ) 表示該源是當(dāng)前引用。
remote:列出源的IP地址或主機(jī)名。
when:指出從輪詢源開始已過去的時(shí)間(秒)。
poll:指出輪詢間隔時(shí)間。該值會(huì)根據(jù)本地時(shí)鐘的精度相應(yīng)增加。
reach:是一個(gè)八進(jìn)制數(shù)字,指出源的可存取性。值377 表示源已應(yīng)答了前八個(gè)連續(xù)輪詢。
offset:是源時(shí)鐘與本地時(shí)鐘的時(shí)間差(毫秒)。
6.更新NTP時(shí)間服務(wù)器的時(shí)間
命 令:ntpdate -u 203.107.6.88
備注:需要先關(guān)閉NTP時(shí)間服務(wù)。
7.運(yùn)行ntpdate更新時(shí)間時(shí),不能開啟NTP服務(wù),否則會(huì)提示端口被占用;此時(shí),可以利用crontab讓NTP時(shí)間服務(wù)器定時(shí)更新時(shí)間。
crontab文件簡要配置如下:
命令格式的前一部分是對時(shí)間的設(shè)定,后面一部分是要執(zhí)行的命令。時(shí)間的設(shè)定我們有一定的約定,前面五個(gè)*號代表五個(gè)數(shù)字,數(shù)字的取值范圍和含義如下:
分鐘(0-59)小時(shí)(0-23)日期(1-31)月份(1-12)星期 (0-6,0代表星期日)
除了數(shù)字還有幾個(gè)個(gè)特殊的符號就是“*”、“/”和“-”、“,”,其中“*”代表所有的取值范圍內(nèi)的數(shù)字,“/”代表每的意思,“-”代表從某個(gè)數(shù)字到某個(gè)數(shù)字,“,”分開幾個(gè)離散的數(shù)字。下面舉幾個(gè)例子說明問題:
每天早上6點(diǎn):0 6 * ** command
每兩個(gè)小時(shí):0 */2 * ** command
晚上11點(diǎn)到早上8點(diǎn)之間每兩個(gè)小時(shí),早上八點(diǎn):0 23-7/2,8 * * * command
每個(gè)月的4號和每個(gè)星期的星期一到星期三的早 上 11 點(diǎn) :0 11 4 * 1-3 command
1月1日早上4點(diǎn):0 4 1 1 * command
8.用來追蹤某臺(tái)時(shí)間服務(wù)器的時(shí)間對應(yīng)關(guān)系
命令:ntptrace
9.配置iptable規(guī)則允許客戶端訪問內(nèi)網(wǎng)NTP時(shí)間服務(wù)器
命 令:vim /etc/sysconfig/iptables
增加一行(NTP時(shí)間服務(wù)器使用UDP 123端口)
-A INPUT -m state--state NEW -m udp -p udp--dport 123 -j ACCEPT
重啟iptables服務(wù)
命令:service iptables restart
1.檢查安裝NTP服務(wù)有沒有安裝,如果未安裝的話,請安裝。
2.NTP客戶端配置文件編輯
命 令:vim /etc/ntp.conf
內(nèi)容:在server部分添加以下部分,設(shè)置時(shí)間服務(wù)器名或者是IP地址。
server ntp1.ceshi.com
3.向NTP時(shí)間服務(wù)器同步時(shí)間。
命 令:ntpdate 192.168.1.3
4.將系統(tǒng)時(shí)間設(shè)置為硬件時(shí)間
命令:hwclock -systohc
小知識:hwclock命令的作用是查看Linux中的硬件時(shí)間,也就是主板上BIOS的時(shí)間,由主板電池供電來維持運(yùn)行,系統(tǒng)開機(jī)時(shí)要讀取這個(gè)時(shí)間,并根據(jù)它來設(shè)定系統(tǒng)時(shí)間
Hwclock:查看硬件時(shí)間。
hwclock -s:將當(dāng)前的硬件時(shí)間設(shè)置為系統(tǒng)時(shí)間。
hwclock -w:將當(dāng)前的系統(tǒng)時(shí)間設(shè)置為硬件時(shí)間(允許BIOS與系統(tǒng)時(shí)間同步)。
5.設(shè)置通過NTP服務(wù)同時(shí)同步硬件時(shí)間
命 令:vim /etc/sysconfig/ntpd
添 加“SYNC_HWCLOCK=yes”,可實(shí)現(xiàn)硬件時(shí)間與系統(tǒng)時(shí)間一起同步。
備注:NTP服務(wù),默認(rèn)只會(huì)同步系統(tǒng)時(shí)間。
6.如果想定時(shí)進(jìn)行時(shí)間校準(zhǔn),可以使用crond服務(wù)來定時(shí)執(zhí)行。
命令:vim /etc/crontab
加入內(nèi)容:30 8 * * *root /usr/sbin/ntpdate 192.168.1.3; /sbin/hwclock -w
//192.168.1.3是NTP時(shí)間服務(wù)器的IP地址。
命 令:service crond restart
//重啟crond服務(wù)
這樣,每天8:30 Linux系統(tǒng)就會(huì)自動(dòng)的進(jìn)行網(wǎng)絡(luò)時(shí)間校準(zhǔn)。
1.通過組策略開啟NTP服務(wù)
①點(diǎn)擊“開始”——“運(yùn)行”,輸入“gpedit.msc”,彈出組策略窗口。
②選擇“計(jì)算機(jī)配置”——“管理模板”——“系統(tǒng)”——“Windows時(shí)間服務(wù)”,在右邊選擇“全局配置設(shè)置”,雙擊鼠標(biāo)左鍵,在彈出窗口上選擇“已啟用”后,點(diǎn)擊“確定”。
③選擇“計(jì)算機(jī)配置”——“管理模板”——“系 統(tǒng)” ——“Windows時(shí)間服務(wù)”——
“時(shí)間提供程序”,在右邊選擇“配置 Windows NTP客 戶 端”,雙擊鼠標(biāo)左鍵,在彈出窗口 上 選 擇“已 啟 用”;在Ntp Server對應(yīng)欄位輸入時(shí)間同步服務(wù)器的地址;在類型項(xiàng)選擇“NTP”后;SpecialPollInterval欄位輸入需要同步的時(shí)間周期,單位:秒,如:每10分鐘同步一次,輸入600;設(shè)置完成后點(diǎn)擊“確定”按鈕。
2.點(diǎn) 擊“開 始” ——“運(yùn)行”,輸入“gpupdate /force”,強(qiáng)制刷新策略。
3.雙擊日期和時(shí)間,選擇internet時(shí)間,輸入NTP時(shí)間服務(wù)器IP地址,點(diǎn)擊“立即更新”,完成同步。
1.H3C及華為系列網(wǎng)絡(luò)設(shè)備
命 令:ntp-service unicast-server 192.168.1.3
2.思科及銳捷系列網(wǎng)絡(luò)設(shè)備
命 令:ntp server 192.168.1.3