天天看點

linux下搭建NTP時間伺服器

一、時間與時區配置

格林威治時間(GMT), 它是0時區時間. 但是在計算機中經常看到的是UTC. 它是Coordinated Universal Time的簡寫. UTC已經被認定為是國際标準,是以我們都應該遵守标準隻使用UTC

CST是Chinese Standard Time,也就是我們通常所說的中原標準時間

相關指令:

date   顯示或修改時間日期

hwclock  修改BIOS時間

ntpd   守護程序配置檔案在/etc/ntp.conf

ntpdate  連結同步時間指令

ntpq  NTP查詢指令

ntptime  讀取和設定核心時間變量

ntpstat  顯示網絡時間同步狀态

相關配置檔案:

/etc/ntp.conf     NTP服務配置檔案

/usr/share/zoneinfo    各時區的時間設定檔案

/etc/sysconfig/clock  主要時區設定指定檔案“ZONE=Asia/Shanghai”

/etc/localtime   本地系統時間設定檔案

<code>[root@pjy ~]</code><code># date   #檢視時間</code>

<code>Wed Jun  7 12:36:19 CST 2017</code>

<code>[root@pjy ~]</code><code># zdump Shanghai  #檢視對應時區的時間</code>

<code>Shanghai  Wed Jun  7 04:51:10 2017 Shanghai</code>

<code>[root@pjy ~]</code><code>#ln -sf /usr/share/zoneinfo/posix/Asia/Shanghai /etc/localtime   #設定時區方法1</code>

<code>[root@pjy ~]</code><code># tzselect    #設定時區方法2,需要選擇國家和城市,最後将變量寫入到環境變量</code>

<code>[root@pjy ~]</code><code># echo "TZ=Asia/Shanghai" &gt;&gt;/etc/profile</code>

<code>[root@pjy ~]</code><code># . /etc/profile</code>

<code>[root@pjy ~]</code><code># echo $TZ </code>

<code>Asia</code><code>/Shanghai</code>

<code>[root@pjy zoneinfo]</code><code># cat /etc/sysconfig/clock  #檢視時區配置檔案</code>

<code>ZONE=</code><code>"Asia/Shanghai"</code>

<code>[root@pjy zoneinfo]</code><code># date -R   #檢視系統時區</code>

<code>Wed, 07 Jun 2017 13:44:49 +0800</code>

<code>[root@pjy zoneinfo]</code><code># hwclock --show   #檢視硬體時間</code>

<code>Wed Jun  7 13:48:21 2017  -0.235036 seconds</code>

<code>[root@pjy zoneinfo]</code><code># ntpdate cn.pool.ntp.org|hwclock -w   #同步系統時間和硬體時間</code>

二、配置NTP server

<code>[root@pjy zoneinfo]</code><code># rpm -qa |grep ntp   #檢視是否安裝NTP包,如沒有使用YUM安裝</code>

<code>ntpdate-4.2.6p5-1.el6.centos.x86_64</code>

<code>ntp-4.2.6p5-1.el6.centos.x86_64</code>

<code>fontpackages-filesystem-1.41-1.1.el6.noarch</code>

<code>[root@pjy zoneinfo]</code><code># yum -y install ntp  #安裝NTP服務</code>

配置NTP配置檔案:

<code>[root@pjy ~]</code><code>#vim /etc/ntp.conf</code>

<code>driftfile </code><code>/var/lib/ntp/drift</code>   <code>#存儲時內插補點,以供調整</code>

<code>broadcastdelay 0.008    </code>

<code>restrict default nomodify    </code><code>#定義預設通路規則,不允許修改</code>

<code>restrict 127.0.0.1      </code><code>#定義允許本機全部操作</code>

<code>restrict -6 ::1    </code><code>#IPv6定義</code>

<code>server 202.120.2.101 prefer    </code><code>#優先向上同步伺服器</code>

<code>server cn.pool.ntp.org</code>

<code>server 127.127.1.0      </code><code>#本地時間伺服器</code>

<code>fudge 127.127.1.0 stratum 8  </code><code>#當伺服器與公網伺服器失去連結則使用本地時間給用戶端同步時間</code>

<code>includefile </code><code>/etc/ntp/crypto/pw</code> 

<code>keys </code><code>/etc/ntp/keys</code>

stratum為設定伺服器的層次,0為頂級,如要向外同步時間則不應該設定為0

關于權限設定部分 

權限的設定主要以 restrict 這個參數來設定,主要的文法為: 

restrict IP位址 mask 子網路遮罩 參數 

其中 IP 可以是IP位址,也可以是 default ,default 就是指所有的IP 

參數有以下幾個: 

ignore :關閉所有的 NTP 聯機服務 

nomodify:用戶端不能更改服務端的時間參數,但是用戶端可以通過服務端進行網絡校時。 

notrust :用戶端除非通過認證,否則該用戶端來源将被視為不信任子網 

noquery :不提供用戶端的時間查詢 

注意:如果參數沒有設定,那就表示該 IP (或子網)沒有任何限制!

預設是拒絕所有操作的:

restrict default kod nomodify notrap nopeer noquery

如隻允許10.0.0.0網段的主機同步時間且不允許修改伺服器上的時間:

restrict 10.0.0.0 mask 255.255.255.0 nomodify

啟動服務:

<code>/etc/init</code><code>.d</code><code>/ntpd</code> <code>start</code>

<code>chkconfig --level 35 ntpd on</code>

檢視ntp服務運作狀态:

<code>#watch ntpq -p</code>

<code>Every 2.0s: ntpq -p                                                              Tue Jun  6 22:54:30 2017</code>

<code>     </code><code>remote           refid st t when poll reach   delay   offset  jitter</code>

<code>==============================================================================</code>

<code> </code><code>dns.sjtu.edu.cn .INIT.          16 u    -   64    0    0.000    0.000   0.000</code>

<code> </code><code>biisoni.miuku.n 204.123.2.72     2 u   49   64    1  172.026    9.264   0.000</code>

<code>*LOCAL(0)        .LOCL.           8 l   50   64    3    0.000    0.000   0.000</code>

remote:  它指的就是本地機器所連接配接的遠端NTP伺服器

refid:  它指的是給遠端伺服器(e.g. 193.60.199.75)提供時間同步的伺服器

st:  遠端伺服器的層級别(stratum). 由于NTP是層型結構,有頂端的伺服器,多層的Relay Server再到用戶端. 是以伺服器從高到低級别可以設定為1-16. 為了減緩負荷和網絡堵塞,原則上應該避免直接連接配接到級别為1的伺服器的.

when:  我個人把它了解為一個計時器用來告訴我們還有多久本地機器就需要和遠端伺服器進行一次時間同步

poll:  本地機和遠端伺服器多少時間進行一次同步(機關為秒). 在一開始運作NTP的時候這個poll值會比較小,那樣和伺服器同步的頻率也就增加了,可以盡快調整到正确的時間範圍.之後poll值會逐漸增大,同步的頻率也就會相應減小

reach:  這是一個八進制值,用來測試能否和伺服器連接配接.每成功連接配接一次它的值就會增加

delay:  從本地機發送同步要求到伺服器的round trip time

offset:  這是個最關鍵的值, 它告訴了我們本地機和伺服器之間的時間差别. offset越接近于0,我們就和伺服器的時間越接近

jitter:  這是一個用來做統計的值. 它統計了在特定個連續的連接配接數裡offset的分布情況. 簡單地說這個數值的絕對值越小我們和伺服器的時間就越精确

注意:在remote段,NTP提供的是群集服務,是以每次連結的伺服器是不一樣的

其中的前标記解釋:

* 它告訴我們遠端的伺服器已經被确認為我們的主NTP Server,我們系統的時間将由這台機器所提供

+ 它将作為輔助的NTP Server和帶有*号的伺服器一起為我們提供同步服務. 當*号伺服器不可用時它就可以接管

- 遠端伺服器被clustering algorithm認為是不合格的NTP Server

x 遠端伺服器不可用

檢視ntp更新間隔:

<code>[root@pjy ~]</code><code># ntpstat</code>

<code>synchronised to NTP server (193.228.143.24) at stratum 3  </code><code>#本層次伺服器為3,已向伺服器同步</code>

<code>   </code><code>time</code> <code>correct to within 655 ms    </code><code>#時間校正到相差655MS之内</code>

<code>   </code><code>polling server every 64 s   </code><code>#每64秒向上級NTP輪詢更新一次時間</code>

如需要同步硬體時間也可以在配置檔案中打開:

<code>vim </code><code>/etc/sysconfig/ntpd</code>

<code>SYNC_HWCLOCK=</code><code>yes</code>

三、用戶端時間同步

使用定時同步任務:

<code>[root@zabbix ~]</code><code># cat /var/spool/cron/root</code>

<code>*</code><code>/10</code> <code>* * * * </code><code>/usr/sbin/ntpdate</code> <code>10.0.0.100 |hwclock -w &gt;</code><code>/dev/null</code> <code>2&gt;&amp;11</code>

hwclock -w為将系統時間作為硬體時間

注:讓linux運作ntpdate更新時間時,linux不能開啟NTP服務,否則會提示端口被占用

版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任

本文轉自 80後小菜鳥 51CTO部落格,原文連結:http://blog.51cto.com/zhangxinqi/1933181

繼續閱讀