Network Time Protocol(NTP)是用來使計算機時間同步化的一種協議,它可以使計算機對其服務器或時鍾源(如石英鍾,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服務同時啟動
ntpd與ntpdate在更新時間時是有的區別。ntpd不僅僅是時間同步服務器,他還可以做客戶端與標准時間服務器進行同步時間,而且是平滑同步,並非ntpdate立即同步,在生產環境中慎用ntpdate,也正如此兩者不可同時運行。
3.修改配置文件
(1)cat/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:時間補償的結果
jitter:Linux系統時間與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 #每天早上的7點10 自動與202.120.2.101 時間服務器自動同步時間,並寫入硬件中。
service crond restart #crond是crontab的守護進程
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,