date顯示時間
tsselect設置時區
本文是基本是[Linux的時間設置與同步(NTP)]的原文,只在一些地方更新和完善了一下。
一、時間和時區
如果有人問你說現在幾點? 你看了看表回答他說晚上8點了. 這樣回答看上去沒有什么問題,但是如果問你的這個人在歐洲的話那么你的回答就會讓他很疑惑,因為他那里還太陽當空呢.
這里就有產生了一個如何定義時間的問題. 因為在地球環繞太陽旋轉的24個小時中,世界各地日出日落的時間是不一樣的.所以我們才有劃分時區(timezone) 的必要,也就是把全球劃分成24個不同的時區. 所以我們可以把時間的定義理解為一個時間的值加上所在地的時區(注意這個所在地可以精確到城市)
地理課上我們都學過格林威治時間(GMT), 它也就是0時區時間. 但是我們在計算機中經常看到的是UTC. 它是Coordinated Universal Time的簡寫. 雖然可以認為UTC和GMT的值相等(誤差相當之小),但是UTC已經被認定為是國際標準,所以我們都應該遵守標準只使用UTC
那么假如現在中國當地的時間是晚上8點的話,我們可以有下面兩種表示方式
20:00 CST
12:00 UTC
這里的CST是Chinese Standard Time,也就是我們通常所說的北京時間了. 因為中國處在UTC+8時區,依次類推那么也就是12:00 UTC了.
第一,不管通過任何渠道我們想要同步系統的時間,通常提供方只會給出UTC+0的時間值而不會提供時區(因為它不知道你在哪里).所以當我們設置系統時間的時候,設置好時區是首先要做的工作
第二,很多國家都有夏令時,那就是在一年當中的某一天時鐘撥快一小時(比如從UTC+8一下變成UTC+9了),那么同理到時候還要再撥慢回來.如果我們設置了正確的時區,當需要改變時間的時候系統就會自動替我們調整
現在我們就來看一下如何在Linux下設置時區,也就是time zone
二、如何設置Linux Time Zone
在Linux下glibc提供了我們事先編譯好的許多timezone文件, 他們就放在/usr/share/zoneinfo這個目錄下,這里基本涵蓋了大部分的國家和城市
1 2 3 4 5 6 7 | # ls -F /usr/share/zoneinfo/ Africa/ Asia/ Canada/ Cuba EST Factory GMT0 Hongkong Iran Japan Mexico/ Navajo Poland PRC ROK Universal W-SU America/ Atlantic/ CET EET EST5EDT GB GMT-0 HST iso3166.tab Kwajalein Mideast/ NZ Portugal PST8PDT Singapore US/ zone.tab Antarctica/ Australia/ Chile/ Egypt Etc/ GB-Eire GMT+0 Iceland Israel Libya MST NZ-CHAT posix/ right/ Turkey UTC Zulu Arctic/ Brazil/ CST6CDT Eire Europe/ GMT Greenwich Indian/ Jamaica MET MST7MDT Pacific/ posixrules ROC UCT WET |
在這里面我們就可以找到自己所在城市的time zone文件. 那么如果我們想查看對于每個time zone當前的時間我們可以用zdump命令
1 2 3 | # zdump /usr/share/zoneinfo/Asia/Chongqing # /usr/share/zoneinfo/Asia/Chongqing Fri May 27 10:35:24 2011 CST |
那么我們又怎么來告訴系統我們所在time zone是哪個呢? 方法有很多,這里舉出兩種
第一個就是修改/etc/localtime這個文件,這個文件定義了我么所在的local time zone.
我們可以在/usr/share/zoneinfo下找到我們的time zone文件然后拷貝去到/etc/localtimezone(或者做個symbolic link)
假設我們現在的time zone是BST(也就是英國的夏令時間,UTC+1)
1 2 | # date 2011年 05月 27日 星期五 10:52:05 CST |
我們想把time zone換成重慶所在的時區就可以這么做
1 2 3 4 | # ln -sf /usr/share/zoneinfo/posix/Asia/Chongqing /etc/localtime # date 2011年 05月 27日 星期五 10:39:18 CST |
這樣時區就改過來了(注意時間也做了相應的調整)
第二種方法也就設置TZ環境變量的值. 許多程序和命令都會用到這個變量的值. TZ的值可以有多種格式,最簡單的設置方法就是使用tzselect命令
1 2 3 4 | # tzselect ... TZ='Asia/Chongqing'; export TZ |
tzselect是一個交互式腳本,會讓你選擇所在的國家和城市(這里省略了這些步驟),最后輸出相應的TZ變量的值.那么如果你設置了TZ的值之后時區就又會發生變化
注:交互選擇這個過程,其實就是為了確定TZ變量的值,如果你知道正確的值,可以設定就可以了。
1 2 | # date 2011年 05月 27日 星期五 10:52:05 CST |
通過這兩個例子我們也可以發現TZ變量的值會優先于/etc/localtime. 也就是說當TZ變量沒有定義的時候系統才使用/etc/localtime來確定time zone. 所以你想永久修改time zone的話那么可以把TZ變量的設置寫入/etc/profile里
好了現在我們知道怎么設置時區了,下面我們就來看看如何設置Linux的時間吧
三、Real Time Clock(RTC) and System Clock
說道設置時間這里還要明確另外一個概念就是在一臺計算機上我們有兩個時鐘:一個稱之為硬件時間時鐘(RTC),還有一個稱之為系統時鐘(System Clock)
硬件時鐘是指嵌在主板上的特殊的電路, 它的存在就是平時我們關機之后還可以計算時間的原因
系統時鐘就是操作系統的kernel所用來計算時間的時鐘. 它從1970年1月1日00:00:00 UTC時間到目前為止秒數總和的值 在Linux下系統時間在開機的時候會和硬件時間同步(synchronization),之后也就各自獨立運行了
那么既然兩個時鐘獨自運行,那么時間久了必然就會產生誤差了,下面我們來看一個例子
1 2 3 4 5 | # date 2011年 05月 27日 星期五 10:59:27 CST # hwclock --show 2011年05月27日 星期五 11時02分29秒 -0.863266 seconds |
通過hwclock –show或hwclock -r命令我們可以查看機器上的硬件時間(always in local time zone), 我們可以看到它和系統時間還是有一定的誤差的, 那么我們就需要把他們同步
如果我們想要把硬件時間設置成系統時間我們可以運行以下命令
1 2 3 | # hwclock --hctosys 或者 # hwclock -s |
反之,我們也可以把系統時間設置成硬件時間
1 2 3 | # hwclock --systohc 或者 # hwclock -w |
那么如果想設置硬件時間我們可以開機的時候在BIOS里設定.也可以用hwclock命令
1 | # hwclock --set --date="mm/dd/yy hh:mm:ss" |
如果想要修改系統時間那么用date命令就最簡單了
1 | # date -s "yy-mm-dd hh:mm:ss" |
現在我們知道了如何設置系統和硬件的時間. 但問題是如果這兩個時間都不準確了怎么辦? 那么我們就需要在互聯網上找到一個可以提供我們準確時間的服務器然后通過一種協議來同步我們的系統時間,那么這個協議就是NTP了. 注意接下去我們所要說的同步就都是指系統時間和網絡服務器之間的同步了
四、設置NTP Server前的準備
其實這個標題應該改為設置”NTP Relay Server”前的準備更加合適. 因為不論我們的計算機配置多好運行時間久了都會產生誤差,所以不足以給互聯網上的其他服務器做NTP Server. 真正能夠精確地測算時間的還是原子鐘. 但由于原子鐘十分的昂貴,只有少部分組織擁有, 他們連接到計算機之后就成了一臺真正的NTP Server. 而我們所要做的就是連接到這些服務器上同步我們系統的時間,然后把我們自己的服務器做成NTP Relay Server再給互聯網或者是局域網內的用戶提供同步服務
好了,前面講了一大堆理論,現在我們來動手實踐一下吧. 架設一個NTP Relay Server其實非常簡單,我們先把需要的RPM包裝上
1 | # rpm -ivh ntp-4.2.2p1-9.el5.centos.2.1.x86_64.rpm |
那么第一步我們就要找到在互聯網上給我們提供同步服務的NTP Server
http://www.pool.ntp.org是NTP的官方網站,在這上面我們可以找到離我們城市最近的NTP Server. NTP建議我們為了保障時間的準確性,最少找兩個個NTP Server
那么比如在中國的話就可以選擇下面幾個服務器
1 2 3 | server 1.cn.pool.ntp.org server 0.asia.pool.ntp.org server 3.asia.pool.ntp.org |
它的一般格式都是number.country.pool.ntp.org
第二步要做的就是在打開NTP服務器之前先和這些服務器做一個同步,使得我們機器的時間盡量接近標準時間. 這里我們可以用ntpdate命令
1 2 3 4 5 | # ntpdate 1.cn.pool.ntp.org 27 May 11:18:56 ntpdate[26465]: adjust time server 61.153.197.226 offset 0.276787 sec # ntpdate 0.asia.pool.ntp.org 27 May 11:20:01 ntpdate[26470]: adjust time server 122.226.192.4 offset 0.211920 sec |
假如你的時間差的很離譜的話第一次會看到調整的幅度比較大,所以保險起見可以運行兩次. 那么為什么在打開NTP服務之前先要手動運行同步呢?
1. 因為根據NTP的設置,如果你的系統時間比正確時間要快的話那么NTP是不會幫你調整的,所以要么你把時間設置回去,要么先做一個手動同步
2. 當你的時間設置和NTP服務器的時間相差很大的時候,NTP會花上較長一段時間進行調整.所以手動同步可以減少這段時間
五、配置和運行NTP Server
現在我們就來創建NTP的配置文件了, 它就是/etc/ntp.conf. 我們只需要加入上面的NTP Server和一個driftfile就可以了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # vi /etc/ntp.conf #注釋掉缺省的NTP服務器并添加兩個位置比較近的NTP服務器 #server 0.centos.pool.ntp.org #server 1.centos.pool.ntp.org #server 2.centos.pool.ntp.org server 1.cn.pool.ntp.org server 0.asia.pool.ntp.org driftfile /var/lib/ntp/drift #預設的一個內部時鐘資料,用在沒有外部NTP服務器時,這里我們可以將它注解掉: # server 127.127.1.0 # local clock # fudge 127.127.1.0 stratum 10 |
ntp.conf配置說明
利用server設定上層NTP伺服器,上層 NTP 伺服器的設定方式為:
server [IP or hostname] [prefer]
在server后端可以接IP或主機名稱,perfer表示[優先使用]的主機。
以driftfile記錄時間差異
設定的方式如下:
driftfile [可以被ntpd寫入的目錄與檔案]
因為預設的NTP Server本身的時間計算是依據BIOS的晶片震蕩周期頻率來計算的,但是這個數值與上層Time Server有誤差.所以NTP這個daemon(ntpd)會自動的去計算我們自己主機的頻率與上層Time server的頻率,并且將兩個頻率的誤差記錄下來,記錄下來的檔案就是在driftfile后面接的完整文件名中了!
關于文件名你必須要知道:
driftfile后面接的文件需要使用完整路徑;
該文件不能是連結檔;
該文件需要設定成 ntpd 這個 daemon 可以寫入的權限。
該文件所記錄的數值單位為:百萬分之一秒(ppm)。
driftfile后面接的檔案會被ntpd自動更新,所以他的權限一定要能夠讓ntpd 寫入才行。在CentOS 5.x預設的NTP伺服器中,使用的ntpd的owner是ntp ,這部份在/etc/sysconfig/ntpd中設置的!
如何同步硬件時鐘?
NTP一般只會同步system clock。但是如果我們也要同步RTC的話那么只需要把下面的選項打開就可以了
1 2 | # vi /etc/sysconfig/ntpd SYNC_HWCLOCK=yes |
接下來我們就啟動NTP Server,并且設置其在開機后自動運行
1 2 3 | # /etc/init.d/ntpd/start # chkconfig --level 35 ntpd on |
六、查看NTP服務的運行狀況
現在我們已經啟動了NTP的服務,但是我們的系統時間到底和服務器同步了沒有呢? 為此NTP提供了一個很好的查看工具: ntpq(NTP query)
我建議大家在打開NTP服務器后就可以運行ntpq命令來監測服務器的運行.這里我們可以使用watch命令來查看一段時間內服務器各項數值的變化
1 2 3 4 5 6 7 8 | # watch ntpq -p Every 2.0s: ntpq -p Fri May 27 14:06:57 2011 remote refid st t when poll reach delay offset jitter ============================================================================== Hshh.org 209.81.9.7 2 u 35 64 7 103.838 361.111 87.482 time.uni.net.th 202.28.214.2 2 u 98 64 6 450.107 343.325 137.580 LOCAL(0) .LOCL. 10 l 31 64 7 0.000 0.000 0.001 |
ntpq中各參數的含義
remote: 它指的就是本地機器所連接的遠程NTP服務器
refid: 它指的是參考的上一層NTP主機的地址
st: 遠程服務器的級別. 由于NTP是層型結構,有頂端的服務器,多層的Relay Server再到客戶端. 所以服務器從高到低級別可以設定為1-16. 為了減緩負荷和網絡堵塞,原則上應該避免直接連接到級別為1的服務器的.
when: 用做計時,用來告訴我們還有多久本地機器就需要和遠程服務器進行一次時間同步
poll: 本地機和遠程服務器多少時間進行一次同步(單位為秒). 在一開始運行NTP的時候這個poll值會比較小,那樣和服務器同步的頻率也就增加了,可以盡快調整到正確的時間范圍.之后poll值會逐漸增大,同步的頻率也就會相應減小
reach: 這是一個八進制值,表示已經向上層NTP伺服器要求更新的次數。每成功連接一次它的值就會增加。
delay: 網路傳輸過程當中延遲的時間,單位為 10^(-6) 秒
offset: 這是個最關鍵的值, 它告訴了我們本地機和服務器之間的時間差別. offset越接近于0,我們就和服務器的時間越接近。單位為10^(-3)秒
jitter: Linux系統時間與BIOS硬件時間的差異時間,單位為10^(-6)秒。簡單地說這個數值的絕對值越小我們和服務器的時間就越精確。
那么大家細心的話就會發現兩個問題: 第一我們連接的是1.cn.pool.ntp.org為什么和remote server不一樣? 第二那個最前面的+和*都是什么意思呢?
第一個問題是因為NTP提供給我們的是一個cluster server所以每次連接的得到的服務器都有可能是不一樣.同樣這也告訴我們了在指定NTP Server的時候應該使用hostname而不是IP
第二個問題和第一個相關,既然有這么多的服務器就是為了在發生問題的時候其他的服務器還可以正常地給我們提供服務.那么如何知道這些服務器的狀態呢? 這就是第一個記號會告訴我們的信息
*
它告訴我們遠端的服務器已經被確認為我們的主NTP Server,我們系統的時間將由這臺機器所提供
+
它將作為輔助的NTP Server和帶有*號的服務器一起為我們提供同步服務. 當*號服務器不可用時它就可以接管
-
遠程服務器被clustering algorithm認為是不合格的NTP Server
x
遠程服務器不可用
了解這些之后我們就可以實時監測我們系統的時間同步狀況了
七、NTP安全設置
運行一個NTP Server不需要占用很多的系統資源,所以也不用專門配置獨立的服務器,就可以給許多client提供時間同步服務, 但是一些基本的安全設置還是很有必要的
那么這里一個很簡單的思路就是第一我們只允許局域網內一部分的用戶連接到我們的服務器. 第二個就是這些client不能修改我們服務器上的時間
在/etc/ntp.conf文件中我們可以用restrict關鍵字來配置上面的要求
[restrict]參數的設定方式為:
restrict [你的IP] mask [netmask_IP] [parameter]
其中parameter 的參數主要有底下這些:
ignore:拒絕所有類型的NTP連線
nomodify:用戶端不能使用ntpc與ntpq 兩支程式來修改伺服器的時間參數,但用戶端仍可透過這部主機來進行網路校時的
noquery:用戶端不能夠使用ntpq, ntpc等指令來查詢時間伺服器,等于不提供NTP的網路校時;
notrap:不提供trap這個遠程事件登錄(remote event logging)的功能。
notrust:拒絕沒有認證的用戶端。
nopeer:不與其他同一層的ntp服務器進行時間同步
如果你沒有在parameter的地方加上任何參數的話,這表示該IP或網段不受任何限制。一般來說,我們可以先關閉NTP的使用權限,然后再一個一個的啟用允許登入的網段。
首先我們對于默認的client拒絕所有的操作
1 | restrict default kod nomodify notrap nopeer noquery |
然后允許本機地址一切的操作
最后我們允許局域網內所有client連接到這臺服務器同步時間.但是拒絕讓他們修改服務器上的時間
1 | restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap |
把這三條加入到/etc/ntp.conf中就完成了我們的簡單配置。 NTP還可以用key來做authenticaiton,這里就不詳細介紹了。有興趣的朋友可以參考ntp-keygen這個指令的相關說明。
八、NTP client的設置
做到這里我們已經有了一臺自己的Relay Server。如果我們想讓局域網內的其他client都進行時間同步的話那么我們就都應該照樣再搭建一臺Relay Server,然后把所有的client都指向這兩臺服務器(注意不要把所有的client都指向Internet上的服務器). 只要在client的ntp.conf加上這你自己的服務器就可以了
注:多做一臺NTP的服務器是為了時間更加精準,并不是必需的。一臺也是可以達到網絡校時的效果的。
由于ntpd的server/client之間的時間誤差不允許超過1000秒,因此你得先手動進行時間同步,然后再設定與啟動服務。
ntpdate基本用法
1 2 3 4 5 6 | ntpdate [-dv] [NTP IP/hostname] 選項與參數: -d :進入除錯模式 (debug) ,可以顯示出更多的有效資訊。 -v :有較多訊息的顯示。 |
1 | # ntpdate 192.168.0.215 |
配置客戶端
1 2 3 4 5 6 7 8 | vi /etc/ntp.conf #先注釋掉缺省的NTP服務器,然后增加自己的NTP服務器 #server 0.centos.pool.ntp.org #server 1.centos.pool.ntp.org #server 2.centos.pool.ntp.org server 192.168.1.215 server 192.168.1.106 |
1 2 3 4 5 6 7 | vi /etc/ntp/ntpservers #This file contains a list of ntp servers to show in the system-config-date user interface. #It is not recommended that you modify this file by hand. #注釋掉缺省的NTP服務器或者清空這個文件也可以 #0.centos.pool.ntp.org #1.centos.pool.ntp.org #2.centos.pool.ntp.org |
1 2 3 | vi /etc/ntp/step-tickers #增加自己的NTP服務器 192.168.1.215 |
同樣客戶端也啟動NTP服務,并且設置其在開機后自動運行
1 2 3 | # /etc/init.d/ntpd/start # chkconfig --level 35 ntpd on |
九、ntpdate和ntpd的區別
ntpd不僅僅是時間同步服務器,他還可以做客戶端與標準時間服務器進行同步時間,而且是平滑同步,并非ntpdate立即同步,在生產環境中應慎用ntpdate。
由于ntpdate是立即同步,在獲得一個時間之后,ntpdate使用settimeofday(2)設置系統時間,就會產生時鐘的躍變。
用ntpdate調整時間的方式,會有幾個非常明顯的問題:
第一,這樣做不安全。ntpdate的設置依賴于ntp服務器的安全性,攻擊者可以利用一些軟件設計上的缺陷,拿下ntp服務器并令與其同步的服務器執行某些消耗性的任務。由于ntpdate采用的方式是跳變,跟隨它的服務器無法知道是否發生了異常(時間不一樣的時候,唯一的辦法是以服務器為準)。
第二,這樣做不精確。一旦ntp服務器宕機,跟隨它的服務器也就會無法同步時間。與此不同,ntpd不僅能夠校準計算機的時間,而且能夠校準計算機的時鐘。
第三,這樣做不夠優雅。由于ntpdate是跳變,而不是使時間變快或變慢,依賴時序的程序會出錯。例如,如果ntpdate發現你的時間快了,則可能會經歷兩個相同的時刻,對某些應用而言,這是致命的。
許多應用程序依賴連續的時鐘,取得的時間是線性的。例如數據庫事務,通常會地依賴這樣的事實:時間不會往回跳躍。
我們可以想象以下,假如Oracle服務器的時間是01:00 AM,標準時間是00:30 AM,很明顯Oracle服務器經過他自己的時間00:40 AM。假若此時直接使用ntpdate將服務器與標準時間同步,那么意味著Oracle服務器將在同一天經過兩個00:40 AM,這對于某些計劃任務來說可能是致命的。
因而,唯一一個可以令時間發生跳變的點,是計算機剛剛啟動,但還沒有啟動很多服務的那個時候。其余的時候,理想的做法是使用ntpd來校準時鐘,而不是調整計算機時鐘上的時間。
十、其它一些可用的同步時間服務器
129.7.1.66,210.72.145.44(中國國家授時中心服務器IP地址)
ntp.sjtu.edu.cn(上海交通大學網絡中心NTP服務器地址)
202.120.2.101(上海交通大學網絡中心NTP服務器地址)
time.nist.gov
ntp.fudan.edu.cn(復旦大學網絡中心NTP服務器地址)
timekeeper.isi.edu
subitaneous.cpsc.ucalgary.ca
usno.pa-x.dec.com
time.twc.weather.com
swisstime.ethz.ch
ntp0.fau.de
ntp3.fau.de
time-a.nist.gov
time-b.nist.gov
time-nw.nist.gov
nist1-sj.glassey.com
十一、常見錯誤
1、在ntp客戶端運行ntpdate serverIP,出現no server suitable for synchronization found的錯誤。
1 2 3 | #ntpdate 192.168.1.106 27 May 21:58:03 ntpdate[5891]: no server suitable for synchronization found |
在ntp客戶端用ntpdate –d serverIP查看,發現有“Server dropped: strata too high”的錯誤,并且顯示“stratum 16”。而正常情況下stratum這個值得范圍是“0~15”。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # ntpdate -d 192.168.1.106 27 May 22:04:24 ntpdate[5949]: ntpdate 4.2.2p1@1.1570-o Sat Dec 19 00:56:14 UTC 2009 (1) Looking for host 192.168.1.106 and service ntp host found : 192.168.1.106 transmit(192.168.1.106) receive(192.168.1.106) transmit(192.168.1.106) receive(192.168.1.106) transmit(192.168.1.106) receive(192.168.1.106) transmit(192.168.1.106) receive(192.168.1.106) transmit(192.168.1.106) 192.168.1.106: Server dropped: strata too high server 192.168.1.106, port 123 stratum 16, precision -20, leap 11, trust 000 refid [192.168.1.106], delay 0.02589, dispersion 0.00005 transmitted 4, in filter 4 reference time: 00000000.00000000 Thu, Feb 7 2036 14:28:16.000 originate timestamp: d18a2ecc.72a5beb8 Fri, May 27 2011 22:08:12.447 transmit timestamp: d18a2de8.61c6b053 Fri, May 27 2011 22:04:24.381 filter delay: 0.02628 0.02628 0.02614 0.02589 0.00000 0.00000 0.00000 0.00000 filter offset: 228.0657 228.0656 228.0656 228.0657 0.000000 0.000000 0.000000 0.000000 delay 0.02589, dispersion 0.00005 offset 228.065737 27 May 22:04:24 ntpdate[5949]: no server suitable for synchronization found |
這是因為NTP server還沒有和其自身或者它的server同步上。
以下的定義是讓NTP Server和其自身保持同步,如果在ntp.conf中定義的server都不可用時,將使用local時間作為ntp服務提供給ntp客戶端。
1 2 | 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上使用命令:
1 2 3 4 5 6 7 8 | # watch ntpq -p Every 2.0s: ntpq -p Fri May 27 22:39:39 2011 remote refid st t when poll reach delay offset jitter ============================================================================== 221.7.129.79 80.127.4.179 2 u 59 64 77 58.386 20.698 1.954 *laika.paina.jp 133.243.238.243 2 u - 64 177 115.143 17.613 3.054 |
注意:由于我在前面的配置是把讓本地做為ntp服務的選項關閉了的,所以這里看不見LOCAL(0)項的。如果你沒有關閉會看到類似下面的行
1 | LOCAL(0) LOCAL(0) 10 l 21 64 1 0.000 0.000 0.001 |
這個就是與自身同步的ntp server。
在啟動ntp server服務后,reach這個值這個值就從0開始不斷增加,當增加到17的時候(從0到17是5次的變更,每一次是poll的值的秒數,是64秒*5=320秒的時間)后,再ntpdate看看,應該就可以了。
2、Server dropped: no data
從客戶端執行ntpdate –d時有錯誤信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | transmit(192.168.1.6) transmit(192.168.1.6) transmit(192.168.1.6) transmit(192.168.1.6) transmit(192.168.1.6) 192.168.1.6: Server dropped: no data server 192.168.1.6, port 123 ..... 28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found |
出現這個問題的原因可能有以下兩個:
a)檢查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定義中使用了notrust的話,會導致以上錯誤。
使用以下命令檢查ntp的版本:
下面是來自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選項去掉。
b)檢查ntp server的防火墻。可能是server的防火墻屏蔽了upd 123端口。
可先以下命令暫時關閉iptables
關掉iptables服務后,再嘗試從ntp客戶端的同步,如果成功,證明是防火墻的問題,需要更改iptables的設置。
十二、參考資料
http://www.google.com
http://linux.vbird.org/linux_server/0440ntp.php#server_ntp.conf
http://www.showlife8.com/article.asp?id=121
http://www.linuxsir.org/bbs/lastpostinthread307840.html
http://www.blogjava.net/spray/archive/2008/07/10/213964.html