原文:https://gavaee.wordpress.com/2010/10/27/ubuntuntp%E7%B6%B2%E8%B7%AF%E6%A0%A1%E6%99%82/
- 整理一下NTP Client,NTP Server建置及Linux有關時間的一些資料。
Linux與時間有關的指令
- /bin/date
顯示Linux系統日期及時間
# date MMDDhhmmYYYY
- /sbin/hwclock
這是一個 root 才能執行的指令,因為 Linux 系統上面 BIOS 時間與 Linux 系統時間是分開的,所以使用 date 這個指令調整了時間之後,還需要使用 hwclock 才能將修改過後的時間寫入 BIOS 當中!
# hwclock -r 顯示BIOS內的時間
# hwclock -w 將系統時間寫入BIOS
- /usr/share/zoneinfo
Linux系統提供的世界主要時區的時間設定檔,如:/usr/share/zoneinfo/Asia/Taipei即為台灣時時區檔
- /etc/localtime
Linux系統實際使用的時區檔,從/usr/share/zoneinfo內複製過來,所以若要變更時區,只要到…../zoneinfo內把需要的時區檔複到這裡並改名成localtime即可
NTP Client操作
- # sudo ntpdate time.stdtime.gov.tw
立即與time.stdtime.gov.tw校時,使用前須先停用ntpd
同步結果:
27 Oct 21:55:46 ntpdate[2683]: adjust time server 192.168.255.130 offset -0.023068 sec
NTP Server操作
- 時間基本概念:
- GMT:格林威治時間為標準時間(Greenwich Mean Time, GMT 時間)
- UTC:協和標準時間(Coordinated Universal Time, UTC時間),用原子鐘(Atomic Clock)為基準所定義出來的正確時間
- UTC 標準時間是以 GMT 這個時區為主,所以本地時間與 UTC 時間的時差就是本地時間與 GMT 時間的時差
- 電腦的 BIOS 內部就含有一個原子鐘在紀錄與計算時間的進行!不過由於原子鐘主要是利用計算晶片 (crystal) 的原子震盪週期去計時的,且每種晶片都有自己的獨特的震盪週期,因為不同的晶片震盪週期多多少少都會有點差異性, 甚至同一批晶片也可能會或多或少有些許的差異(就連溫度也可能造成這樣的誤差呢!),因此也就造成了 BIOS 的時間會三不五時的給他快了幾秒或者慢了幾秒
- NTP Server基本概念:
- NTP Server使用Port 123 UDP封包,可用# netstat -tlunp觀察
- 台灣常見的 Time Server 有:
- tock.stdtime.gov.tw
- time.stdtime.gov.tw
- clock.stdtime.gov.tw
- freq_f.stdtime.gov.tw
- tick.stdtime.gov.tw
- NTP與DNS一樣有階層概念,第一層NTP Server叫stratum-1,第二層叫stratum-2依此類推,共可建立15層!
- 台灣stratum-2:
- tock.stdtime.gov.tw (prefer)
- tick.stdtime.gov.tw
- time.stdtime.gov.tw
- NTP Server套件
- ntp
NTP Server主要套件
- tzdata
時區套件
- NTP 檔案:
- /etc/ntp.conf
NTP Server的設定檔
- /usr/sbin/ntpd
NTP Server主要daemon
- /etc/init.d/ntp star/stop/restart
啟動NTP Service的Script
- /usr/sbin/ntptrace
追蹤某部時間伺服器的時間對應關係
ntp.conf設定檔
- 主要內容
driftfile /var/lib/ntp/ntp.driftserver tock.stdtime.gov.tw prefer
server tick.stdtime.gov.tw
server time.stdtime.gov.tw
restrict default nomodify notrap noquery
restrict 192.168.100.11 <==底下這三行在開放主機進入的權限
restrict 192.168.200.11
restrict 192.168.210.11
restrict 127.0.0.1 mask 255.0.0.0 <==內部與 LAN 的使用權限
restrict 192.168.1.0 mask 255.255.255.0 nomodify <==192.168.1.0網段可校時,但不能修改
- driftfile /var/lib/ntp/ntp.drift
- 紀錄本機時間與上層NTP Server的時間差異(本機時間預設依據BIOS計算而來)
- driftfile 後面接的檔案需要使用完整路徑檔名
- 該檔案不能是連結檔
- 該檔案需要設定成 ntpd 這個 daemon 可以寫入的權限
- 該檔案所記錄的數值單位為:百萬分之一秒 (ppm)
- server [IP or hostname] [prefer]
- 設定上層 NTP 伺服器
- perfer 表示『優先使用』的主機
- restrict [你的IP] mask [netmask_IP] [parameter]
- 用restrict控制存取權限
- 參數:
- ignore
拒絕所有類型的 NTP 連線
- nomodify
用戶端不能更改 NTP 伺服器的時間參數,這即表示用戶端不能使用 ntpc 與 ntpq 這兩支程式來修改伺服器囉。 但用戶端仍可透過這部主機來進行網路校時的
- noquery
用戶端不能夠使用 ntpq, ntpc 等指令來查詢時間伺服器,等於不提供 NTP 的網路校時囉
- notrap
不提供 trap 這個遠端事件登錄 (remote event logging) 的功能
- notrust
拒絕沒有認證的用戶端
- 若沒有在 parameter 的地方加上任何參數的話,這表示『該 IP 或網段不受任何限制』的意思喔
- 通常會先關閉 NTP 的使用權限,然後在一個一個的啟用允許登入的網段
- restrict更多說明:ntpd access restrictions
啟動/重開/停止NTP Server
- 啟動:# sudo /etc/init.d/ntp start
- 重開:# sudo /etc/init.d/ntp restart
- 停止:# sudo /etc/init.d/ntp stop
NTP指令
- # netstat -tlunp
主要看UDP 123的port
- # ntptrace
localhost: stratum 3, offset -0.002099, synch distance 0.171925
tock.stdtime.gov.tw: stratum 2, offset 0.002473, synch distance 0.136901
192.5.41.41: stratum 1, offset 0.000005, synch distance 0.000000, refid ‘USNO’
列出目前我們的 NTP 伺服器與上層 NTP 伺服器彼此之間的關係
由於我們已經和第二層連接上,但第二層與第一層就不是我們能管理的,所以若出現第一層time out也是正常的
- # ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*tock.stdtime.go 192.5.41.41 2 u 16 64 377 30.108 1.177 6.881
+tick.stdtime.go 129.6.15.29 2 u 14 64 377 31.045 -6.446 6.410
+time.stdtime.go 192.5.41.41 2 u 6 64 347 29.788 -1.144 8.233 列出目前我們的 NTP 與相關的上層 NTP 的狀態
- ntpq -p欄位定義
- remote:亦即是 NTP 主機的 IP 或主機名稱囉~注意最左邊的符號, 如果有『+』代表目前正在作用當中的上層 NTP ,如果是『*』代表也有連上線,不過是作為次要連線的 NTP 主機。
- refid:參考的上一層 NTP 主機的位址
- st:就是 stratum 階層囉!
- when:幾秒鐘前曾經做過時間同步化更新的動作;
- poll:下一次更新在幾秒鐘之後;
- reach:已經向上層 NTP 伺服器要求更新的次數
- delay:網路傳輸過程當中延遲的時間,單位為 10^(-6) 秒
- offset:時間補償的結果,單位與 10^(-3) 秒
- jitter:Linux 系統時間與 BIOS 硬體時間的差異時間, 單位為 10^(-6) 秒。
沒有留言:
張貼留言