NTP時間服務搭建、使用及常見問題

NTP相關的文章到處都是,但是實在是強迫症發作,看不得亂七八糟邏輯混亂的技術內容。所以整理一個關於NTP服務器的搭建、使用和常見問題的信息彙總。這篇還是一樣主要從實務角度出發描述NTP時間服務,原理不會講的太多,目的還是一樣,照着做,就能完成這項工作,不靈可以mail我。
1 NTP服務器的搭建
1.1 操作系統安裝
如果想不過腦的使用本文中的配置文件,就裝個一模一樣的操作系統吧,RHEL 4.8 32bit,使用基於VMware的虛擬機資源池實現中的自動工具,只是幾分鐘的事兒。如果你的安裝文件不包括ntp服務,要記得裝一個。
[root@ntp ~]# cat /etc/redhat-release
Red Hat Enterprise Linux AS release 4 (Nahant Update 8)
[root@ntp ~]# uname -a
Linux ntp.citicsinfo.com 2.6.9-89.ELsmp #1 SMP Mon Apr 20 10:34:33 EDT 2009 i686 i686 i386 GNU/Linux
[root@ntp ~]# rpm -qa | grep -i ntp-
ntp-4.2.0.a.20040617-8.el4_7.1
[root@ntp ~]# service ntpd status
ntpd (pid 8960) 正在運行...
1.2 編輯NTP配置文件
編輯/etc/ntp.conf連接,使用國家授時中心NTP服務(210.72.145.44)、北京郵電大學NTP服務(s1a.time.edu.cn)和上海交通大學NTP服務(ntp.sjtu.edu.cn)作爲外部事件源,一般情況下國家授時中心這個是連不通的,所以連的都是第二順位的北京郵電大學NTP服務。
[root@ntp ~]# cat /etc/ntp.conf
restrict default nomodify notrap noquery
restrict 127.0.0.1
#在這裏給出你希望能夠訪問此時間服務的服務器的子網機器掩碼
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap
restrict 172.0.0.0 mask 255.0.0.0 nomodify notrap
#國家授時中心NTP服務
server 210.72.145.44 prefer
restrict 210.72.145.44 mask 255.255.255.255 nomodify notrap noquery
#北京郵電大學NTP服務
server s1a.time.edu.cn
restrict s1a.time.edu.cn mask 255.255.255.255 nomodify notrap noquery
#上海交通大學NTP服務
server ntp.sjtu.edu.cn
restrict ntp.sjtu.edu.cn mask 255.255.255.255 nomodify notrap noquery
fudge   127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay  0.008
keys            /etc/ntp/keys
restrict 0.rhel.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
restrict 1.rhel.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
restrict 2.rhel.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
#把日誌和統計數據配置上,以便trouble shooting
statsdir /var/log/ntp/
logfile /var/log/ntp/ntp.log
1.3 重啓NTP服務和查看運行狀況
改了配置文件,肯定要重啓一下daemon的,重啓完了查看一下運行狀態
[root@ntp ~]# service ntpd restart

上述輸出含義如下:
  • 第一列:*表示響應的NTP服務器和最精確的服務器;+表示響應請求的NTP服務器;空格表示沒有響應的NTP服務器
  • remote列:響應請求的NTP服務器的名稱
  • refid列:此NTP服務器使用的更高一級服務器的名稱
  • st列:正在響應請求的NTP服務器的級別
  • when列:上一次成功請求之後到現在的秒數
  • poll列:本地和遠程服務器多少時間進行一次同步,單位秒, 在一開始運行NTP的時候這個poll值會比較小,服務器同步的頻率大,可以儘快調整到正確的時間範圍,之後poll值會逐漸增大,同步的頻率也就會相應減小
  • reach列:用來測試能否和服務器連接,是一個八進制值,每成功連接一次它的值就會增加
  • delay列:從本地機發送同步要求到ntp服務器的往返時間
  • offset列:主機通過NTP時鐘同步與所同步時間源的時間偏移量,單位爲毫秒,offset越接近於0,主機和ntp服務器的時間越接近
  • jitter列:統計了在特定個連續的連接數裏offset的分佈情況。簡單地說這個數值的絕對值越小,主機的時間就越精確
2 NTP服務設置的使用
2.1 Linux操作系統
Linux的NTP設置在圖形界面的日期/時間屬性裏,不同的Linux可能稍有不同,詳細設置見下圖:

2.2 Windows操作系統
Windows的NTP設置在圖形界面的日期/時間屬性裏,不同的Windows可能稍有不同,詳細配置見下圖:

3 常見問題
3.1 NTP服務設置失敗問題排查

  • 網絡端口未開放:NTP服務器需要對所有NTP客戶端開放UDP123端口
  • 時間相差過多:如果系統當前時間與NTP服務器的時間(即正常北京時間,可用ntpdate -q ntp服務域名或IP查詢)相差過多,需先調整到較接近的時間,NTP協議才能生效
  • 無法解析域名:可修正NDS配置或使用IP進行配置
3.2 Linux/Unix無法登陸圖形界面,如何通過shell設置NTP服務
如果Linux/Unix沒有圖形界面,可採用下面兩種方法的任意一種設置時間服務:
1) 修改配置文件/etc/ntp.conf
首先手動同步時間:
#ntpdate ntp服務域名或IP
編輯NTP配置文件:
#vi /etc/ntp.conf
添加如下兩行:
restrict ntp服務域名或IP
server ntp服務域名或IP
重啓NTP服務:
#service ntpd start
將NTP服務配置爲開機自啓動:
#chkconfig ntpd on
2) 使用crontab進行定時同步
#crontab -e
添加類似下面的內容:
10 5 * * * root (/usr/sbin/ntpdate ntp服務域名或IP && /sbin/hwclock -w) &> /dev/null
3.3 NTP同步週期
  • Win2k3和Win2k8默認的時間同步間隔爲7天,Win7和WinXP默認的時間同步間隔爲1個小時,可修改如下註冊表項進行修改,單位爲秒:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpClient\SpecialPollInterval
  • 如果使用圖形界面或ntp.conf配置Linux系統的NTP客戶端,則默認同步週期初始爲64秒,隨着時間逐步穩定後,同步週期將穩定於1024秒。
  • 如果使用crontab進行定時同步,同步週期爲crontab執行週期。
3.4 Linux/Unix重啓後系統時間不同步
操作系統在重啓後,會使用系統硬件時鐘,而NTP是不會自動更新硬件時鐘的,如需進行更新,需在同步ntp時間後,再執行hwclock -w將操作系統時鐘寫入硬件時鐘。
3.5 Windows沒有Internet時間選項
如果Windows服務器加入了域,則時間日期屬性中將沒有Internet時間(因爲時間將自動與域服務器同步),此時,如仍想使用時間服務,可使用NTPClock或類似工具:

3.6 系統時間修改方式
當系統時鐘超過了NTP服務時鐘(ntpdate -q ntp.citicsinfo.com)時,對系統時鐘進行調整會導致數據庫或其他存在磁盤IO的應用出現問題。爲避免此類問題,在此情況下,需停止全部系統服務後,將系統時鐘手動調回ntp服務時間,再等待足夠的時間(系統時鐘運行到調整前的時間)後啓動系統服務。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章