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