(揚(yáng)州職業(yè)大學(xué)信息工程學(xué)院,江蘇 揚(yáng)州225000)
計(jì)算機(jī)主機(jī)的時(shí)間主要是通過內(nèi)部BIOS芯片的原子震蕩周期來計(jì)時(shí),然而由于不同的芯片之間多少存在差異,因此造成BIOS時(shí)間與UTC時(shí)間(國際標(biāo)準(zhǔn)時(shí)間)總會(huì)存在差異。所以,為了避免計(jì)算機(jī)時(shí)間長(zhǎng)期積累下導(dǎo)致的時(shí)間偏差越來越大,就必須定期對(duì)電腦時(shí)間進(jìn)行調(diào)整。用戶可以通過手表、時(shí)鐘或者是電視時(shí)間來進(jìn)行時(shí)間校準(zhǔn),對(duì)于計(jì)算機(jī)用戶來說,最方便的是通過Internet上的時(shí)間服務(wù)器校準(zhǔn)電腦時(shí)間(稱之為時(shí)間同步[1])。時(shí)間同步在網(wǎng)絡(luò)中應(yīng)用十分廣泛,尤其是對(duì)時(shí)間精確要求較高的地方,例如交通運(yùn)輸業(yè)的時(shí)間顯示系統(tǒng)、電信網(wǎng)絡(luò)中的計(jì)費(fèi)系統(tǒng)、網(wǎng)絡(luò)考試系統(tǒng)等,如果計(jì)算機(jī)時(shí)鐘不精確,那么這些應(yīng)用很多將不能正常工作。因此,時(shí)間同步應(yīng)用顯得格外重要。
對(duì)于個(gè)人計(jì)算機(jī)而言,時(shí)間同步很容易實(shí)現(xiàn),如常用的Windows系統(tǒng)中就自帶了時(shí)間同步功能,只要設(shè)置好時(shí)間服務(wù)器的地址或域名,能夠訪問Internet,就可以和網(wǎng)絡(luò)中的時(shí)間服務(wù)器進(jìn)行時(shí)間同步。但若在一個(gè)公司的局域網(wǎng)中,如果讓每個(gè)員工通過手動(dòng)的方式每隔一段時(shí)間去校準(zhǔn)時(shí)間,不但不利于管理,而且校準(zhǔn)目標(biāo)時(shí)間源也不一定準(zhǔn)確。公司局域網(wǎng)絡(luò)中不同計(jì)算機(jī)的時(shí)間偏差尤其是客戶機(jī)/服務(wù)器之間的時(shí)間偏差,就會(huì)對(duì)一些要求時(shí)間同步的服務(wù)產(chǎn)生影響,如為了管理方便,服務(wù)器設(shè)置到下班時(shí)間時(shí)用戶賬號(hào)過期,用戶無法訪問Internet網(wǎng)絡(luò);如果用戶的計(jì)算機(jī)時(shí)間與服務(wù)器的時(shí)間不同步,當(dāng)用戶認(rèn)為下班時(shí)間未到,正準(zhǔn)備發(fā)送郵件時(shí),而在服務(wù)器的時(shí)間上,用戶的賬號(hào)已經(jīng)過期,從而導(dǎo)致用戶無法發(fā)送郵件。針對(duì)以上問題,可以在局域網(wǎng)中建立一個(gè)能提供精確時(shí)間的服務(wù)器,局域網(wǎng)內(nèi)的所有計(jì)算機(jī)統(tǒng)一通過這臺(tái)時(shí)間服務(wù)器進(jìn)行時(shí)間同步,從而保證局域網(wǎng)中的所有計(jì)算機(jī)的時(shí)間一致?;谝陨纤枷?,筆者以開源操作系統(tǒng)Debian Linux為時(shí)間服務(wù)器平臺(tái),基于NTP協(xié)議,提出了基于Debian環(huán)境下構(gòu)建局域網(wǎng)時(shí)間同步系統(tǒng)的解決方案。
為了實(shí)現(xiàn)時(shí)間同步,需要運(yùn)用NTP(Network Time Protocol)協(xié)議,該協(xié)議是用來使計(jì)算機(jī)時(shí)間同步的一個(gè)Internet標(biāo)準(zhǔn)協(xié)議,它可以使計(jì)算機(jī)對(duì)其服務(wù)器或時(shí)鐘源做同步化,可以提供高精準(zhǔn)度的時(shí)間校正,且可借由加密確認(rèn)的方式來防止惡毒的協(xié)議攻擊[2]。
要在局域網(wǎng)內(nèi)實(shí)現(xiàn)時(shí)間同步,需要?jiǎng)?chuàng)建NTP服務(wù)器。NTP服務(wù)器采用層次結(jié)構(gòu)(stratum)來處理時(shí)間的同步化。在因特網(wǎng)中已經(jīng)提供了一些主要與次要的時(shí)間服務(wù)器,這些均屬于第一層及第二層的時(shí)間服務(wù)器(stratum-1,stratum-2),一般來說,在進(jìn)行NTP主機(jī)的架設(shè)時(shí),選擇國內(nèi)的上層NTP來同步時(shí)間即可,如中國國家授時(shí)中心提供的NTP服務(wù)器,如果這部NTP屬于stratum-2,那主機(jī)即為stratum-3。另外,在選擇上層NTP時(shí),一般會(huì)選擇多部上層NTP服務(wù)器,這樣可以避免因?yàn)槟巢縉TP服務(wù)器突然故障,其他主機(jī)仍然可以提供NTP主機(jī)進(jìn)行時(shí)間同步[3-4]。
在局域網(wǎng)中,NTP服務(wù)可以看成C/S的工作模式,其工作原理如下圖1所示。
圖1 NTP工作原理圖
以校園局域網(wǎng)為例,一般校園網(wǎng)的網(wǎng)絡(luò)結(jié)構(gòu)是分為2層的星型結(jié)構(gòu),即中心交換機(jī)層和供各個(gè)節(jié)點(diǎn)接入的桌面交換機(jī)層。中心交換機(jī)可以采用1臺(tái)高檔的企業(yè)級(jí)交換機(jī),提供多個(gè)千兆網(wǎng)絡(luò)端口。各個(gè)節(jié)點(diǎn)的桌面交換機(jī)連接到中心交換機(jī)上,這些桌面交換機(jī)內(nèi)部相當(dāng)于一個(gè)小型局域網(wǎng)。根據(jù)時(shí)間同步的原理以及校園局域網(wǎng)的網(wǎng)絡(luò)結(jié)構(gòu),筆者設(shè)計(jì)了如下的NTP同步方案(見圖2),給整個(gè)校園局域網(wǎng)提供準(zhǔn)確可靠的時(shí)間同步服務(wù)。在整個(gè)局域網(wǎng)內(nèi)部設(shè)置1~2臺(tái)基于Debian Linux平臺(tái)的時(shí)間服務(wù)器,通過中心交換機(jī)與Internet連接,與因特網(wǎng)上提供的時(shí)間服務(wù)器進(jìn)行時(shí)間同步。設(shè)置2臺(tái)時(shí)間服務(wù)器可以確保局域網(wǎng)中至少有1臺(tái)NTP服務(wù)器為下層提供時(shí)間同步服務(wù),NTP服務(wù)器設(shè)置在局域網(wǎng)防火墻的后面,僅對(duì)局域網(wǎng)內(nèi)部提供時(shí)間同步服務(wù)。各部門的部門服務(wù)器、客戶機(jī)通過桌面交換機(jī)與中心交換機(jī)連接,與局域網(wǎng)內(nèi)的NTP服務(wù)器相連實(shí)現(xiàn)時(shí)間同步。
圖2 局域網(wǎng)NTP同步示意圖
Linux操作系統(tǒng)一直以其開源、穩(wěn)定、安全的特點(diǎn)作為服務(wù)器操作系統(tǒng)的首選,Linux有很多發(fā)行版,這里選擇以最新的Debian 6.0作為NTP服務(wù)器的系統(tǒng)平臺(tái)。在Debian系統(tǒng)上配置NTP服務(wù)器,可按如下步驟實(shí)現(xiàn):
1)安裝NTP軟件包 通過apt-get install ntp命令在線安裝,也可以從網(wǎng)上下載源碼安裝。
2)配置NTP服務(wù) NTP服務(wù)的配置文件為/etc/ntp.conf,其中最關(guān)鍵的配置參數(shù)為server段,該段的參數(shù)是用來指明上層時(shí)間服務(wù)器的位置,可以設(shè)置多個(gè)上層時(shí)間服務(wù)器以保證時(shí)間同步。如:
3)啟動(dòng) NTP服務(wù) 輸入啟動(dòng)腳本/etc/init.d/ntp start。
4)監(jiān)視NTP服務(wù) 輸入命令ntpq-p來查看客戶機(jī)與服務(wù)器之間的關(guān)系。
值得注意的是,NTP服務(wù)的端口是123,使用的是UDP協(xié)議,因此NTP服務(wù)器的防火墻必須對(duì)外開放udp 123這個(gè)端口,另外,NTP服務(wù)通常需要一段時(shí)間進(jìn)行時(shí)間同步,所以在NTP剛剛啟動(dòng)的時(shí)候是不能正常提供時(shí)鐘服務(wù),如果配置正確一般5min后即能正常工作。
客戶機(jī)的主要任務(wù)是連接到局域網(wǎng)內(nèi)的時(shí)間服務(wù)器,以保持客戶機(jī)的時(shí)鐘與服務(wù)器同步。分別以Debian Linux和Windows客戶機(jī)為例說明客戶機(jī)的配置。
1)Linux客戶機(jī) 在Linux客戶機(jī)上進(jìn)行時(shí)間同步,只要執(zhí)行ntpdate命令即可,如ntpdate 192.168.0.1(192.168.0.1是局域網(wǎng) NTP服務(wù)器的IP地址),如果想定時(shí)進(jìn)行時(shí)間校準(zhǔn),可以使用crond服務(wù)來定時(shí)執(zhí)行,例如:在/etc/crontab中加入308* * *root/usr/sbin/ntpdate 192.168.0.1一行,表示每天8∶30Linux客戶機(jī)會(huì)自動(dòng)與NTP服務(wù)器進(jìn)行時(shí)間校準(zhǔn)。
2)Windows客戶機(jī) 在 Windows客戶機(jī)上進(jìn)行時(shí)間同步:雙擊桌面任務(wù)欄上的時(shí)間,彈出 “日期和時(shí)間”屬性窗口,選擇Internet時(shí)間,在服務(wù)器中填入NTP服務(wù)器的IP地址或者域名,然后點(diǎn)擊立即更新,系統(tǒng)時(shí)間就會(huì)立即更新。如果想定時(shí)更新,把左上角的自動(dòng)與Internet時(shí)間服務(wù)器同步選中,然后點(diǎn)擊右下角的應(yīng)用即可。
NTP服務(wù)的配置及使用都非常簡(jiǎn)單,并且占用的資料非常小,但它卻可以使網(wǎng)絡(luò)擁有一個(gè)非常精確的系統(tǒng)時(shí)間,不僅為管理員在不同的系統(tǒng)上處理、收集日志和管理提供了較為準(zhǔn)確的信息,而且對(duì)于一些對(duì)時(shí)間精度要求較高的系統(tǒng),是非常出色的解決方案。
[1]朱嶺.基于NTP協(xié)議的局域網(wǎng)時(shí)間同步方案 [J].池州學(xué)院學(xué)報(bào),2008,22(5):13-15.
[2]汪華,李波,楊遠(yuǎn)恒.在網(wǎng)絡(luò)中搭建基于NTP服務(wù)的時(shí)間同步系統(tǒng) [J].貴州氣象,2010,34(5):24-26.
[3]宋妍,朱爽.基于NTP的網(wǎng)絡(luò)時(shí)間服務(wù)系統(tǒng)的研究 [J].計(jì)算機(jī)工程與應(yīng)用,2003(36):147-149.
[4]黃沛芳.基于NTP的高精度時(shí)鐘同步系統(tǒng)實(shí)現(xiàn) [J].計(jì)算機(jī)技術(shù)與應(yīng)用,2009(7):122-127.