本來以爲挺簡單的一個活,足足折騰了一整天。
有三臺虛機(Ubuntu 16.04),分別是9.5,3.77,8.182,要做成9.5連接公共ntp,其餘兩臺以9.5作爲ntp服務器,也就是這樣:
方案確定之後就可以開始幹活了。
安裝NTP服務
Debian/Ubuntu環境下用apt install ntp
安裝,沒什麼可說的,順帶要把防火牆關掉,ntp主要使用udp的123端口。
修改配置文件
ntp服務的主要配置文件位於/etc/ntp.conf
下面,參數比較多,只挑一些需要用到的地方進行說明。
首先配置主節點9.5的機器。
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
#pool 0.ubuntu.pool.ntp.org iburst
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst
server jp.pool.ntp.org prefer
# Use Ubuntu's ntp server as a fallback.
#pool ntp.ubuntu.com
server cn.pool.ntp.org
ntp服務會默認添加四條服務器,這個地址前面的0/1/2/3是什麼意思暫時不懂,歡迎高人指點一下。具體的配置格式是這樣的:
server host [ key n ] [ version n ] [ prefer ] [ mode n ] [ minpoll n ] [ maxpoll n ] [ iburst ]
其中host是上層NTP服務器的IP地址或域名,隨後所跟的參數解釋如下所示:
- key: 表示所有發往服務器的報文包含有祕鑰加密的認證信息,n是32位的整數,表示祕鑰號。
- version: 表示發往上層服務器的報文使用的版本號,n默認是3,可以是1或者2。
- prefer: 如果有多個server選項,具有該參數的服務器優先使用
- mode: 指定數據報文mode字段的值。
- minpoll: 指定與查詢該服務器的最小時間間隔爲2的n次方秒,n默認爲6,範圍爲4-14。
- maxpoll: 指定與查詢該服務器的最大時間間隔爲2的n次方秒,n默認爲10,範圍爲4-14。
- iburst: 當初始同步請求時,採用突發方式接連發送8個報文,時間間隔爲2秒。
默認的全都註釋掉,根據自己的網絡情況選一個延遲相對較低的公共ntp服務,我這裏選擇 jp.pool.ntp.org,加上prefer表示優先選擇此地址,萬一失效使用備份的cn.pool.ntp.org。
關於公共ntp服務地址可以去這裏查詢:NTP Pool Project。提供了分佈全球各大洲的3800多臺服務器,其中也包括中國結點。我爲什麼沒有選cn的?這臺在北京的機器訪問cn有200+的延遲反而訪問jp的只有100不到,很是神奇。
剩下還有很多參數,包括訪問權限控制什麼的,非常多,可以參考這篇文章。
同理,其餘兩臺機器使用9.5作爲主節點的話就把server地址改爲這臺機器,備份server改爲公共ntp服務,像這樣:
修改完成wq保存退出,然後service ntp restart
重啓服務。千萬不要忘了這一步!要不然是不生效的。
驗證
接下來驗證一下狀態。使用ntpq -pn
命令查看一下運行狀態。
ntpq是ntp服務的程序名,-p表示打印連接信息,-n表示展示ip而不是域名
解釋一下各個字段的含義:
- remote:表示NTP主機的IP或者是主機名,其中:
*
表示目前正在使用的NTP服務器;
+
表示已經連接成功,並且可以作爲下一個提供時間更新的候選者;
#
表示服務正常但是不在使用節點之內
x
表示無法連接 - refid:表示上一層NTP主機的地址(和DNS服務器的結構類似,一層一層遞歸),當remote已經是根NTP服務器的時候就不會顯示ip或域名了。可能有以下值(太多了沒法全部列舉,有需要可自行搜索相關文檔):
.LOCL.
:本機,當沒有配置遠程ntp服務時;
.IRIG.
:Inter-Range Instrumentation Group 時間碼;
.PPS.
:時間標準中的“Pulse Per Second”(秒脈衝);
.NICT.
:日本情報通信研究機構(NICT),也就是此ntp服務提供者;
.DENY.
:服務拒絕訪問;
.AUTH.
:認證錯誤(適用於配置了訪問權限的NTP服務器);
.TIME.
:連接超時;
.INIT.
:初始化,常出現在服務剛剛啓動後不久;
… - st:遠程服務器的級別。當此值爲1是表示爲根NTP服務器
- t:類型,有以下值:
u
:unicast,單播;
b
:broadcast,廣播;
l
:local,本地;
s
:對稱節點,用於備份;
A
:選播服務器;
B
:廣播服務器;
M
:多播服務器; - when:距上次同步的時間,單位是秒
- poll:同步頻率,單位爲秒,默認每128秒同步一次
- reach:已同步次數
- delay:延遲,單位毫秒
- offset:時間偏移量,顯示
-
爲負偏移,單位是毫秒 - jitter:與遠程ntp服務的平均偏差,單位毫秒
回頭看一下9.5服務器上的結果,正在使用133.243.238.243作爲主服務(動態分配地址,ip隨時會變),他已經是根服務器了(st = 1)所以上層服務爲NICT。備用地址爲119.28.183.184,是個二級節點。
再來看一3.77的運行狀態:
主節點是配置的9.5服務,上層是243的根服務器,與9.5上顯示的地址完全相同,沒問題。
8.182的:
也沒有問題。最後netstat -ntulp
查看一下端口狀態:
ntpd使用udp協議的123端口,沒問題。
至此配置完成,參考了這些博主的文章,表示感謝:鳥哥的Linux私房菜,NTP時間服務器配置以及錯誤的總結,網絡時間的那些事及 ntpq 詳解