-
簡介
-
原理
-
配置ntp服務器
-
進行同步
一、簡介
在計算時間的時候,最准確的計算應該是使用『原子震盪周期』所計算的物理時鍾了( Atomic Clock, 也被稱為原子鍾 ),這也被定義為標准時間(International Atomic Time)。而我們常常看見的 UTC 也就是Coordinated Universal Time (協和標准時間)就是利用這種 Atomic Clock 為基准所定義出來的正確時間。這個 UTC 標准時間是以 GMT 這個時區為主的喔!所以本地時間與 UTC 時間的時差就是本地時間與 GMT 時間的時差。
計算機主機上面的 BIOS 內部就含有一個原子鍾,由於原子鍾主要是利用計算芯片 (crystal) 的原子震盪周期去計時的,每種芯片都有自己的獨特的震盪周期。而計算機主要又是以 BIOS 內部的時間為主要的時間依據,而偏偏這個時間可能因為 BIOS 內部芯片本身的問題,而導致 BIOS 時間與標准時間 (UTC) 有差異存在,所以,為了避免主機時間因為長期運作下所導致的時間偏差,這時候就需要網絡校時(Network Time Protocol)NTP的功能來進行時間同步了。
二、原理
1. 主機當然需要啟動 daemon
2. Client 會向 NTP Server 發送出調校時間的 message
3. NTP Server 會送出目前的標准時間給 Client
4. Client 接收了來自 Server 的時間后,會據以調整自己的時間。
但是存在client端與server端同步的時間差、延遲問題,在 daemon 的部分,以 server/client 及 master/slave 的架構來提供使用者進行網絡校時的動作來保證校准時間更為准確。
三、安裝配置
#yum install -y ntp ntpdate
編輯配置文件/etc/ntp.conf

ignore:關閉所有ntp聯機服務
nomodify:表示client端不能更改server端的時間參數,不過client端仍然可以通過server端同步時間
notrap:拒絕特殊的ntpdq捕獲消息
noquery:拒絕btodq/ntpdc查詢
server:添加上層主機的設定或者說添加為互聯網上的ntp服務器的設定
以上圖配置文件當中的注釋也很清楚。


(此圖只是為另一個例子)
3.添加防火牆規則及啟動NTP服務
#iptables –A INPUT –p udp –i eth0 –s 10.0.7.0/24 –dport 123 –j ACCEPT
#systemctl start ntpd
四、同步
#ntpdate NTP服務端IP

若出現同步成功的提示,但時間沒有同步過來,可能為時區問題,修改時區可用簡單的方法:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

若出現“no server suitable for synchronization found”,檢查ntp服務器端配置正確以及防火牆設置正確等;若還是不行,則試着同步網絡上的ntp服務器,比如ntpdate time.nist.gov(前提客戶端要能通網絡)
#date
顯示系統時間
#hwclock
顯示系統硬件時間
#hwclock -w
將系統時間寫入到系統硬件當中
定時執行時間同步任務,所以我們利用crontab -e 來添加定時任務
* 1/ * * * root /usr/sbin/ntpdate 10.0.7.149;hwclock -w

以上。
