天天看點

如何在 CentOS 中設定 NTP 伺服器

網絡時間協定(ntp)用來同步網絡上不同主機的系統時間。你管理的所有主機都可以和一個指定的被稱為 ntp 伺服器的時間伺服器同步它們的時間。而另一方面,一個 ntp 伺服器會将它的時間和任意公共 ntp 伺服器,或者你標明的伺服器同步。由 ntp 管理的所有系統時鐘都會同步精确到毫秒級。

在公司環境中,如果他們不想為 ntp 傳輸打開防火牆,就有必要設定一個内部 ntp 伺服器,然後讓員工使用内部伺服器而不是公共 ntp 伺服器。在這個指南中,我們會介紹如何将一個 centos 系統配置為 ntp 伺服器。在介紹詳細内容之前,讓我們先來簡單了解一下 ntp 的概念。

<a target="_blank"></a>

由于制造技術多種多樣,所有的(非原子)時鐘并不按照完全一緻的速度行走。有一些時鐘走的比較快而有一些走的比較慢。是以經過很長一段時間以後,一個時鐘的時間慢慢的和其它的發生偏移,這就是常說的 “時鐘漂移” 或 “時間漂移”。為了将時鐘漂移的影響最小化,使用 ntp 的主機應該周期性地和指定的 ntp 伺服器互動以保持它們的時鐘同步。

ntp 時鐘以層次模型組織。層級中的每層被稱為一個 stratum(階層)。stratum 的概念說明了一台機器到授權的時間源有多少 ntp 跳。

如何在 CentOS 中設定 NTP 伺服器

stratum 0 由沒有時間漂移的時鐘組成,例如原子時鐘。這種時鐘不能在網絡上直接使用。stratum n (n &gt; 1) 層伺服器從 stratum n-1 層伺服器同步時間。stratum n 時鐘能通過網絡和彼此互聯。

ntp 支援多達 15 個 stratum 的層級。stratum 16 被認為是未同步的,不能使用的。

現在讓我們來開始在 centos 上設定 ntp 伺服器。

首先,我們需要保證正确設定了伺服器的時區。在 centos 7 中,我們可以使用 timedatectl 指令檢視和更改伺服器的時區(比如,"australia/adelaide",lctt 譯注:中國可設定為 asia/shanghai )

<code># timedatectl list-timezones | grep australia</code>

<code># timedatectl set-timezone australia/adelaide</code>

<code># timedatectl</code>

如何在 CentOS 中設定 NTP 伺服器

繼續并使用 yum 安裝需要的軟體

<code># yum install ntp</code>

然後我們會添加全球 ntp 伺服器用于同步時間。

<code># vim /etc/ntp.conf</code>

<code>server 0.oceania.pool.ntp.org</code>

<code>server 1.oceania.pool.ntp.org</code>

<code>server 2.oceania.pool.ntp.org</code>

<code>server 3.oceania.pool.ntp.org</code>

預設情況下,ntp 伺服器的日志儲存在 /var/log/messages。如果你希望使用自定義的日志檔案,那也可以指定。

<code>logfile /var/log/ntpd.log</code>

如果你選擇自定義日志檔案,確定更改了它的屬主和 selinux 環境。

<code># chown ntp:ntp /var/log/ntpd.log</code>

<code># chcon -t ntpd_log_t /var/log/ntpd.log</code>

現在初始化 ntp 服務并確定把它添加到了開機啟動。

<code># systemctl restart ntp</code>

<code># systemctl enable ntp</code>

我們可以使用 ntpq 指令來檢查本地伺服器的時鐘如何通過 ntp 同步。

如何在 CentOS 中設定 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 同步連接配接,你可以在你的防火牆中添加規則過濾流量。

<code># iptables -a input -s 192.168.1.0/24 -p udp --dport 123 -j accept</code>

<code># iptables -a input -p udp --dport 123 -j drop</code>

該規則允許從 192.168.1.0/24 來的 ntp 流量(端口 udp/123),任何其它網絡的流量會被丢棄。你可以根據需要更改規則。

ntp 用戶端主機需要 ntpupdate 軟體包來和伺服器同步時間。可以輕松地使用 yum 或 apt-get 安裝這個軟體包。安裝完軟體包之後,用伺服器的 ip 位址運作下面的指令。

<code># ntpdate &lt;server-ip-address&gt;</code>

基于 rhel 和 debian 的系統指令都相同。

如果你正在使用 windows,在日期和時間設定(date and time settings)下查找網絡時間(internet time)。

如果你想要同步 cisco 裝置的時間,你可以在全局配置模式下使用下面的指令。

<code># ntp server &lt;server-ip-address&gt;</code>

來自其它廠家的支援 ntp 的裝置有自己的用于網絡時間的參數。如果你想将裝置和 ntp伺服器同步時間,請檢視裝置的說明文檔。

總而言之,ntp 是在你的所有主機上同步時鐘的一個協定。我們已經介紹了如何設定 ntp 伺服器并使支援 ntp 的裝置和伺服器同步時間。

希望能對你有所幫助。

<b></b>

<b>原文釋出時間為:2015-06-06</b>

<b>本文來自雲栖社群合作夥伴“linux中國”</b>

繼續閱讀