linux 時鐘同步

linux 時鐘同步

 linux 時鐘同步  

Network Time Protocol(,網絡時間協議)用於同步它所有客戶端時鐘的服務。NTP服務器將本地系統的時鐘與一個公共的NTP服務器同步然後作爲時間主機提供服務,使本地網絡的所有客戶端能同步時鐘。

    同步時鐘最大的好處就是相關係統上文件中的數據,如果網絡中使用中央日誌主機集中管理日誌,得到的日誌結果就更能反映真實情況。在同步了時鐘的網絡中,集中式的性能監控、服務監控系統能實時的反應系統信息,系統管理員可以快速的檢測和解決系統錯誤。

   安裝配置NTP服務

    下面將介紹NTP服務器的簡單:

   第一步,安裝NTP服務

    一般的發行版都會帶ntp軟件包,如果你的系統中還沒有安裝,就使用rpm命令安裝此包

,以下以centos系統爲例配置一臺時間服務器:

 查找當前系統是否已安裝ntp
 [root@localhost ~]# rpm -qa | grep ntp
 chkfontpath-1.10.1-1.1
 ntp-4.2.2p1-8.el5.centos.1       (這個就是已經安裝的RPM包)

 如果沒有安裝,可用下例命令安裝:
 [root@localhost ~]# rpm -ivh ntp-4.2.2p1-8.el5.centos.1.rpm

   第二步,配置NTP服務器
 
   NTP服務器配置如下:

    編輯配置文件/etc/ntp.conf   

restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

restrict 127.0.0.1
restrict -6 ::1


restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

server 192.168.146.225
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org


server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10

   配置文件說明如下:

    第一行restrict、default定義默認訪問規則,nomodify禁止遠程主機修改本地服務器配置,notrap拒絕特殊的ntpdq捕獲消息,noquery拒絕btodq/ntpdc查詢(這裏的查詢是服務器本身狀態查詢)。

    restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    這句是手動增加的,意思是從192.168.1.1-192.168.1.254的服務器都可以使用我們的NTP服務器來同步時間。

    server 192.168.146.225
    這句也是手動增加的,指明局域網中作爲NTP服務器的IP;

  配置文件的最後兩行作用是當服務器與公用的時間服務器失去聯繫時以本地時間爲客戶端提供時間服務。


   端口
  ntp使用udp協議,記得開放其123端口。


  啓動NTPD

    爲了使NTP服務可以在系統引導的時候自動啓動,執行:
    #chkconfig ntpd on
    啓動ntpd:
  service ntpd start


   NTP客戶端配置:

    在客戶端手動執行“ntpdate 服務器IP”來同步時間;


    另可以使用crond來定時同步時間:

    以root身份運行週期性任務:
  [root@supersun root]# crontab -e

  添加以下內容,每15分鐘更新一下時間:
  */15空格*空格 *空格 *空格 *空格 ntpdate空格 服務器IP

 

    此處的ntpdate命令包含在ntp軟件包中,記得確認系統中是否已安裝。

本人自己設置的ntp時鐘同步

通過crontab -e命令將如下命令週期性執行
10 3 * * 3 /usr/sbin/ntpdate 219.233.237.2 && /sbin/hwclock -w
ps:每週三的3:10分 與時間服務器219.233.237.2同步時間,並將當前時間寫入BIOS中


   第三步,檢查時間服務器是否正確同步

    使用下面的命令檢查時間服務器同步的狀態:
    #ntpq -p
   
    一個可以證明同步有問題的證據是:所有遠程服務器的jitter值是4000並且delay和reach的值是0。

可能的原因有:

    有防火牆阻斷了與server之間的通訊,即123端口是否正常開放;

    此外每次重啓NTP服務器之後大約要3-5分鐘客戶端才能與server建立正常的通訊連接,否則你在客戶端執行“ntpdate 服務器ip”的時候將返回:
    27 Jun 10:20:17 ntpdate[21920]: no server suitable for synchronization found

 

 

當用ntpdate -d 來查詢時會發現導致 no server suitable for synchronization found 的錯誤的信息有以下2個: 

錯誤1.Server dropped: Strata too high

在ntp客戶端運行ntpdate serverIP,出現no server suitable for synchronization found的錯誤。

在ntp客戶端用ntpdate –d serverIP查看,發現有“Server dropped: strata too high”的錯誤,並且顯示“stratum 16”。而正常情況下stratum這個值得範圍是“0~15”。

這是因爲NTP server還沒有和其自身或者它的server同步上。

以下的定義是讓NTP Server和其自身保持同步,如果在/ntp.conf中定義的server都不可用時,將使用local時間作爲ntp服務提供給ntp客戶端。

server 127.127.1.0 fudge


127.127.1.0 stratum 8

在ntp server上重新啓動ntp服務後,ntp server自身或者與其server的同步的需要一個時間段,這個過程可能是5分鐘,在這個時間之內在客戶端運行ntpdate命令時會產生no server suitable for synchronization found的錯誤。

那麼如何知道何時ntp server完成了和自身同步的過程呢?

在ntp server上使用命令:

# watch ntpq -p

出現畫面:

Every 2.0s: ntpq -p                                                                                                             Thu Jul 10 02:28:32 2008

     remote           refid      st t when poll reach   delay   offset jitter

==============================================================================

 192.168.30.22   LOCAL(0)         8 u   22   64    1    2.113 179133.   0.001

 LOCAL(0)        LOCAL(0)        10 l   21   64    1    0.000   0.000  0.001

 

注意LOCAL的這個就是與自身同步的ntp server。

注意reach這個值,在啓動ntp server服務後,這個值就從0開始不斷增加,當增加到17的時候,從0到17是5次的變更,每一次是poll的值的秒數,是64秒*5=320秒的時間。

如果之後從ntp客戶端同步ntp server還失敗的話,用ntpdate –d來查詢詳細錯誤信息,再做判斷。


錯誤2.Server dropped: no data
從客戶端執行netdate –d時有錯誤信息如下:

transmit(192.168.30.22)
transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

192.168.30.22: Server dropped: no data

server 192.168.30.22, port 123

.....
28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found
出現這個問題的原因可能有2:

1。檢查ntp的版本,如果你使用的是ntp4.2(包括4.2)之後的版本,在restrict的定義中使用了notrust的話,會導致以上錯誤。

使用以下命令檢查ntp的版本:

# ntpq -c version

下面是來自ntp官方網站的說明:
The behavior of notrust changed between versions 4.1 and 4.2.

In 4.1 (and earlier) notrust meant "Don't trust this host/subnet for time".

In 4.2 (and later) notrust means "Ignore all NTP packets that are not cryptographically authenticated." This forces remote time servers to authenticate themselves to your (client) ntpd

解決:

把notrust去掉。


2。檢查ntp server的防火牆。可能是server的防火牆屏蔽了upd 123端口。

可以用命令

#service iptables stop

來關掉iptables服務後再嘗試從ntp客戶端的同步,如果成功,證明是防火牆的問題,需要更改iptables的設置。

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