前言
NTP 網絡時間協議用來同步網絡上不同主機的系統時間。你管理的所有主機都可以和一個指定的被稱為 NTP 服務器的時間服務器同步它們的時間。而另一方面,一個 NTP 服務器會將它的時間和任意公共 NTP 服務器,或者你選定的服務器同步。由 NTP 管理的所有系統時鍾都會同步精確到毫秒級。
在公司環境中,如果他們不想為 NTP 傳輸打開防火牆,就有必要設置一個內部 NTP 服務器,然后讓員工使用內部服務器而不是公共 NTP 服務器
服務端 : 192.168.16.30 master01
客戶端: 192.168.16.31 master02
1、 服務端配置:
centos7下首先確認服務器的防火牆、selinux關閉狀態
[root@master01 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
1.1為服務器和客戶機安裝ntp
yum install ntp -y
1.2 查找時間同步服務器
http://www.pool.ntp.org/zone/asia
1.3 編輯 /etc/ntp.conf
cat >/etc/ntp.conf<<EOF server 210.72.145.44 #China Time Centerserver server cn.pool.ntp.org #Pulbic Time Server server 127.127.1.0 iburst local #當外部時間不可用時,使用本地時間 clockrestrict 192.168.16.0 mask 255.255.255.0 nomodify #允許更新的IP地址段 EOF
配置說明:
ignore :關閉所有的 NTP 聯機服務
nomodify:客戶端不能更改服務端的時間參數,但是客戶端可以通過服務端進行網絡校時。
notrust :客戶端除非通過認證,否則該客戶端來源將被視為不信任子網
noquery :不提供客戶端的時間查詢
注意:如果參數沒有設定,那就表示該 IP (或子網)沒有任何限制!
1.4 啟動ntp服務
systemctl start ntpd systemctl enable ntpd.service
1.5驗證服務
[root@master01 ~]# 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 *85.199.214.100 .GPS. 1 u 18 64 377 250.594 -0.486 0.412 LOCAL(0) .LOCL. 5 l 6h 64 0 0.000 0.000 0.000 [root@master01 ~]# date -R Thu, 31 May 2018 16:38:20 +0800 [root@master01 ~]# ntpdc -np remote local st poll reach delay offset disp ======================================================================= *85.199.214.100 192.168.16.30 1 64 377 0.25058 -0.000486 0.04756 =127.0.0.1 5 64 0 0.00000 0.000000 3.99217 =192.168.16.30 16 1024 0 0.00000 0.000000 3.99217Fri, 15 Jul 2016 15:28:34 +0800
參數說明: remote - 本機和上層ntp的ip或主機名,“+”表示優先,“*”表示次優先 refid - 參考上一層ntp主機地址 st - stratum階層 when - 多少秒前曾經同步過時間 poll - 下次更新在多少秒后 reach - 已經向上層ntp服務器要求更新的次數 delay - 網絡延遲 offset - 時間補償 jitter - 系統時間與bios時間差
2、客戶端
2.1客戶端配置ntp:(注釋並在后面添加同步服務器)
[root@master02 ~]# vim /etc/ntp.conf ..... # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst server master01 ......
2.2 遠程客戶端時間同步測試
[root@master02 ~]# ntpdate master01 2 Jun 11:30:01 ntpdate[1235]: step time server 192.168.16.30 offset 2.766992 sec [root@master02 ~]# systemctl start ntpd [root@master02 ~]# systemctl enable ntpd.service [root@master02 ~]# ntpdc -np remote local st poll reach delay offset disp ======================================================================= *192.168.16.30 192.168.16.31 2 128 377 0.00018 -0.003627 0.09908
ntpd、ntpdate的區別
tpd與ntpdate在更新時間時有什么區別。
ntpd不僅僅是時間同步服務器,它還可以做客戶端與標准時間服務器進行同步時間,而且是平滑同步,並非ntpdate立即同步,在生產環境中慎用ntpdate,也正如此兩者不可同時運行。
時鍾的躍變,對於某些程序會導致很嚴重的問題。許多應用程序依賴連續的時鍾——畢竟,這是一項常見的假定,即,取得的時間是線性的,一些操作,例如數據庫事務,通常會地依賴這樣的事實:時間不會往回跳躍。不幸的是,ntpdate調整時間的方式就是我們所說的”躍變“:在獲得一個時間之后,ntpdate使用settimeofday(2)設置系統時間,這有幾個非常明顯的問題:
第一,這樣做不安全。ntpdate的設置依賴於ntp服務器的安全性,攻擊者可以利用一些軟件設計上的缺陷,拿下ntp服務器並令與其同步的服務器執行某些消耗性的任務。由於ntpdate采用的方式是跳變,跟隨它的服務器無法知道是否發生了異常(時間不一樣的時候,唯一的辦法是以服務器為准)。
第二,這樣做不精確。一旦ntp服務器宕機,跟隨它的服務器也就會無法同步時間。與此不同,ntpd不僅能夠校准計算機的時間,而且能夠校准計算機的時鍾。
第三,這樣做不夠優雅。由於是跳變,而不是使時間變快或變慢,依賴時序的程序會出錯(例如,如果ntpdate發現你的時間快了,則可能會經歷兩個相同的時刻,對某些應用而言,這是致命的)。因而,唯一一個可以令時間發生跳變的點,是計算機剛剛啟動,但還沒有啟動很多服務的那個時候。其余的時候,理想的做法是使用ntpd來校准時鍾,而不是調整計算機時鍾上的時間。
NTPD 在和時間服務器的同步過程中,會把 BIOS 計時器的振盪頻率偏差——或者說 Local Clock 的自然漂移(drift)——記錄下來。這樣即使網絡有問題,本機仍然能維持一個相當精確的走時。