Linux NTP工具的基本使用

背對背依靠發表於2022-12-13

NTP 時間同步

NTP(Network Time Protocol)協議,網路時間協議。利用ntp協議可以實現網路中的計算機時間同步。
實現NTP協議的工具:
  • ntpdate:只能同步一次時間

  • ntp:持久同步時間

  • chrony:持久同步時間,精度比上面的ntp更好,速度更快。

使用ntpdate同步本機時間的方法:

格式:ntpdate host 

範例:使用ntpdate同步時間

root@ubuntu1804:~# apt install ntpdate

root@ubuntu1804:~# date 
Tue Dec 13 15:12:07 CST 2022

root@ubuntu1804:~# date -d '-1 day'
Mon Dec 12 15:12:22 CST 2022

root@ubuntu1804:~# ntpdate ntp.aliyun.com
13 Dec 15:12:36 ntpdate[15040]: adjust time server 203.107.6.88 offset 0.002588 sec

root@ubuntu1804:~# date 
Tue Dec 13 15:12:40 CST 2022  #同步後的時間

範例:使用ntp實現本機時間的同步:

#安裝ntp工具
root@ubuntu1804:~# sudo apt install apt -y

#將本機時間設定為兩天前,便於後面測試
root@ubuntu1804:~# date -d '-2 day'
Sun Dec 11 15:15:51 CST 2022

#修改配置檔案
root@ubuntu1804:~# vim /etc/ntp.conf 
  pool ntp.aliyun.com  #指定時間伺服器是阿里雲的時間伺服器

#重啟服務
root@ubuntu1804:~# systemctl restart ntp.service

#檢視同步情況
root@ubuntu1804:~# date 
Tue Dec 13 15:16:56 CST 2022


#檢視同步的過程
root@ubuntu1804:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp.aliyun.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
 203.107.6.88    10.137.55.181    2 u   49   64    1   49.907   11.370   0.000
 91.189.91.157 ( 194.58.200.20    2 u   47   64    1  249.332    6.425   0.000
 185.125.190.57  167.28.20.25     2 u   58   64    1  290.552   21.957   0.000
 185.125.190.58  167.28.20.25     2 u   60   64    1  284.391   27.227   0.000
 pugot.canonical 17.253.34.253    2 u   60   64    1  275.512   31.489   0.000

#引數說明
remote: 表示NTP主機的IP或者是主機名,最左邊的
refid:  表示參考的上一層NTP主機的地址;
st:     表示的含義是startnum,一般範圍是從0-->15;
when:   表示幾秒前做過時間同步化更新操作;
poll:   表示下一次更新在幾秒鐘之後;
reach:  表示已經向上一層伺服器要求更新的次數;
delay:  表示資料在傳輸過程中延遲的時間;
offset: 是源時鐘與本地時鐘的時間差(毫秒)。
jitter: Linux系統時間和BIOS硬體時間的差異;

範例:使用chrony工具實現本機的時間同步:

chrony會監聽udp的兩個埠,如果是作為客戶端,就監聽udp的323埠,如果是服務端就監聽123埠。

# 安裝服務
root@ubuntu1804:~# apt install chrony

#修改配置檔案
root@ubuntu1804:~# vim /etc/chrony/chrony.conf
pool ntp.aliyun.com

#將時間設定錯,便於測試
root@ubuntu1804:~# date -s '20211010'
Sun Oct 10 00:00:00 CST 2021

#啟動服務
root@ubuntu1804:~# systemctl start chrony

#檢視有多少個ntp源線上:
root@ubuntu1804:~# chronyc activity 
200 OK
5 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address

#顯示本機時間和遠端伺服器同步的情況
root@ubuntu1804:~# chronyc sources
210 Number of sources = 5
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^+ prod-ntp-3.ntp1.ps5.cano>     2   6    17    16  -4318us[-2258us] +/-  136ms
^- pugot.canonical.com           2   6    27    12  -3890us[-3890us] +/-  163ms
^+ alphyn.canonical.com          2   6    17    16    +18ms[  +20ms] +/-  176ms
^* prod-ntp-5.ntp4.ps5.cano>     2   6    17    15  -6154us[-4094us] +/-  138ms
^? 203.107.6.88                  2   6     1    23    +13ms[-10312h] +/-   33ms
root@ubuntu1804:~# date 
Tue Dec 13 15:36:54 CST 2022

#等待幾分鐘,時間恢復正常
root@ubuntu1804:~# date 
Tue Dec 13 15:36:54 CST 2022

使用ntp搭建私有的時間伺服器:

透過將一臺主機搭建為時間伺服器,其它區域網內的主機可以和本機的時間進行同步。

範例:使用ntp實現時間伺服器:

#只需要再ntp的配置檔案中指定允許誰和本機進行同步就行。

#修改配置檔案
root@ubuntu1804:~# vim /etc/ntp.conf 
	server 127.0.0.1  #以本機的時間為準
	restrict default  #表示允許所有主機與本機進行ntp同步
	# restrict 10.0.0.0 mask 255.255.255.0  #允許這個網段的主機與本機進行ntp同步

#啟動服務
root@ubuntu1804:~# systemctl restart ntp


# 客戶機測試;
root@ubuntu1804:/etc/nginx/conf.d# ntpdate 10.0.0.44
13 Dec 15:57:09 ntpdate[3364]: adjust time server 10.0.0.44 offset 0.028476 sec

使用chrony搭建時間伺服器:

# chrony預設是作為客戶端使用的,要想使用服務端的功能,就需要開啟123這個埠
# 將chrony配置為服務端的方法:allow指令

# allow 0.0.0.0/0 表示的是任何主機都可以和本機進行時間的同步
#安裝chrony
root@ubuntu1804:~# apt install chrony -y

#修改改配置檔案
root@ubuntu1804:~# vim /etc/chrony/chrony.conf
    server 127.0.0.1  #以本地的時間為準
    local stratum 10  #網際網路無法連線,仍然可提供時間同步服務 # 將當前伺服器設定為第十層(把自己設定為內部伺服器的意思)
    allow 0.0.0.0/0   #指定允許同步的網段
 
#重啟服務
root@ubuntu1804:~# systemctl restart chronyd

#修改一個本地時間
root@ubuntu1804:~# date -s '20221010'
Mon Oct 10 00:00:00 CST 2022

#客戶端測試
root@ubuntu1804:/etc/nginx/conf.d# ntpdate 10.0.0.44
10 Oct 00:00:18 ntpdate[3410]: step time server 10.0.0.44 offset -5588217.989475 sec

#時間同步為和服務端一樣了
root@ubuntu1804:/etc/nginx/conf.d# date 
Tue Dec 13 16:17:22 CST 2022

說明:

(1)ntp和chrony是客戶端和服務端一體的工具,透過不同的設定配置為客戶端或者服務端。

(2)server和pool指定的區別:

server   #用於指定單個NTP伺服器,iburst:讓同步時間的時候更快,開啟多個並行任務來進行同步
 
pool    #用於指定NTP伺服器池而不是單個NTP伺服器。池名稱應解析為隨時間可能會變化的多個地址

(3)配置為客戶端時,指定時間伺服器的相關引數;

server 192.168.7.49 prefer iburst   # prefer表示如果指定了多個時間伺服器的情況下優先用這個 iburst:表示加速時間同步

https://zhuanlan.zhihu.com/p/451555297

相關文章