1. 程式人生 > >ntp時間伺服器 時間同步

ntp時間伺服器 時間同步

ntp時間伺服器 時間同步

2017年10月15日 11:05:30 centos2015 閱讀數:1996 標籤: ntpdtimentpdate 更多

個人分類: Linux

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/zonghua521/article/details/78239212

具體兩種模式

1.伺服器數量比較少,可以直接與時間伺服器同步

2.本地伺服器較多,在本地自建時間同步伺服器,

 

 

時間同步的兩個命令

ntpd :         校準時間,一點點的校準過來時間的,最終把時間慢慢的校正對。
                      ntpd服務可以在修正時間的同時,修正cpu tick
                      ntpd有一個自我保護設定: 如果本機與上源時間相差太大, ntpd不執行
 


ntpdate : 不會考慮其他程式是否會陣痛,直接調整時間,有可能會對程式造成影響

 

ntpdate [-nv] [ IP/hostname]
# ntpdate -u 192.168.0.2
# ntpdate -u time.ntp.org
# ntpdate -u ntp.sjtu.edu.cn >>/var/log/ntp.log 2>&1;hwclock -w  

 

 注意:若不加上-u引數, 會出現以下提示:no server suitable for synchronization found
-u:指定使用無特權的埠傳送資料包,可以越過防火牆與主機同步;

 

 

理想的做法是:
使用ntpd來校準時鐘,而不是調整計算機時鐘上的時間。
在計算機剛剛啟動,但還沒有啟動很多服務的那個時候可以使用ntpdate同步時間

 

 

 一、直接用命令與時間伺服器進行同步

 

 例項:

使用ntpdate 進行同步: 


ntpdate -u x.x.x.x


這裡的x.x.x.x可以是公網時間伺服器IP地址,也可以是下面二中我們自建的ntp伺服器地址。

可以加一個定時計劃,定時同步

1. crontab -e  

2. */5 * * * * /usr/sbin/ntpdate -u x.x.x.x
3. /etc/init.d/crond restart 

 

2.這裡提供幾個公網時間伺服器地址

阿里雲時間伺服器,授時訊號來自GPS、北斗兩套衛星訊號,並配備原子鐘守時,
以下7個域名提供服務,大家可以直接使用。

http://time1.aliyun.com
http://time2.aliyun.com
http://time3.aliyun.com
http://time4.aliyun.com
http://time5.aliyun.com
http://time6.aliyun.com
http://time7.aliyun.com


或者直接訪問這個地址  time.pool.aliyun.com

 

# ntpdate -u time.pool.aliyun.com
13 Nov 10:48:28 ntpdate[26527]: adjust time server 182.92.12.11 offset 0.000458 sec

 

centos也有幾個時間伺服器(最好還是用國內的吧)
0.centos.pool.ntp.org
1.centos.pool.ntp.org
2.centos.pool.ntp.org

 

 

 

 

二、 自建ntpd 時間同步伺服器

NTP通訊協議原理

  1. 首先主機啟動NTP。
  2. 客戶端會向NTP伺服器傳送調整時間的message。
  3. 然後NTP server會送出當前的標準時間給client
  4. client接受來自server的時間後,會根據這個資訊來調整自己的時間。這樣就實現了網路對時。

NTP這個deamon採用了UDP 123埠。

 

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

 

 

1.配置ntp伺服器
安裝  
# yum install ntp

開機自啟動
# chkconfig ntpd on

 

修改配置檔案:

 [[email protected] ~]# less /etc/ntp.conf 
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).

driftfile /var/lib/ntp/drift            系統時間與BIOS事件的偏差記錄

 

配置與本機同步的機器許可權

# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.

restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery     
預設拒絕任何操作  
任何ip4地址、ip6地址  不能修改、不能trap遠端登入、不能嘗試對等、不能校對時間

 

restrict 控制相關許可權。

語法為:  restrict [ 客戶端IP ]  mask  [ IP掩碼 ]  [引數]

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

引數有以下幾個:

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

notrust :拒絕沒有認證的使用者端

noquery :客戶端不能使用ntpq,ntpc來查詢ntp伺服器,等於不提供校對時間服務

notrap :不提供trap遠端登入功能,trap服務是一種遠端時間日誌服務

拒絕為匹配的主機提供模式 6 控制訊息陷阱服務。陷阱服務是 ntpdq 控制訊息協議的子系統,用於遠端事件日誌記錄程式。

nopeer :用於阻止主機嘗試與伺服器對等

kod : 訪問違規時傳送 KoD 包,向不安全的訪問者傳送Kiss-Of-Death報文。

restrict -6 表示IPV6地址的許可權設定。

 

如何控制客戶的範圍

# Permit all access over the loopback interface.  This could   下面的配置 允許執行任何許可權的訪問在本地介面,
# be tightened as well, but to do so would effect some of     這裡最好收緊許可權,但是會影響一些管理功能
# the administrative functions.
restrict 127.0.0.1 
restrict ::1

 

# Hosts on local network are less restricted.                     配置   給本地區域網絡配置小一些的許可權
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

 

本機與公共時間伺服器同步選項

設定NTP主機來源(其中prefer表示優先主機)

# Use public servers from the pool.ntp.org project.   使用公共伺服器從 時間池工程中
# Please consider joining the pool (http://www.pool.ntp.org/join.html).  請考慮加入這個 時間池 專案
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

 

server host  [ key n ] [ version n ] [ prefer ] [ mode n ] [ minpoll n ] [ maxpoll n ] [ iburst ]

其中host是上層NTP伺服器的IP地址或域名,隨後所跟的引數解釋如下所示:

◆ key: 表示所有發往伺服器的報文包含有祕鑰加密的認證資訊,n是32位的整數,表示祕鑰號。

◆ version: 表示發往上層伺服器的報文使用的版本號,n預設是3,可以是1或者2。

◆ prefer: 優先使用。

◆ mode: 指定資料報文mode欄位的值。

◆ minpoll: 指定與查詢該伺服器的最小時間間隔為2的n次方秒,n預設為6,範圍為4-14。

◆ maxpoll:  指定與查詢該伺服器的最大時間間隔為2的n次方秒,n預設為10,範圍為4-14。

◆ iburst: 當初始同步請求時,採用突發方式接連發送8個報文,時間間隔為2秒。

 

#broadcast 192.168.1.255 autokey        # broadcast server
#broadcastclient                        # broadcast client
#broadcast 224.0.1.1 autokey            # multicast server
#multicastclient 224.0.1.1              # multicast client
#manycastserver 239.255.254.254         # manycast server
#manycastclient 239.255.254.254 autokey # manycast client

當外部時間不可用時,以本地(本機)時間作為服務時間
本地時間以 127.127.1.0 表示  級別為10
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
#server 127.127.1.0     # local clock
#fudge  127.127.1.0 stratum 10

下面是一些加密認證的配置
# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8

 
# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats

 

 

一個簡單例項如下:

restrict default kod nomodify notrap nopeer noquery

拒絕所有ip4 的請求

# restrict -6 default kod nomodify notrap nopeer noquery  #針對ipv6設定

 

# 允許本地所有操作

restrict 127.0.0.1

#restrict -6 ::1

 

# 允許的區域網絡段或單獨ip 某些許可權

restrict 10.0.0.0 mask 255.0.0.0 nomodify motrap

restrict 192.168.0.0 mask 255.255.255.0 nomodify motrap

restrict 192.168.1.123 mask 255.255.255.255 nomodify motrap

 

# 使用上層的internet ntp伺服器

restrict cn.pool.ntp.org

restrict 1.cn.poo.ntp.org

restrict 0.asia.pool.ntp.org

restrict 3.asia.pool.ntp.org

server cn.pool.ntp.org prefer

server 1.cn.poo.ntp.org

server 0.asia.pool.ntp.org

server 3.asia.pool.ntp.org

 

# 如果無法與上層ntp server通訊以本地時間為標準時間

server   127.127.1.0    # local clock

fudge    127.127.1.0 stratum 10

 

# 計算本ntp server 與上層ntpserver的頻率誤差

driftfile /var/lib/ntp/drift

 

# Key file containing the keys and key identifiers used when operating

# with symmetric key cryptography.

keys /etc/ntp/keys

 

#日誌檔案

logfile /var/log/ntp.log

 

 

配置/etc/sysconfig/ntpd檔案

ntp服務,預設只會同步系統時間。如果想要讓ntp同時同步硬體時間,可以設定/etc/sysconfig/ntpd檔案,在/etc/sysconfig/ntpd檔案中,新增 SYNC_HWCLOCK=yes 這樣,就可以讓硬體時間與系統時間一起同步。

#允許BIOS與系統時間同步,也可以通過hwclock -w 命令

SYNC_HWCLOCK=yes

 

啟動ntpd 服務
# service ntpd start

 

 

# 檢視ntp的埠,應該看到123埠

#netstat -unlnp

 

 

 

 

# 檢視ntp伺服器有無和上層連通

#ntpstat

 

synchronised to NTP server () at stratum 2

time correct to within 74 ms

polling server every 128 s

# 注意:此命令出現上述synchronised結果比較慢,我的用了大概5分鐘。


剛啟動的時候,一般是:

 

# ntpstat 

unsynchronised

  time server re-starting

   polling server every 64 s

連線並同步後:

synchronised to NTP server (202.112.10.36) at stratum 3 

   time correct to within 275 ms

   polling server every 256 s

 

 

ntptrace -n 127.0.0.1

 

127.0.0.1: stratum 3, offset -0.001095, synch distance 0.532610

116.193.83.174: timed out, nothing received

 

 


檢視ntp伺服器與上層ntp伺服器的狀態:ntpq

 

#ntpq -p

 

# 其中:

 

# remote - 本機和上層ntp的ip或主機名,“+”有連線可做候選,“*”正在使用的

 

# refid - 更上一層的ntp地址

 

# st - stratum的 級別

 

# when   - 多少秒前曾經同步過時間

# poll   - 下次更新在多少秒後

# reach  - 已經向上層ntp伺服器要求更新的次數

# delay  - 網路延遲

# offset - 時間補償

# jitter - 系統時間與bios時間差

 

 

# ntpq -p
     remote           refid                  st t when poll reach   delay   offset  jitter
==============================================================================
*time4.aliyun.co 10.137.38.86     2 u  111  128  377   27.480   -5.995   1.852

 

 

 

2.配置NTP客戶端:
在所有客戶端上vim /etc/ntp.conf,新增:
server x.x.x.x 

x.x.x.x 為上面配置的ntp伺服器地址


注意:當server與client之間的時間誤差過大時(可能是1000秒),處於對修改時間可能對系統和應用帶來不可預知的問題,NTP將停止時間同步!
所以如果發現NTP啟動之後時間並不進行同步時,應該考慮到可能是時間差過大引起的,
此時需要先手動進行時間同步 ntpdate !