NTP時間服務器

 搭建自己的NTP時間服務器

網絡時間協議NTPNetwork Time Protocol)是用於互聯網中時間同步的標準互聯網協議。NTP的用途是把計算機的時間同步到某些時間標準。目前採用的時間標準是世界協調時UTCUniversal Time Coordinated)。NTP的主要開發者是美國特拉華大學的David L. Mills教授。

NTP對於我們個人來說有什麼用呢,簡單的講,當你的計算機時間不準確了,你可以接入到互聯網,從網上同步一下時間,看多方便。

對於企業來說,當你有成百上千的計算機,都不能直接連接互聯網,時間不統一影響業務,如果一臺一臺的修改,那不得累死人啊。這時搭建一個自己的NTP服務器就顯出它的優勢了。

下面我們就來學習一下如何搭建自己的NTP時間服務器。

一、NTP服務器的安裝

想要學習當然是得先安裝上,不然怎麼學?

安裝方法有:

1RPM安裝

 

2YUM安裝

 

3、源碼編譯安裝

# wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p4.tar.gz
# tar zxvf ntp-4.2.6.tar.gz
# cd ntp-4.2.6
# ./configure --prefix=/usr/local/ntp --enable-all-clocks --enable-parse-clocks
# make && make install

二、NTP的配置文件和相關命令

NTP的配置文件:

/etc/ntp.conf      NTP服務的配置文件。

1)、權限的設定主要以 restrict 這個參數來設定,主要的語法爲:
restrict IP
地址 mask 子網掩碼 參數
其中 IP 可以是IP地址,也可以是 default default 就是指所有的IP
參數有以下幾個:
ignore
:關閉所有的 NTP 聯機服務
nomodify
:客戶端不能更改服務端的時間參數,但是客戶端可以通過服務端進行網絡校時。
notrust
:客戶端除非通過認證,否則該客戶端來源將被視爲不信任子網
noquery
:不提供客戶端的時間查詢 
2
)、用server這個參數設定上級時間服務器,語法爲:
server  IP
地址或域名 [prefer]
IP
地址或域名就是我們指定的上級時間服務器,如果 Server 參數最後加上 prefer,表示我們的 NTP 服務器主要以該部主機時間進行校準。
3
)、解決NTP服務器校準時間時的傳送延遲
使用driftfile參數設置:
driftfile
文件名 
在與上級時間服務器聯繫時所花費的時間,記錄在driftfile參數後面的文件內。
注意:  driftfile 後面接的文件需要使用完整的路徑文件名,不能是鏈接文件,並且文件的權限需要設定成 ntpd守護進程可以寫入。

/usr/share/zoneinfo/     這個目錄下存放的是各個時區對應的設定文件。

/etc/localtime    本地系統時間設定文件。

/etc/sysconfig/clock   本機時區設定文件。

 

當我們修改了上圖中ZONE選項中的時區時,系統就對去/usr/share/zoneinfo/取對應的時區設定文件,複製爲本地/etc/localtime

相關命令:

date    修改和顯示日期和時間的命令。

hwclock    將當前系統時間寫入CMOS的命令,只有root用戶纔可以使用。

ntpd     NTP服務的守護進程文件,需要先啓動它才能提供NTP服務。

ntpdate     客戶端時間同步

三、配置NTP

# vi /etc/ntp.conf

#========權限控制============
restrict default kod nomodify notrap nopeer noquery    
拒絕IPV4用戶
restrict -6 default kod nomodify notrap nopeer noquery  
拒絕IPV6用戶
restrict 210.72.145.44
授權國家授時中心服務器訪問本地NTP       
restrict 133.100.11.8 
授權133.100.11.8訪問本地NTP
restrict 127.0.0.1
restrict -6 ::1
restrict 192.168.100.0 mask 255.255.255.0 nomodify    
本地網段授權訪問
#=========
源服務器===========
server 210.72.145.44 prefer  
指定上級更新時間服務器,優先使用這個地址
server 133.100.11.8
#=========
差異分析===========
driftfile /var/lib/ntp/drift
keys    /etc/ntp/keys

# service ntpd start    RPMYUM安裝的啓動方式

#/usr/local/ntp/bin/ntpd -c /etc/ntp.conf -p /tmp/ntpd.pid   源碼編譯安裝的啓動方式

ntpd啓動後,客戶機要等幾分鐘再與其進行時間同步,否則會提示“no server suitable for synchronization found”錯誤。

# netstat -tlunp | grep ntp       如果看到123端口,說明ntp服務成功啓動。

# ntpstat    查看ntp服務器與上級服務器是否通訊

# ntpq p   查看本地NTP與上級服務器的通訊情況

四、客戶端如何更新時間

linux上:

# ntpdate 192.168.100.10

手工更新太麻煩,我們寫個任務計劃定時更新

# vi /var/spool/cron/root

0 1 * * * /usr/sbin/ntpdate 192.168.18.2

windows上:

 

 五、NTPD服務端設置

1)確認NTPD服務已經開啓,時區設置正確,

2)確認NTPD能夠作爲客戶端從上級NTP服務器獲取時間,

3NTPD服務的主要配置文件默認是/etc/ntp.conf

4)設置配置文件中的“restrict”項,主要用於控制客戶端對服務器的訪問,一般設置如下:

restrict default  kod nomodify notrap nopeer noquery

#禁用全部地址對NTPD各服務的訪問

restrict  127.0.0.1

#允許本機地址(127.0.0.1)對NTPD各服務的訪問

restrict  xx.xx.xx.xx  mask  xx.xx.xx.xx  nomodify

#允許設置的可信任地址段對NTPD各服務的訪問,但不允許此地址段內客戶端修改NTPD服務器時間(nomodify)。

5)設置配置文件中的“server”項,主要用於NTPD的上級服務器、本機時鐘的同步,以及時鐘的層次stratum

server 127.127.1.0

#NTPD把本地主機的時鐘也看作外部時鐘源來處理,分配的地址是127.127.1.0

fudge  127.127.1.0 stratum 1

#設置本地時鐘源的層次爲1,這樣如果NTPD服務從本地時鐘源獲取時間的話,NTPD對外宣佈的時間層次爲2

server 10.138.1.240

#設置上級時鐘源爲10.138.1.240,上級時鐘源的層次是1NTPD從上級時鐘源獲取到時間,對外宣佈的時間層次爲2。只有在上級時鐘源失效時,NTPD纔會使用127.127.1.0的本地時鐘。

6)配置完畢,重啓NTPD服務,使配置更改生效。

 

六、NTPD服務調試過程遇到的問題

NTP時間同步失敗的原因很多,但排除配置不當和外部因素後,NTP協議本身的特性也需要考慮到,在Linux NTPD服務調試的過程中,遇到以下問題:

1NTPD服務剛啓動後,客戶端無法同步時間,在過了幾分鐘之後,客戶端才能成功成功同步時間。

2)網絡上存在多個NTP服務器時,客戶端單獨只從A服務器或B服務器同步時間都能成功,但如果把從A服務同步時間的客戶機重新設置,改爲從B服務器同步,很有可能不能成功同步時間,重啓客戶機上的同步服務之後,發現客戶機又能夠成功從B服務器同步了。

層的概念

這些問題主要涉及到NTP的層(stratum)的概念,頂層是1,值爲0時表示層數不明,層的值是累加的,比如NTP授時方向是A-B-C,假設Astratum值是3,那麼BA獲取到時間,Bstratum置爲4CB獲取到時間,C的值被置爲5。一般只有整個NTP系統最頂層的服務器stratum才設爲1

NTP同步的方向是從stratum值較小的節點向較大的節點傳播,如果某個NTP客戶端接收到stratum比自己還要大,那麼NTP客戶端認爲自己的時間比接受到的時間更爲精確,不會進行時間的更新。

對於大部分NTP軟件系統來說,服務啓動後,stratum值初始是0,一旦NTP服務獲取到了時間,NTP層次就設置爲上級服務器stratum+1。對於具備衛星時鐘、原子鐘的專業NTP設備,一般stratum值初始是1

NTPD的運行過程

NTPD啓動後,stratum值初始是0,此時NTPD接收到NTP請求,回覆stratum字段爲0NTP包,客戶端接收後,發現stratum字段無效,拒絕更新時間,造成時間更新失敗。

幾分鐘後,NTPD從上級服務器獲取到了更新,設置了正確的stratum,回覆stratum字段爲n+1NTP包,客戶端接收後,確認stratum有效,成功進行時間更新。

NTPD上級服務器不可用的情況下,NTPD將本機時鐘服務模擬爲一個上級NTP服務器,地址使用環回127.127.1.0,服務啓動幾分鐘後,NTPD127.127.1.0更新了時鐘,設置了有效的stratum,客戶端接收後,成功進行時間更新。

對應的/etc/ntp.conf配置項如下:

server 127.127.1.0

#NTPD把本地主機的時鐘也看作外部時鐘源來處理,分配的地址是127.127.1.0

fudge  127.127.1.0 stratum 1

#設置本地時鐘源的層次爲1,這樣如果NTPD服務從本地時鐘源獲取時間的話,NTPD對外宣佈的時間層次爲2

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章