Network Time ProtocolNTP)是用來使計算機時間同步化的一種協議,它可以使計算機對其服務器或時鍾源(如石英鍾,GPS等等)做同步化,它可以提供高精准度的時間校正(LAN上與標准間差小於1毫秒,WAN上幾十毫秒),且可介由加密確認的方式來防止惡毒的協議攻擊。

一.ntp服務器搭建

1.安裝軟件

yum install ntp     #服務器程序

yum install ntpdate  #自動更新時間服務

2.啟動服務

chkconfig --level 35 ntpd on  

chkconfig --level 35 ntpdate on  

service ntpd start      #ntpd服務不能和ntpdate服務同時啟動

service ntpdate start    # ntpd服務不能和ntpdate服務同時啟動

ntpdntpdate在更新時間時是有的區別。ntpd不僅僅是時間同步服務器,他還可以做客戶端與標准時間服務器進行同步時間,而且是平滑同步,並非ntpdate立即同步,在生產環境中慎用ntpdate,也正如此兩者不可同時運行。

3.修改配置文件

1cat/etc/ ntp.conf |grep -v "#"

刪除以前的內容,直接添加以下內容即可

driftfile /var/lib/ntp/drift

restrict default nomodify notrap noquery

restrict 127.0.0.1

restrict -6 ::1

restrict 192.168.100.0 mask 255.255.255.0 nomodifynotrap

server ntp.sjtu.edu.cn     prefer

server 1.centos.pool.ntp.org

server 2.centos.pool.ntp.org

server 0.centos.pool.ntp.org

server  127.127.1.0    

fudge   127.127.1.0stratum 10  

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

logfile /var/log/ntp/ntp.log

 time correct to within 10ms                                            

 polling server every 30s              

 

2)在/etc/sysconfig/ntpd中添加如下信息,同步硬件時鍾

SYNC_HWCLOCK=yes

NTPDATE_OPTIONS=""

3 /usr /share/zoneinfo/     #在這個目錄下的文件規定了各主要時區的時間設定文件

4  /etc/sysconfig/clock    #每次開機后,Linux 會自動的讀取這個文件來設定自己系統所默認要顯示的時間。

ZONE="Asia/Chongqing"

5  /etc /localtime    #這個文件就是本地端的時間配置文件。上面那個clock 文件里面規定了使用的時間設置文件(ZONE) /usr/share/zoneinfo/Asia/Chongqing ,所以說這就是本地端的時間了,此時, Linux系統就會將那個文件另存為一份 /etc/localtime文件。

4.查看服務啟動狀態

netstat -ln|grep 123      #ntpd的端口

udp       0      0 192.168.3.1:123             0.0.0.0:*                              

udp       0      0 192.168.110.9:123           0.0.0.0:*                              

udp       0      0 127.0.0.1:123               0.0.0.0:*                              

udp       0      0 0.0.0.0:123                 0.0.0.0:*                              

udp       0      0fe80::21f:29ff:fe02:11a1:123 :::*                                    

udp       0      0 ::1:123                     :::*                                    

udp       0      0 :::123                      :::*  

5.查看時間同步情況

指令“ntpq -p”可以列出目前我們的NTP與相關的上層NTP的狀態,以上的幾個字段的意義如下:

remote:即NTP主機的IP或主機名稱。注意最左邊的符號,如果由“+”則代表目前正在作用鍾的上層NTP,如果是“*”則表示也有連上線,不過是作為次要聯機的NTP主機。

refid:參考的上一層NTP主機的地址

st:即stratum階層

when:幾秒前曾做過時間同步更新的操作

poll:下次更新在幾秒之后

reach:已經向上層NTP服務器要求更新的次數

delay:網絡傳輸過程鍾延遲的時間

offset:時間補償的結果

jitterLinux系統時間與BIOS硬件時間的差異時間

 

也可以執行watch ntpq –p 查看同步情況

6.ntpstat查看服務器上一次與上級服務器同步時間的情況

如果出現:

unsynchronised

 time serverre-starting

  pollingserver every 64 s

說明時間服務器還沒有與上一級ntp服務器通信成功,需要等待3---5分鍾左右。

成功更新之后會顯示如下信息:

synchronised to NTP server (202.120.2.101) at stratum4

  time correctto within 51 ms

  pollingserver every 64 s

二、ntp客戶端設置

客戶端的設置其實和服務器的設置是一樣的,因為客戶端還可以為下級計算機提供自動更新時間服務。所以可以在客戶端進行同樣的配置,只不過在配置ntp.conf文件的時候把上一級ntp服務器指向我們剛才配置好的ntp 服務器。

在客戶端也可以不用啟動ntpd服務,這時就可以ntpdate更新時間了。

執行 ntpdate ntpserverIP  #即可更新時間,前提是關掉ntpd服務,否則會報19 Jun 17:23:14 ntpdate[2280]: the NTP socket is inuse, exiting 錯誤,意思是端口被占用。

 

在停掉ntpd服務之后,修改系統的配置文件讓定期自動執行ntpdate以便自動同步時間。

vim /etc/crontab   #打開並添加如下信息,crontab是一個定期執行任務的程序。

10 7 *  *  * root /usr/sbin/ntpdate 202.120.2.101;/usr/sbin/hwclock-w   #每天早上的710 自動與202.120.2.101 時間服務器自動同步時間,並寫入硬件中。

service crond restart    #crondcrontab的守護進程

 

ntptrace –n 127.0.0.1 如果沒有這個命令,需要安裝ntp-perl

 

[root@centos*09:04~]#ntptime

ntp_gettime()returns code 0 (OK)

 time d56e257a.561dd9e8  Fri, Jun 21 2013  9:06:02.336, (.336393292),

 maximum error 311781 us, estimated error 4437us, TAI offset 0

ntp_adjtime()returns code 0 (OK)

 modes 0x0 (),

 offset 256.021 us, frequency 25.908 ppm,interval 1 s,

 maximum error 311781 us, estimated error 4437us,

 status 0x2001 (PLL,NANO),

 time constant 7, precision 0.001 us,tolerance 500 ppm,