1,ubuntu自帶的校時方法
以前Linux時間同步基本是使用 ntpdate 和 ntpd 這兩個工具實現的,但是這兩個工具已經很古老了,好像不不再使用了,注意哈,這倆工具是互斥的。
目前的Linux ( ubuntu,debian,openSUSE) 等使用 systemd-timesyncd 服務進行校時。
1) systemd-timesyncd是個啥?
systemd-timesyncd是斷點式更新時間,也就是時間不同立即更新,這樣會對某些服務產生影響,所以在生產環境盡量不要用,在桌面環境或者是系統剛開機時來進行時間同步還是很好的。timesyncd 替代了 ntpd 的客戶端的部分。默認情況下 timesyncd 會定期檢測並同步時間。它還會在本地存儲更新的時間,以便在系統重啟時做時間單步調整。如果是虛擬機環境,應該把與主機時間同步功能關閉后在啟用systemd-timesyncd,否則可能會有問題,systemd-timesyncd只能作為客戶端,不能作為NTP服務器,要成為NTP服務器,可以安裝chrony、ntpd,或者open-ntp。推薦chrony。順帶說一句,ubuntu里的命令timedatectl設置的就是這個服務里的參數:
#輸入timedatectl,得到輸出 Local time: Tue 2020-05-05 10:38:53 CST ##本地時間 Universal time: Tue 2020-05-05 02:38:53 UTC ##協調世界時 RTC time: Tue 2020-05-05 02:38:51 ##硬件時間 Time zone: Asia/Shanghai (CST, +0800) ##時區,我這里為東8區 Network time on: yes ##NTP時間同步是否開啟,yes表示是 NTP synchronized: yes ##如果和遠程NTP服務器成功同步,顯示為yes RTC in local TZ: no ##no表示硬件時鍾設置為協調世界時(UTC),yes表示硬件時鍾設置為本地時間
你可以這樣查看systemd-timesyncd服務的狀態(注意,開啟重啟關閉不要使用sudo service這個系列,這會造成問題!!!):
sudo service systemd-timesyncd status
你可以看到這樣的數據:
● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-01-29 00:00:38 CST; 15h ago Docs: man:systemd-timesyncd.service(8) Main PID: 761 (systemd-timesyn) Status: "Synchronized to time server 91.189.89.198:123 (ntp.ubuntu.com)." Tasks: 2 (limit: 4915) CGroup: /system.slice/systemd-timesyncd.service └─761 /lib/systemd/systemd-timesyncd Jan 29 00:00:38 center-OptiPlex-7060 systemd[1]: Starting Network Time Synchronization... Jan 29 00:00:38 center-OptiPlex-7060 systemd[1]: Started Network Time Synchronization. Jan 29 00:01:18 center-OptiPlex-7060 systemd-timesyncd[761]: Timed out waiting for reply from 91.189.94. Jan 29 00:01:19 center-OptiPlex-7060 systemd-timesyncd[761]: Synchronized to time server 91.189.89.198:1
好吧,被我發現了,我的確是在00:00:01秒的時候重啟了機器,大約00:00:21秒的時候重啟完畢,很明顯,還沒重啟完的時候它就自動運行了校時服務,校時服務器是 91.189.89.198:123,嘗試訪問這個網址但是打不開,機智的我嘗試nmap這個網址的這個端口,嘿嘿嘿,被我發現了端倪哦。
nmap 91.189.89.198 -p 123 Starting Nmap 7.60 ( https://nmap.org ) at 2021-01-29 15:36 CST Nmap scan report for chilipepper.canonical.com (91.189.89.198) Host is up (0.0015s latency). PORT STATE SERVICE 123/tcp filtered ntp #端口的服務里備注了,這就是個ntp的servce,所以,如果我們自己搭建ntp服務器,起碼得搭建一個類似這樣的哦。
那么如何重啟這個systemd-timesyncd服務呢?請用這句命令
systemctl restart systemd-timesyncd.service
禁用systemd-timesyncd服務
systemctl disable systemd-timesyncd
2),修改systemd-timesyncd的配置也是可以的
配置文件:/etc/systemd/timesyncd.conf
里面的內容和具體含義是什么?
[Time] #NTP= #FallbackNTP=ntp.ubuntu.com #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048 #NTP:一個空格分隔的NTP服務器列表, 可以使用主機名,也可以使用IP地址。在運行時, 此處設置的列表將與 systemd-networkd.service中已配置的NTP服務器列表合並在一起。 systemd-timesyncd 將會依次嘗試列表中的每個NTP服務器, 直到同步成功為止。 #FallbackNTP:一個空格分隔的NTP服務器列表,用作備用NTP服務器。 可以使用主機名,也可以使用IP地址。 如果所有已配置在 systemd-networkd.service中的NTP服務器以及上述 NTP= 中設置的NTP服務器都嘗試失敗, 那么將嘗試此處設置的備用NTP服務器。 #RootDistanceMaxSec:最大可接受的"root distance"秒數(最大誤差)。 默認值為 5 秒。 #剩下的倆參數:NTP消息的 最小/最大輪詢間隔秒數。 PollIntervalMinSec= 必須不小於 16 秒。 PollIntervalMaxSec= 必須大於 PollIntervalMinSec= 。 PollIntervalMinSec= 默認為 32 秒, PollIntervalMaxSec= 默認為 2048 秒。
本人如何配置:
#以下配置證明是可以的,經過測試,好像不需要指明123端口就能校時 [Time] NTP=114.118.7.163 #FallbackNTP=ntp.ubuntu.com #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048 #以下配置貌似也可 [Time] NTP=ntp.ntsc.ac.cn #FallbackNTP=ntp.ubuntu.com #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048 #ps:ntp.ntsc.ac.cn是一個國內的校時服務器哈。那么問題來了,如果電腦不設置dns,能不能解析域名呢?經過本人測試,確實有問題!
建議,首先sudo vim /etc/systemd/timesyncd.conf,設置好你想要的校時服務以后,執行systemctl restart systemd-timesyncd.service重啟這個服務,然后我們來查看狀態:sudo service systemd-timesyncd status,如果你能在status這一行里看到你剛剛設置的那個ntp地址,那么基本你的設置是正確的,如果你想確保你的設置正確無誤,建議改完配置以后重啟電腦,然后再查看sudo service systemd-timesyncd status,成功的大約這樣:
● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-01-29 16:30:35 CST; 4min 12s ago Docs: man:systemd-timesyncd.service(8) Main PID: 802 (systemd-timesyn) Status: "Synchronized to time server 114.118.7.163:123 (ntp.ntsc.ac.cn)." Tasks: 2 (limit: 4915) CGroup: /system.slice/systemd-timesyncd.service └─802 /lib/systemd/systemd-timesyncd Jan 29 16:30:34 center-OptiPlex-7060 systemd[1]: Starting Network Time Synchronization... Jan 29 16:30:35 center-OptiPlex-7060 systemd[1]: Started Network Time Synchronization. Jan 29 16:31:07 center-OptiPlex-7060 systemd-timesyncd[802]: Synchronized to time server 114.118.7.163:123 (ntp.ntsc.ac.cn). #尤其注意一下status那一行,那一行是不是你設置的ntp服務器地址
不成功的大約這樣:
● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: inactive (dead) Docs: man:systemd-timesyncd.service(8)
#具體原因是因為我安了個apt-get了一個ntp,開機以后ntp服務把systemd-timesyncd服務給擠飛了,所以軟件這個東西,最好別亂裝
不成功大約還這樣:
● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-01-29 16:52:22 CST; 10s ago Docs: man:systemd-timesyncd.service(8) Main PID: 1641 (systemd-timesyn) Status: "Idle." Tasks: 2 (limit: 4915) CGroup: /system.slice/systemd-timesyncd.service └─1641 /lib/systemd/systemd-timesyncd Jan 29 16:52:22 center-OptiPlex-7060 systemd[1]: Starting Network Time Synchronization... Jan 29 16:52:22 center-OptiPlex-7060 systemd[1]: Started Network Time Synchronization. #注意,status顯示的是idle,閑。那我們繼續查看timedatectl狀態吧? Local time: Fri 2021-01-29 16:52:47 CST Universal time: Fri 2021-01-29 08:52:47 UTC RTC time: Fri 2021-01-29 08:52:47 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: no systemd-timesyncd.service active: yes RTC in local TZ: no #注意看 System clock synchronized,表示ntp沒有授時
所以,如果你沒有設置dns,那么請你寫授時機器的ip地址,不要寫域名,不要寫域名,不要寫域名!!
2,搭建ntp服務器
環境:
ntp局域網服務器:192.168.3.155
ntp局域網用戶:192.168.3.142
安裝
sudo apt-get install ntp
找幾個ntp服務器地址用一下:
我國授時中心服務器ip:210.72.145.44
國內校時服務器ntp.ntsc.ac.cn:114.118.7.163
ps:嘗試掃描了一下上面的這些ip地址,123端口都是有的,但是上海交通和深圳阿里雲的123端口都顯示closed狀態,其他的都是filtered,原因不知,但是我還是不用了吧。
首先需要選一下時區:
date -R #查看當前時間 tzselect #系統會提示你選擇你所在的洲,國,根據實際情況選擇完成以后確認即可,不需要圖形界面 方法1,直接復制: sudo mv /etc/localtime /etc/localtime_old sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 方法2,建立軟連接 sudo rm localtime sudo mv localtime_old localtime sudo ln -snf /usr/share/zoneinfo/Asia/Shanghai localtime #先把我剛剛copy過來的localtime刪掉,然后把原本的localtime(現在叫localtime_old)的名字改回來,最后把軟連接鏈接到上海所在的時區
然后我們需要配置ntp.conf文件
自帶的ntp.conf是這樣的,為了防止有問題,我們復制一份備用:
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help driftfile /var/lib/ntp/ntp.drift # Leap seconds definition provided by tzdata leapfile /usr/share/zoneinfo/leap-seconds.list # Enable this if you want statistics to be logged. #statsdir /var/log/ntpstats/ statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable # Specify one or more NTP servers. # Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board # on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for # more information. pool 0.ubuntu.pool.ntp.org iburst pool 1.ubuntu.pool.ntp.org iburst pool 2.ubuntu.pool.ntp.org iburst pool 3.ubuntu.pool.ntp.org iburst # Use Ubuntu's ntp server as a fallback. pool ntp.ubuntu.com # Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for # details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions> # might also be helpful. # # Note that "restrict" applies to both servers and clients, so a configuration # that might be intended to block requests from certain clients could also end # up blocking replies from your own upstream servers. # By default, exchange time with everybody, but don't allow configuration. restrict -4 default kod notrap nomodify nopeer noquery limited restrict -6 default kod notrap nomodify nopeer noquery limited # Local users may interrogate the ntp server more closely. restrict 127.0.0.1 restrict ::1 # Needed for adding pool entries restrict source notrap nomodify noquery # Clients from this (example!) subnet have unlimited access, but only if # cryptographically authenticated. #restrict 192.168.123.0 mask 255.255.255.0 notrust # If you want to provide time to your local subnet, change the next line. # (Again, the address is an example only.) #broadcast 192.168.123.255 # If you want to listen to time broadcasts on your local subnet, de-comment the # next lines. Please do this only if you trust everybody on the network! #disable auth #broadcastclient #Changes recquired to use pps synchonisation as explained in documentation: #http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3918 #server 127.127.8.1 mode 135 prefer # Meinberg GPS167 with PPS #fudge 127.127.8.1 time1 0.0042 # relative to PPS for my hardware #server 127.127.22.1 # ATOM(PPS) #fudge 127.127.22.1 flag3 1 # enable PPS API
架設自己的ntp服務器:
driftfile /var/lib/ntp/ntp.drift leapfile /usr/share/zoneinfo/leap-seconds.list #tzdata提供的跳躍秒定義,表示不知這是啥 #如下這幾行不知道是什么意思,沒動 statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable restrict -4 default kod notrap nomodify nopeer noquery limited restrict -6 default kod notrap nomodify nopeer noquery limited #拒絕ipv4和ipv6的用戶:ignore表示拒絕所有ntp鏈接;nomodify客戶端不可以修改服務器時間參數,但是可以查詢。noquery,不提供ntp網絡校時 ;notrust,沒有認證的都拒絕。notrap:不提供trap這個遠程登錄功能,具體啥功能,不知。 # Local users may interrogate the ntp server more closely. # restrict 210.72.145.44 #daqing 放行兩個ip進入本ntp服務器,也就是我的上層服務器,不放行好像也可以的 # restrict 114.118.7.163 restrict 127.0.0.1 #daqing 放行本機來源 restrict ::1 restrict 192.168.3.0 mask 255.255.255.0 nomodify #daqing 放行局域網來源的校時 # Needed for adding pool entries,具體不知,猜測是其他ip的權限問題 restrict source notrap nomodify noquery #設置上層服務器,prefer優先 server 210.72.145.44 prefer server 114.118.7.163
server 127.127.1.0 #沒有外部服務器的時候用本機時間
fudge 127.127.1.0 stratum 10 #stratum是根據上層的server而設定的
server 0.asia.pool.ntp.org #設置一堆ntp服務池,為啥要有ntp服務池呢,個人發現哈,ntp上層服務器設置比較少的時候,下層的ntp用戶校時會出現錯誤,提示timeout,可能ntp校時沒那么簡單,並不是只要簡單的post和get就能解決的,所以ntp服務器也蠻忙的
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org
還有個注意的事情,是有關這個的,如下所示,這是ubuntu默認的ntp服務池,我們可以不動它
pool 0.ubuntu.pool.ntp.org iburst pool 1.ubuntu.pool.ntp.org iburst pool 2.ubuntu.pool.ntp.org iburst pool 3.ubuntu.pool.ntp.org iburst
經過本人初步查看,寫了這個的就是寫了ntp服務連接池,就近選擇幾個ntp服務器自己去校時,校時服務器的ip有可能變哈,好處是連接池里有一堆服務器可用,很健壯,不好的地方是,這不是你想要的那一個。
當然了,我們也可以選擇不適用默認的校時服務器,我們用自己的,那么請訪問:這里,進去以后根據自己的需要選擇,亞洲或者亞洲-中國。
大約這樣:
按照提示把重點copy到ntp.conf中就可以了。順帶提一嘴哈,個人懷疑上面這種網址而非ip的形式,需要配置電腦的dns,不然很可能解析不了網址。
設置完成以后我們就可以啟動ntp服務了
sudo service ntp start
1)檢查:123端口
sudo netstat -tlunp |grep ntp #得到: udp 0 0 192.168.3.155:123 0.0.0.0:* 9589/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 9589/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 9589/ntpd udp6 0 0 fe80::3730:c076:650:123 :::* 9589/ntpd udp6 0 0 ::1:123 :::* 9589/ntpd udp6 0 0 :::123 :::* 9589/ntpd
2)檢查校時情況
ntpq -p #你將會得到 remote refid st t when poll reach delay offset jitter ============================================================================== 210.72.145.44 .INIT. 16 u - 1024 0 0.000 0.000 0.000 -114.118.7.163 123.139.33.3 2 u 123 128 377 27.024 5.601 1.697 dns1.synet.edu. .INIT. 16 u - 1024 0 0.000 0.000 0.000 *time.neu.edu.cn .PTP. 1 u 47 128 377 57.993 -2.018 4.137 42.96.167.209 .INIT. 16 u - 1024 0 0.000 0.000 0.000 LOCAL(0) .LOCL. 10 l 65m 64 0 0.000 0.000 0.000 +time.cloudflare 10.21.8.19 3 u 43 128 377 229.535 0.600 3.596 +ntp.xtom.com.hk 223.255.185.3 3 u 103 128 177 96.228 -0.297 2.505 -ntp.hkg10.hk.le 130.133.1.10 3 u 97 128 277 194.752 -15.462 1.344 -time.cloudflare 10.71.14.51 3 u 34 128 377 209.012 4.036 2.319
注意哈,如果你剛剛開機或者剛剛重啟了ntp,那么你有可能要等十多分鍾才能連上某台校時服務器。具體原因不知
來,解釋一下:
服務器前面的參數
* : 它告訴我們遠端的服務器已經被確認為我們的主NTP Server,我們系統的時間將由這台機器所提供
+ : 它將作為輔助的NTP Server和帶有*號的服務器一起為我們提供同步服務.當*號服務器不可用時它就可以接管
- : 遠程服務器被clustering algorithm認為是不合格的NTP Server
x : 遠程服務器不可用
列含義:
remote : 本地機器所連接的遠程NTP服務器,有的是ip有的是網址,都是正常的
refid : 指的是參考的上一層NTP主機的地址
st : 遠程服務器的級別。由於NTP是層型結構,有頂端的服務器,多層的Relay Server再到客戶端.所以服務器從高到低級別可以設定為1-16.為了減緩負荷和網絡堵塞,原則上應該避免直接連接到級別為1的服務器的
when : 用做計時,用來告訴我們還有多久本地機器就需要和遠程服務器進行一次時間同步
poll : 本地主機和遠程服務器多少時間進行一次同步(單位為秒)
reach : 這是一個八進制值,表示已經向上層NTP服務器要求更新的次數。每成功連接一次,它的值就加1
delay : 網絡傳輸過程中延遲的時間,單位為微秒
offset : 我們本地機和服務器之間的時間差別。單位為毫秒
jitter : Linux系統時間與BIOS硬件時間的差異時間,單位為微秒
3)用客戶機nmap檢查一下端口:
nmap 192.168.3.155 -p 123 Starting Nmap 7.60 ( https://nmap.org ) at 2021-04-13 11:03 CST Nmap scan report for 192.168.3.155 Host is up (0.00082s latency). PORT STATE SERVICE 123/tcp closed ntp Nmap done: 1 IP address (1 host up) scanned in 0.02 seconds #沒想到我自己也整了一個closed狀態的ntp服務器,,無奈.jpg
順帶提一嘴:有個命令ntpstat瞅着賊好使,找了半天沒找到,原來得裝一下,無奈.jpg
sudo apt-get install ntpstat ntpstat #得到返回: synchronised to NTP server (202.118.1.81) at stratum 2 time correct to within 46 ms polling server every 512 s 含義是:已經和202.118.1.81服務器連上了,這是一個二級的服務器,時間已經校正約46ms,每512秒會去主動更新時間
把ntp加入開機自啟,然后把systemd-timesyncd的開機自啟取消掉
systemctl disable systemd-timesyncd #禁用systemd-timesyncd,這個方法和普通service取消開機自啟不大一樣哦 sudo update-rc.d ntp enable #ntp加入開機自啟 sudo service --status-all #前面帶加號的表示開機自啟的,你能找到ntp,但是抱歉你找不到systemd-timesyncd,原因不明
話說,為啥要把systemd-timesyncd取消掉呢?因為我發現,它能修改本機時間。而作為ntp服務器,我覺得ntp應該擁有對本機時間的獨占權。
3,校時客戶端配置
校時客戶端有很多種方法,但是我個人傾向於使用自帶的輕量級的systemd-timesyncd的這個,我們把它的配置改為局域網內的服務器155:
sudo vim /etc/systemd/timesyncd.conf #改這里:加上155,考慮到局域網內也沒有備選服務器,就直接一個校時服務器就好了 [Time] NTP=192.168.3.155 #FallbackNTP=ntp.ubuntu.com #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048
然后重啟systemd-timesyncd服務並且查看狀態:
systemctl restart systemd-timesyncd.service sudo service systemd-timesyncd status
4,校時測試
校時服務器:192.168.3.155
校時客戶端:192.168.3.142
1),ntp服務器上時間錯誤,能否ntp能否給我們校正過來?
我們把155上的時間改為2021-01-01 11:11:11,等着看客戶端上是不是會同步錯誤的時間
修改服務器上的時間:
sudo timedatectl set-time "2021-01-01 11:11:11"
改完以后,呵呵n分鍾,ntp進程掛了,看來配置好ntp服務器以后,不能亂改時間,系統時間的認為改動有可能會導致ntp進程掛掉。
手動啟動ntp:
sudo service ntp start
據說ntp要連上上層服務器得需要5-15分鍾左右,我們等它,最終證明,ntp確實把時間改成正確的了。正式環境不建議進行這種操作哈,timedatectl一改以后,系統log的日志都改了,所以謹慎使用
ps:還有一種改時間發方法如下,我嘗試了一下,根本改不了時間,改完了能維持個1秒吧
#格式date MMddhhmmyyyy date 010112002021 hwclock -w #軟件時間寫到bios里 date #查看當前軟件時間 hwclock -r #查看bios系統時間
所以結論是,ntp確實能把時間給你改過來,但是ntp已經運行好了以后,你亂改時間有可能導致ntp進程掛掉。
2),客戶端上的時間能否和服務器保證同步?
服務器上修改時間:
sudo service ntp stop #ntp校時服務先關掉 sudo timedatectl set-ntp false #關閉ntp服務器上的校時服務,省的把時間給我們改對咯 sudo timedatectl set-time '2021-01-01 00:00:00' #改時間 date #查看系統時間
sudo reboot #直接重啟一下吧
客戶端上:
systemctl restart systemd-timesyncd.service #重啟systemd校時 sudo service systemd-timesyncd status #查看systemd校時狀態 #拿到返回: ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-04-13 14:35:35 CST; 20s ago Docs: man:systemd-timesyncd.service(8) Main PID: 6141 (systemd-timesyn) Status: "Idle." #此處說明校時沒成功,有可能是服務器那邊還沒連上上層服務器的原因,我們等它一下 Tasks: 2 (limit: 4915) CGroup: /system.slice/systemd-timesyncd.service └─6141 /lib/systemd/systemd-timesyncd Apr 13 14:35:35 center-OptiPlex-7060 systemd[1]: Starting Network Time Synchronization... Apr 13 14:35:35 center-OptiPlex-7060 systemd[1]: Started Network Time Synchronization.
date #時間還是最新時間,沒改
5分鍾以后,我們發現服務器上的時間被ntp改成了正確的。。。。無語.jpg
那我們,再改一次,ps:生產環境請不要這么粗暴哈,因為強制改時間確實導致ntp又掛了一次
sudo timedatectl set-time "2021-01-01 11:11:11"
這次好了,客戶端改了:
sudo service systemd-timesyncd status ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-04-13 14:35:35 CST; 3 months 10 days left Docs: man:systemd-timesyncd.service(8) Main PID: 6141 (systemd-timesyn) Status: "Synchronized to time server 192.168.3.155:123 (192.168.3.155)." #表示已經和ntp服務器同步成功 Tasks: 2 (limit: 4915) CGroup: /system.slice/systemd-timesyncd.service └─6141 /lib/systemd/systemd-timesyncd Jan 01 11:12:58 center-OptiPlex-7060 systemd-timesyncd[6141]: Synchronized to time server 192.168.3.155:123 (192.168.3.155). date #顯示的是和服務器上一樣的時間
結論:ntp校時服務器上時間改了,客戶端確實也會改,但是延遲多久改,是不是等到ntp服務器連上上層服務器才會改,目前沒看出什么規律。個人猜測,依照我們的配置,只有當客戶端和服務器時間差大於5秒,並且被32-2048秒的systemd-timesyncd發動一次的監控程序發現的時候,才會和ntp校時服務器同步,當然重啟的時候也會同步,重啟systemd-timesyncd的時候應該也會同步,但是有時候並不成功,原因目前不知。但是個人發現,當ntp服務器時間正常,ntpq -p能看到它連上上層服務器的時候,重啟systemd-timesyncd一般能成功同步到服務器的時間。