Linux下配置NTP 架設本地時間服務器

配置NTP架設本地時間服務器

NTP是用來使系統和一個精確的時間源保持時間同步的協議.在Linux下,我們可以通過自帶的NTP(Network Time Protocol)協議通過網絡使自己的系統保持精確的時間.

安裝:

# yum install ntp

或者從安裝盤查找 ntp 的rpm 包安裝

當你只有一臺可鏈接外網的服務器時,加入

# crontab -e

加入一行:

*/15 * * * * ntpdate 210.72.145.44

210.72.145.44 爲中國國家授時中心服務器地址,這樣該機就可以與國家授時中心進行同步了。

要架設本地時間服務器,只需要修改 /etc/ntp.conf文件裏的幾個簡單的配置就可以了,以下是我添加的配置:

#add by Fengshihua

server 210.72.145.44 prefer (中國國家授時中心服務器地址 prefer表示優先 注意把默認的server更改成這樣)

server 218.21.130.42 (cn.pool.ntp.org的IP)

restrict 192.168.100.0 mask 255.255.255.0 nomodify (允許內網通訊)

restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap noquery notrust (屏蔽其他IP過來更新時間)

 

其他的保持默認不動。

爲了使NTP服務可以在系統引導的時候自動啓動,執行:

# chkconfig ntpd on

啓動/關閉/重啓NTP的命令是:

# /etc/init.d/ntpd start

# /etc/init.d/ntpd stop

# /etc/init.d/ntpd restart

將同步好的時間寫到CMOS裏

 

vi /etc/sysconfig/ntpd

 

SYNC_HWCLOCK=yes

 

切記每次修改了配置文件後都需要重新啓動服務來使配置生效。可以使用下面的命令來檢查NTP服務是否啓動,你應該可以得到一個進程ID號:

# pgrep ntpd

使用下面的命令檢查時間服務器同步的狀態:

# ntpq -p

用ntpstat 也可以查看一些同步狀態,用netstat -ntlup查看端口使用情況!

安裝完畢客戶端需過5-10分鐘才能從服務器端更新時間!

客戶端設置:

# crontab -e

加入一行:

*/15 * * * * ntpdate 服務器端IP。

 

當用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的時候,從0175次的變更,每一次是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的設置。

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