■ 山東 劉繼超 崔冬梅 劉偉
編者按:本文結(jié)合實(shí)際配置時(shí)的經(jīng)驗(yàn),總結(jié)出局域網(wǎng)中NTP服務(wù)器的搭建方法。
全網(wǎng)(局域網(wǎng))時(shí)間同步是進(jìn)行網(wǎng)絡(luò)管理的基礎(chǔ),要實(shí)現(xiàn)網(wǎng)絡(luò)同步就需要在網(wǎng)絡(luò)中搭建一臺(tái)NTP服務(wù)器,這臺(tái)服務(wù)器對上跟互聯(lián)網(wǎng)上時(shí)鐘服務(wù)器進(jìn)行同步,對下對局域網(wǎng)中網(wǎng)絡(luò)設(shè)備(服務(wù)器、交換機(jī)等)提供時(shí)鐘服務(wù)。在局域網(wǎng)中搭建NTP服務(wù)器,除了可以實(shí)現(xiàn)時(shí)間同步外,也可以解決一個(gè)問題,那就是局域網(wǎng)中有一些網(wǎng)絡(luò)設(shè)備是不允許訪問互聯(lián)網(wǎng)的,這樣的話,只要這臺(tái)設(shè)備能夠跟局域網(wǎng)中的NTP服務(wù)器進(jìn)行通訊,也可以實(shí)施時(shí)間同步。
1.服務(wù)器操作系統(tǒng)信息
#cat/etc/redhatrelease(查看版本號)
[root@localhost etc]#cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
#uname -r(顯示系統(tǒng)信息)
3.10.0-693.el7.x86_64
#hostname -I(查看本機(jī)的IP地址)
10.66.66.67
2.確認(rèn)服務(wù)器的時(shí)區(qū)正確
(1)t i m e d a t e c t l查看具體時(shí)間時(shí)區(qū)
[root@localhost~]#timedatectl
Local time: Wed 2018-12-26 11:14:25 CST
Universal time: Wed 2 0 1 8-1 2-26 03:14:25 UTC
RTC time: Wed 2018-12-26 03:14:25
Time zone: America/New_York (CST, +0800)
NTP enabled: yes
NTP synchronized:yes
RTC in local TZ: no
DST active: n/a
(2)查看具體所有時(shí)區(qū),如圖1所示。
(3)timedatectl set-timezone Asia/Shanghai設(shè)置時(shí)區(qū)
NTP的安裝非常簡單,執(zhí)行yum -y intall ntpd即可。
NTP配置的核心是配置/etc目錄下的ntp.conf文件,其中有三處關(guān)鍵的配置,分別是設(shè)置允許連接NTP服務(wù)器的NTP客戶端的地址段;設(shè)置本臺(tái)NTP服務(wù)器向上跟蹤的時(shí)鐘源以及對內(nèi)進(jìn)行時(shí)鐘發(fā)布的地址;設(shè)置日志文件放置的地址,分別說明如下:
restrict 127.0.0.1
restrict ::1
配置文件中有如上所示的兩行,我們只需要根據(jù)實(shí)際的網(wǎng)絡(luò)情況,再添加上本地局域網(wǎng)中允許跟這臺(tái)NTP服務(wù)器進(jìn)行時(shí)間同步的客戶機(jī)地址即可,比如我們允許所有10網(wǎng)段的客戶機(jī)訪問,只需增加如下一行:
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap
需要說明的是,后面跟的nomodify和notrap分別代表禁止遠(yuǎn)程主機(jī)修改本地服務(wù)器配置和拒絕特殊的ntpdq捕獲消息。
配置文件中有如下六行:
# 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
是定義這臺(tái)NTP服務(wù)器向上跟蹤的時(shí)鐘源,也就是互聯(lián)網(wǎng)上的NTP服務(wù)器,我們把這些行全部注釋掉,改成國內(nèi)的NTP服務(wù)器,具體如下:
server 2.cn.pool.ntp.org
server 1.asia.pool.ntp.org
這樣就定義好了向上的NTP服務(wù)器。除此之外,還有非常重要的一點(diǎn),那就是將這臺(tái)服務(wù)器定義為對本局域網(wǎng)提供NTP服務(wù),需要通過添加如下兩行進(jìn)行定義:
server 127.127.1.0
fudge 127.127.1.0 stratum 6
這兩行非常關(guān)鍵,如果不寫的話,即使啟動(dòng)了NTP服務(wù),客戶機(jī)也是無法跟隨這臺(tái)服務(wù)器進(jìn)行同步的。
通過在配置的文件添加以下命令來實(shí)現(xiàn):
logfile /var/log/ntpd.log
然后在/var/log目錄下創(chuàng)建這個(gè)文件,并定義相應(yīng)的文件
[root@localhost etc]#cd /var/log
[root@localhost log]#touch ntpd.conf
chown ntp:ntp /var/log/ntpd.log
這一步也是非常關(guān)鍵的,因?yàn)镹TP服務(wù)器在配置和啟動(dòng)甚至運(yùn)行的過程中可能會(huì)遇到這樣那樣的問題。但是通過查看產(chǎn)生的日志文件,我們就可以更加詳細(xì)的了解故障產(chǎn)生的原因,從而找到解決問題的辦法,下面就介紹一下NTP服務(wù)器常用的排錯(cuò)方法。
用如下兩條命令:
systemctl enable ntpd
systemctl start ntpd
第一條命令是將NTP服務(wù)作為系統(tǒng)服務(wù),第二條命令是啟動(dòng)NTP服務(wù),如果沒出現(xiàn)什么告警信息的話,就說明NTP服務(wù)啟動(dòng)起來了,我們可以看一下NTP服務(wù)的狀態(tài),如圖2所示。
出現(xiàn)以上提示,就表示這臺(tái)NTP服務(wù)器既完成了在向上游時(shí)鐘源的同步(它自身的時(shí)鐘是準(zhǔn)確有的),自身又可以作為時(shí)鐘源向局域網(wǎng)內(nèi)的其它客戶機(jī)提供時(shí)鐘源服務(wù)(即它自身可以作為一臺(tái)NTP服務(wù)器了)。
通過查看NTP服務(wù)自身產(chǎn)生的日志信息,可以解決大部分的NTP故障問題,比如有一臺(tái)服務(wù)器,開啟了NTP服務(wù),但是局域網(wǎng)中的客戶機(jī)跟隨它進(jìn)行時(shí)間同步提示錯(cuò)誤,經(jīng)查看日志信息后,發(fā)現(xiàn)有如下的提示:
2 6 D e c 1 1:2 7:4 4 ntpd[25624]: getaddrinfo:"127.127.1.1.0" invalid host address,
ignored
2 6 D e c 1 1:2 7:4 4 n t p d[2 5 6 2 4]:inappropriate address 0.0.0.0 for the fudge command, line ignored
仔細(xì)分析一下,原來是在/etc/ntp.conf這個(gè)配置文件中,將時(shí)鐘服務(wù)器的IP地址寫錯(cuò)了,多寫了一個(gè)“1.”,修改掉這個(gè)錯(cuò)誤,重新啟動(dòng)NTP服務(wù)后,客戶端就可以跟隨這臺(tái)NTP服務(wù)器進(jìn)行時(shí)間同步了。
圖2 具體內(nèi)容
有時(shí)候通過在客戶端進(jìn)行抓包分析,也可以分析判斷出NTP服務(wù)器無法提供服務(wù)的原因。比如有一臺(tái)NTP服務(wù)器配置完畢以后,客戶機(jī)一直無法跟隨這臺(tái)服務(wù)器進(jìn)行時(shí)間同步,上網(wǎng)搜索可能的原因,其中有一條是有可能服務(wù)器或客戶端開啟了防火墻,不允許NTP協(xié)議通過,為了判斷是否是由于這個(gè)原因造成的,就可以在客戶端運(yùn)行WIRESHARK抓包軟件,定義IP地址等于NTP服務(wù)器的IP地址,就會(huì)發(fā)現(xiàn)客戶機(jī)和NTP服務(wù)器之間其實(shí)是有通訊的,說明防火墻并沒有屏蔽相應(yīng)的端口,排除這個(gè)原因,再查找其它方面的問題,最終發(fā)現(xiàn)這臺(tái)服務(wù)器的配置文件ntp.conf中沒有配置本機(jī)NTP服務(wù)器的地址所致,即缺少這兩行:
server 127.127.1.0
fudge 127.127.1.0 stratum 6
圖3 具體內(nèi)容
這是一個(gè)比較極端的故障,即有一臺(tái)路由器,雖然可以跟隨局域網(wǎng)中的NTP服務(wù)器進(jìn)行時(shí)間同步,但同步完以后,時(shí)間始終差幾十秒,后來經(jīng)過咨詢廠家工程師,發(fā)現(xiàn)需要在同步時(shí)間時(shí)將stratum值改大一些,當(dāng)時(shí)是調(diào)到了11,就好在。經(jīng)過與服務(wù)器上的ntp.conf文件中的stratum值進(jìn)行對比,發(fā)現(xiàn)必須大于NTP服務(wù)器上的值才可以正常的同步上。
一臺(tái)無法連接互聯(lián)網(wǎng)的服務(wù)器如何配置為一臺(tái)時(shí)鐘服務(wù)器?這是一個(gè)什么情況呢?即有一臺(tái)服務(wù)器,由于特定的要求,它是不能連上互聯(lián)網(wǎng)的,但是又需要被配置成一臺(tái)NTP服務(wù)器(簡稱A),為局域網(wǎng)中的某幾個(gè)網(wǎng)絡(luò)設(shè)備提供NTP服務(wù),這時(shí)就可以讓它成局域網(wǎng)中一個(gè)NTP服務(wù)器進(jìn)行同步,但是又出現(xiàn)一個(gè)問題,即在ntp.conf文件中要定義上級NTP服務(wù)器(簡稱B)的地址,這個(gè)地址是以域名形式存在的,如何將一個(gè)設(shè)定的域名與局域網(wǎng)中的B的IP地址對應(yīng)起來呢?其實(shí)只要修改一下/etc/hosts文件,在最后添加一行,將域名與IP地址對應(yīng)起來即可,如下所示:
[root@localhost etc]#more hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.66.66.67 nw.sz.com
這樣操作后,在ntp.conf文件中就可以以域名的形式寫一個(gè)內(nèi)網(wǎng)的NTP服務(wù)器的地址了,寫完以后啟動(dòng)NTP服務(wù),發(fā)現(xiàn)是可以正常的與這臺(tái)內(nèi)網(wǎng)的B服務(wù)器進(jìn)行時(shí)間同步,并且這臺(tái)A作為NTP服務(wù)器工作也正常了,如圖3所示。
在網(wǎng)絡(luò)運(yùn)維工作中,我們切身的感受到實(shí)現(xiàn)全網(wǎng)的時(shí)間一致是一件非常必要的工作,只有做到網(wǎng)絡(luò)設(shè)備的系統(tǒng)時(shí)間是準(zhǔn)確的,是一致的,才有可能保證各類基于精確校時(shí)的網(wǎng)絡(luò)程序的正常運(yùn)行,才有可能在出現(xiàn)網(wǎng)絡(luò)故障時(shí)進(jìn)行精準(zhǔn)的時(shí)間定位。
通過配置一臺(tái)LINUX的主機(jī)作為一臺(tái)NTP服務(wù)器,配置上相對較簡單,運(yùn)行上又是非常可靠的,我們根據(jù)工作需要在局域網(wǎng)中配置了多臺(tái)NTP服務(wù)器,這些服務(wù)器通過網(wǎng)絡(luò)連接實(shí)現(xiàn)了時(shí)間同步,為不同的網(wǎng)絡(luò)設(shè)備提供了NTP服務(wù),在實(shí)際工作中發(fā)揮了非常好的作用。