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:表示加速時間同步