為了實現時間同步,我們就需要用NTP(Network Time Protocol)這個協議。
簡單地說,NTP是用來使系統和一個精確的時間源保持時間同步的協議。
我們需要建立一個能提供精確時間的服務器,局域網內的所有電腦統一通過這台時間服務器進行時間同步、校准。
如何設置Linux Time Zone:
/usr/share/zoneinfo:這是個目錄,在這個目錄下是規定了各主要時區的時間設定文件,例如中國大陸地區的時區設置文件是 /usr/share/zoneinfo/Asia/Shanghai 。
如果我們想查看對於每個time zone當前的時間我們可以用zdump命令。
例如:分別查看日本、上海和紐約時間。
當輸入date命令查看時間時,我們所在的time zone是哪個,就顯示哪個時間,可以通過在/usr/share/zoneinfo下找到我們的time zone文件然后拷貝去到/etc/localtimezone(或者做個symbolic link)來更改所在時區
例如:把time zone改成紐約所在時區,再通過date查看當前時間。
把time zone改成日本所在時區,再通過date查看當前時間。
把time zone改成上海所在時區,再通過date查看當前時間。
NTP服務端的設置:
編輯ntp的配置文件 /etc/ntp.conf
關於權限設定部分
權限的設定主要以 restrict 這個參數來設定,主要的語法為:
restrict IP地址 mask 子網掩碼 參數
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
參數有以下幾個:
ignore :關閉所有的 NTP 聯機服務
nomodify:客戶端不能更改服務端的時間參數,但是客戶端可以通過服務端進行網絡校時。
notrust :客戶端除非通過認證,否則該客戶端來源將被視為不信任子網
noquery :不提供客戶端的時間查詢
notrap:不提供trap遠程登錄功能,trap服務是一種遠程時間日志服務
nopeer:提供時間服務,但不作為對等體
kod:向不安全的訪問者發送Kiss-Of-Death報文
注意:如果參數沒有設定,那就表示該 IP (或子網)沒有任何限制!
上級時間服務器的設定 :
由於我們配置的NTP 服務器需要網絡上面時間比較准確的NTP服務器來更新自己的時間,所以在我們的 NTP 服務器上面要配置一部上級時間服務器來進行校准
用server這個參數設定上級時間服務器,語法為:
server + IP地址或域名 [prefer]
IP地址或域名就是我們指定的上級時間服務器,如果 Server 參數最后加上 prefer,表示我們的 NTP 服務器主要以該部主機時間進行校准。
解決NTP服務器校准時間時的傳送延遲 :
使用driftfile參數設置:
driftfile 文件名
在與上級時間服務器聯系時所花費的時間,記錄在driftfile參數后面的文件內。
注意: driftfile 后面接的文件需要使用完整的路徑文件名,不能是鏈接文件,並且文件的權限需要設定成 ntpd守護進程可以寫入。
NTP客戶端的使用:
Linux系統:
執行 ntpdate:
ntpdate 10.1.3.51 其中10.1.3.51是NTP服務器的IP
不要忘了使用hwclock命令,把時間寫入bios
hwclock -w
如果想定時進行時間校准,可以使用crond服務來定時執行。
編輯 /etc/crontab 文件
加入下面一行:
30 8 * * * root /usr/sbin/ntpdate 10.1.3.51; /sbin/hwclock -w 其中 10.1.3.51是NTP服務器的IP地址
然后重啟crond服務
systemctl restart crond
這樣,每天 8:30 Linux 系統就會自動的進行網絡時間校准。
Windows 系統:
- 打開組策略編輯器,命令是:gpedit.msc
- 在計算機策略對話框中,打開如下路徑:計算機配置/管理模板/系統/Windows時間服務/時間提供程序。
- 雙擊右邊配置Windows NTP客戶端。將Ntp Server項,輸入將要同步到的時間服務器IP地址。在類型項,選擇NTP。
- 雙擊啟動NTP客戶端,啟用NTP客戶端,點擊應用,確定按鈕;
- 執行命令:gpupdate /force,更新組策略
- 執行命令:Services.msc,找到Windows Time服務,檢查W32Time服務是否啟動,啟動類型是否是 自動啟動,如下圖:
- 在右下角時間和日期中,設置同步地址並勾選自動同步即可,如下圖