網絡時間協議(NTP)用來同步網絡上不一樣主機的系統時間。你管理的全部主機均可以和一個指定的被稱爲 NTP 服務器的時間服務器同步它們的時間。而另外一方面,一個 NTP 服務器會將它的時間和任意公共 NTP 服務器,或者你選定的服務器同步。由 NTP 管理的全部系統時鐘都會同步精確到毫秒級。linux
在公司環境中,若是他們不想爲 NTP 傳輸打開防火牆,就有必要設置一個內部 NTP 服務器,而後讓員工使用內部服務器而不是公共 NTP 服務器。在這個指南中,咱們會介紹如何將一個 CentOS 系統配置爲 NTP 服務器。在介紹詳細內容以前,讓咱們先來簡單瞭解一下 NTP 的概念。vim
爲何咱們須要 NTP?服務器
因爲製造工藝多種多樣,全部的(非原子)時鐘並不按照徹底一致的速度行走。有一些時鐘走的比較快而有一些走的比較慢。所以通過很長一段時間之後,一個時鐘的時間慢慢的和其它的發生偏移,這就是常說的 「時鐘漂移」 或 「時間漂移」。爲了將時鐘漂移的影響最小化,使用 NTP 的主機應該週期性地和指定的 NTP 服務器交互以保持它們的時鐘同步。網絡
在不一樣的主機之間進行時間同步對於計劃備份、入侵檢測記錄、分佈式任務調度或者事務訂單管理來講是很重要的事情。它甚至應該做爲平常任務的一部分。運維
NTP 的層次結構分佈式
NTP 時鐘以層次模型組織。層級中的每層被稱爲一個 stratum(階層)。stratum 的概念說明了一臺機器到受權的時間源有多少 NTP 跳。ide
Stratum 0 由沒有時間漂移的時鐘組成,例如原子時鐘。這種時鐘不能在網絡上直接使用。Stratum N (N > 1) 層服務器從 Stratum N-1 層服務器同步時間。Stratum N 時鐘能經過網絡和彼此互聯。linux運維
NTP 支持多達 15 個 stratum 的層級。Stratum 16 被認爲是未同步的,不能使用的。spa
準備 CentOS 服務器.net
如今讓咱們來開始在 CentOS 上設置 NTP 服務器。
首先,咱們須要保證正確設置了服務器的時區。在 CentOS 7 中,咱們可使用 timedatectl 命令查看和更改服務器的時區(好比,"Australia/Adelaide",LCTT 譯註:中國可設置爲 Asia/Shanghai )
# timedatectl list-timezones | grep Australia
# timedatectl set-timezone Australia/Adelaide
# timedatectl
繼續並使用 yum 安裝須要的軟件
# yum install ntp
而後咱們會添加全球 NTP 服務器用於同步時間。
# vim /etc/ntp.conf
server 0.oceania.pool.ntp.org
server 1.oceania.pool.ntp.org
server 2.oceania.pool.ntp.org
server 3.oceania.pool.ntp.org
默認狀況下,NTP 服務器的日誌保存在 /var/log/messages。若是你但願使用自定義的日誌文件,那也能夠指定。
logfile /var/log/ntpd.log
若是你選擇自定義日誌文件,確保更改了它的屬主和 SELinux 環境。
# chown ntp:ntp /var/log/ntpd.log
# chcon -t ntpd_log_t /var/log/ntpd.log
如今初始化 NTP 服務並確保把它添加到了開機啓動。
# systemctl restart ntp
# systemctl enable ntp
驗證 NTP Server 時鐘
咱們可使用 ntpq 命令來檢查本地服務器的時鐘如何經過 NTP 同步。
下面解釋了輸出列。
remote 源在 ntp.conf 中定義。‘*’ 表示當前使用的,也是最好的源;‘+’ 表示這些源可做爲 NTP 源;‘-’ 標記的源是不可用的。
refid 用於和本地時鐘同步的遠程服務器的 IP 地址。
st Stratum(階層)
t 類型。 'u' 表示單播(unicast)。其它值包括本地(local)、多播(multicast)、廣播(broadcast)。
when 自從上次和服務器交互後通過的時間(以秒數計)。
poll 和服務器的輪詢間隔,以秒數計。
reach 表示和服務器交互是否有任何錯誤的八進制數。值 337 表示 100% 成功(即十進制的255)。
delay 服務器和遠程服務器來回的時間。
offset 咱們服務器和遠程服務器的時間差別,以毫秒數計。
jitter 兩次取樣之間平均時差,以毫秒數計。
控制到 NTP 服務器的訪問
默認狀況下,NTP 服務器容許來自全部主機的查詢。若是你想過濾進來的 NTP 同步鏈接,你能夠在你的防火牆中添加規則過濾流量。
# iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 123 -j ACCEPT
# iptables -A INPUT -p udp --dport 123 -j DROP
該規則容許從 192.168.1.0/24 來的 NTP 流量(端口 UDP/123),任何其它網絡的流量會被丟棄。你能夠根據須要更改規則。
配置 NTP 客戶端
1. Linux
NTP 客戶端主機須要 ntpupdate 軟件包來和服務器同步時間。能夠輕鬆地使用 yum 或 apt-get 安裝這個軟件包。安裝完軟件包以後,用服務器的 IP 地址運行下面的命令。
# ntpdate <server-IP-address>
基於 RHEL 和 Debian 的系統命令都相同。
2. Windows
若是你正在使用 Windows,在日期和時間設置(Date and Time settings)下查找網絡時間(Internet Time)。
3. Cisco 設備
若是你想要同步 Cisco 設備的時間,你能夠在全局配置模式下使用下面的命令。
# ntp server <server-IP-address>
來自其它廠家的支持 NTP 的設備有本身的用於網絡時間的參數。若是你想將設備和 NTP服務器同步時間,請查看設備的說明文檔。
結論
總而言之,NTP 是在你的全部主機上同步時鐘的一個協議。咱們已經介紹瞭如何設置 NTP 服務器並使支持 NTP 的設備和服務器同步時間。
但願能對你有所幫助。
免費領取兄弟連IT教育原創linux運維工程師視頻/細說linux教程,詳情諮詢官網客服:http://www.lampbrother.net/linux/
或者勾搭Q2430675018
歡迎加入linux交流羣 478068715