1. 程式人生 > 其它 >NTP: 時鐘源管理

NTP: 時鐘源管理

一. 基本概念
NTP是網路時間協議(Network Time Protocol),它是用來同步網路中各個計算機的時間的協議。

在計算機的世界裡,時間非常地重要,例如對於火箭發射這種科研活動,對時間的統一性和準確性要求就非常地高,是按照A這臺計算機的時間,還是按照B這臺計算機的時間?NTP就是用來解決這個問題的,NTP(Network Time Protocol,網路時間協議)是用來使網路中的各個計算機時間同步的一種協議。它的用途是把計算機的時鐘同步到世界協調時UTC,其精度在區域網內可達0.1ms,在網際網路上絕大多數的地方其精度可以達到1-50ms。

它可以使計算機對其伺服器或時鐘源(如石英鐘,GPS等等)進行時間同步,它可以提供高精準度的時間校正,而且可以使用加密確認的方式來防止惡毒的協議攻擊。


0層的伺服器採用的是原子鐘、GPS鍾等物理裝置,stratum 1與stratum 0 是直接相連的,往後的stratum與上一層stratum通過網路相連,同一層的server也可以互動。

1、C/S合一
ntpd對下層client來說是service server,對於上層server來說它是client,也就是說新版的NTP服務程式已經不對服務端和客戶端進行區分了,統一叫做ntpd。ntpd根據配置檔案的引數決定是要為其他伺服器提供時鐘服務或者是從其他伺服器同步時鐘。所有的配置都在/etc/ntp.conf檔案中。

2、NTP客戶端同步間隔
NTP服務會間隔多長時間想時鐘伺服器請求一次時鐘同步呢?預設最小時間間隔為64s,預設最大時間間隔是1024s(17分鐘左右)。64s是比較合理的,預設間隔也是可調的(Note that most device drivers will not operate properly if the poll interval is less than 64 s and that the broadcast server and manycast client associations will also use the default, unless overridden.)。

3、容忍誤差範圍
NTP服務並不是在任何情況下都會進行同步的。當時鍾伺服器時間和本地時間相差大於1000s時,NTP服務就會認為是人為調整了時鐘或出現了硬體故障,例如CMOS電池損壞等。此時,NTP服務就會退出,需要人工(ntpdate …)進行時鐘同步。

採用-g選項可以讓ntpd忽略1000s或更大誤差,設定時鐘到server system time, 但是ntpd還是會因此退出。

4、層次(strata)
stratum根據上層server的層次而設定(+1)。

對於提供network time service provider的主機來說,stratum的設定要儘可能準確。

而作為區域網的time service provider,通常將stratum設定為10 (Stratum 10 is conventional for unsynchronized local clocks; it is high enough that nobody is likely to mistake it for a desirable clock to synchronize with.),如下:

server  127.127.1.0     # local clock
fudge   127.127.1.0     stratum 10
#stratum設定為其它值也是可以的,其範圍為0~15

二、設定與啟動
檔案路徑:/etc/ntp.conf

1. 先處理許可權方面的問題,包括放行上層伺服器以及開放區域網使用者來源:

restrict default kod nomodify notrap nopeer noquery     <==拒絕 IPv4 的使用者
restrict -6 default kod nomodify notrap nopeer noquery  <==拒絕 IPv6 的使用者
restrict 220.130.158.71   <==放行 tock.stdtime.gov.tw 進入本 NTP 的伺服器
restrict 59.124.196.83    <==放行 tick.stdtime.gov.tw 進入本 NTP 的伺服器
restrict 59.124.196.84    <==放行 time.stdtime.gov.tw 進入本 NTP 的伺服器
restrict 127.0.0.1        <==底下兩個是預設值,放行本機來源
restrict -6 ::1
restrict 192.168.100.0 mask 255.255.255.0 nomodify <==放行區域網使用者來源,或者列出單獨IP

2. 設定主機來源,請先將原本的 [0|1|2].centos.pool.ntp.org 的設定批註掉:

server 220.130.158.71 prefer  <==以這部主機為最優先的server
server 59.124.196.83
server 59.124.196.84

3.預設的一個內部時鐘資料,用在沒有外部 NTP 伺服器時,使用它為區域網使用者提供服務:

# server 127.127.1.0 # local clock
# fudge 127.127.1.0 stratum 10

4.預設時間差異分析檔案與暫不用到的 keys 等,不需要更動它:

driftfile /var/lib/ntp/drift
keys      /etc/ntp/keys
檔案路徑:/etc/sysconfig/ntpd



OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
SYNC_HWCLOCK=yes

將他改成 yes 吧!這樣 BIOS 的時間也會跟著改變的!

啟動:

/etc/init.d/ntpd start 或 /etc/init.d/ntpd restart
檢視埠使用情況:

netstat -tlunp | grep ntp
Client單獨用ntpdate更新時間:

ntpdate ntp_server_ip
其後可能需要hwclock -w (clock -w)寫入BIOS timer