(揚州職業大學信息工程學院,江蘇 揚州225000)
計算機主機的時間主要是通過內部BIOS芯片的原子震蕩周期來計時,然而由于不同的芯片之間多少存在差異,因此造成BIOS時間與UTC時間(國際標準時間)總會存在差異。所以,為了避免計算機時間長期積累下導致的時間偏差越來越大,就必須定期對電腦時間進行調整。用戶可以通過手表、時鐘或者是電視時間來進行時間校準,對于計算機用戶來說,最方便的是通過Internet上的時間服務器校準電腦時間(稱之為時間同步[1])。時間同步在網絡中應用十分廣泛,尤其是對時間精確要求較高的地方,例如交通運輸業的時間顯示系統、電信網絡中的計費系統、網絡考試系統等,如果計算機時鐘不精確,那么這些應用很多將不能正常工作。因此,時間同步應用顯得格外重要。
對于個人計算機而言,時間同步很容易實現,如常用的Windows系統中就自帶了時間同步功能,只要設置好時間服務器的地址或域名,能夠訪問Internet,就可以和網絡中的時間服務器進行時間同步。但若在一個公司的局域網中,如果讓每個員工通過手動的方式每隔一段時間去校準時間,不但不利于管理,而且校準目標時間源也不一定準確。公司局域網絡中不同計算機的時間偏差尤其是客戶機/服務器之間的時間偏差,就會對一些要求時間同步的服務產生影響,如為了管理方便,服務器設置到下班時間時用戶賬號過期,用戶無法訪問Internet網絡;如果用戶的計算機時間與服務器的時間不同步,當用戶認為下班時間未到,正準備發送郵件時,而在服務器的時間上,用戶的賬號已經過期,從而導致用戶無法發送郵件。針對以上問題,可以在局域網中建立一個能提供精確時間的服務器,局域網內的所有計算機統一通過這臺時間服務器進行時間同步,從而保證局域網中的所有計算機的時間一致。基于以上思想,筆者以開源操作系統Debian Linux為時間服務器平臺,基于NTP協議,提出了基于Debian環境下構建局域網時間同步系統的解決方案。
為了實現時間同步,需要運用NTP(Network Time Protocol)協議,該協議是用來使計算機時間同步的一個Internet標準協議,它可以使計算機對其服務器或時鐘源做同步化,可以提供高精準度的時間校正,且可借由加密確認的方式來防止惡毒的協議攻擊[2]。
要在局域網內實現時間同步,需要創建NTP服務器。NTP服務器采用層次結構(stratum)來處理時間的同步化。在因特網中已經提供了一些主要與次要的時間服務器,這些均屬于第一層及第二層的時間服務器(stratum-1,stratum-2),一般來說,在進行NTP主機的架設時,選擇國內的上層NTP來同步時間即可,如中國國家授時中心提供的NTP服務器,如果這部NTP屬于stratum-2,那主機即為stratum-3。另外,在選擇上層NTP時,一般會選擇多部上層NTP服務器,這樣可以避免因為某部NTP服務器突然故障,其他主機仍然可以提供NTP主機進行時間同步[3-4]。
在局域網中,NTP服務可以看成C/S的工作模式,其工作原理如下圖1所示。

圖1 NTP工作原理圖
以校園局域網為例,一般校園網的網絡結構是分為2層的星型結構,即中心交換機層和供各個節點接入的桌面交換機層。中心交換機可以采用1臺高檔的企業級交換機,提供多個千兆網絡端口。各個節點的桌面交換機連接到中心交換機上,這些桌面交換機內部相當于一個小型局域網。根據時間同步的原理以及校園局域網的網絡結構,筆者設計了如下的NTP同步方案(見圖2),給整個校園局域網提供準確可靠的時間同步服務。在整個局域網內部設置1~2臺基于Debian Linux平臺的時間服務器,通過中心交換機與Internet連接,與因特網上提供的時間服務器進行時間同步。設置2臺時間服務器可以確保局域網中至少有1臺NTP服務器為下層提供時間同步服務,NTP服務器設置在局域網防火墻的后面,僅對局域網內部提供時間同步服務。各部門的部門服務器、客戶機通過桌面交換機與中心交換機連接,與局域網內的NTP服務器相連實現時間同步。

圖2 局域網NTP同步示意圖
Linux操作系統一直以其開源、穩定、安全的特點作為服務器操作系統的首選,Linux有很多發行版,這里選擇以最新的Debian 6.0作為NTP服務器的系統平臺。在Debian系統上配置NTP服務器,可按如下步驟實現:
1)安裝NTP軟件包 通過apt-get install ntp命令在線安裝,也可以從網上下載源碼安裝。
2)配置NTP服務 NTP服務的配置文件為/etc/ntp.conf,其中最關鍵的配置參數為server段,該段的參數是用來指明上層時間服務器的位置,可以設置多個上層時間服務器以保證時間同步。如:

3)啟動 NTP服務 輸入啟動腳本/etc/init.d/ntp start。
4)監視NTP服務 輸入命令ntpq-p來查看客戶機與服務器之間的關系。
值得注意的是,NTP服務的端口是123,使用的是UDP協議,因此NTP服務器的防火墻必須對外開放udp 123這個端口,另外,NTP服務通常需要一段時間進行時間同步,所以在NTP剛剛啟動的時候是不能正常提供時鐘服務,如果配置正確一般5min后即能正常工作。
客戶機的主要任務是連接到局域網內的時間服務器,以保持客戶機的時鐘與服務器同步。分別以Debian Linux和Windows客戶機為例說明客戶機的配置。
1)Linux客戶機 在Linux客戶機上進行時間同步,只要執行ntpdate命令即可,如ntpdate 192.168.0.1(192.168.0.1是局域網 NTP服務器的IP地址),如果想定時進行時間校準,可以使用crond服務來定時執行,例如:在/etc/crontab中加入308* * *root/usr/sbin/ntpdate 192.168.0.1一行,表示每天8∶30Linux客戶機會自動與NTP服務器進行時間校準。
2)Windows客戶機 在 Windows客戶機上進行時間同步:雙擊桌面任務欄上的時間,彈出 “日期和時間”屬性窗口,選擇Internet時間,在服務器中填入NTP服務器的IP地址或者域名,然后點擊立即更新,系統時間就會立即更新。如果想定時更新,把左上角的自動與Internet時間服務器同步選中,然后點擊右下角的應用即可。
NTP服務的配置及使用都非常簡單,并且占用的資料非常小,但它卻可以使網絡擁有一個非常精確的系統時間,不僅為管理員在不同的系統上處理、收集日志和管理提供了較為準確的信息,而且對于一些對時間精度要求較高的系統,是非常出色的解決方案。
[1]朱嶺.基于NTP協議的局域網時間同步方案 [J].池州學院學報,2008,22(5):13-15.
[2]汪華,李波,楊遠恒.在網絡中搭建基于NTP服務的時間同步系統 [J].貴州氣象,2010,34(5):24-26.
[3]宋妍,朱爽.基于NTP的網絡時間服務系統的研究 [J].計算機工程與應用,2003(36):147-149.
[4]黃沛芳.基于NTP的高精度時鐘同步系統實現 [J].計算機技術與應用,2009(7):122-127.