一:NTP的工作原理(UDP端口 123)

NTP工作原理:
上圖是NTP的基本工作原理,路由器A和路由器B通過網絡連接配接,它們都有自己獨立的系統時鐘,要實作各自的系統時鐘的自動同步,作如下的假設:
—路由器A和B的系統時鐘同步之前,路由器A的時鐘設定為10:00:00am,路由器B的時鐘設定為11:00:00am。
—以路由器B為NTP時間伺服器,即路由器A将使自己的時鐘與路由器B的時鐘同步。
—資料包在路由器A和B之間單向傳輸所需要的時間為1秒。
時鐘同步的過程:
系統時鐘同步的工作過程如下:
—路由器A發送一個NTP消息包給路由器B,該消息包帶有它離開路由器A時的時間戳,該時間戳為10:00:00am(T1)。
—當此NTP消息包到達路由器B時,路由器B加上自己的時間戳,該時間戳為11:00:01am(T2)。
—當此NTP消息包離開路由器B時,路由器B再加上自己的時間戳,該時間戳為11:00:02am(T3)。
—當路由器A接收到該響應消息包時,加上一個新的時間戳,該時間戳為10:00:03am(T4)。
NTP的工作模式:
按照實作同步所必須的模式組合,有以下幾種常用的模式:
伺服器 / 客戶模式(server / client)
對等體模式(symmetric active / symmetric passive)
廣播模式(broadcast server / broadcast client)
多點傳播模式(multicast server / multicast client)
關于NTP的層數及時間戳:
層數(取值範圍 1-15):
層數是NTP中一個比較重要的概念,它基本上可以說是代表了一個時鐘的準确度,層數為1的時鐘準确度最高,從1到15依次遞減.
時間戳:
Reference Timestamp:本地時鐘最後一次被設定或校準的時間
Originate Timestamp: 同步請求封包離開發送端時的本地時間
Receive Timestamp:同步請求到達被請求端時的本地時間
Transmit Timestamp:應答封包離開應答者時的本地時間
時鐘過濾及時鐘選擇:
時鐘過濾:
時鐘過濾是針對本地時鐘的同一個對等體而言,用來從這個給定的對等體選擇最好的時間樣本.
時鐘選擇:
時鐘選擇是針對不同的對等體,比如一個client可以配置多個server,還可以配置多個peer,這樣它分别向各個server和被動對等體發送時鐘同步封包,在接收到應答封包後利用時鐘選擇算法選擇出最好的時鐘進行同步.
二:NTP資料封包格式
NTP的實作模型:
—在模型中,一台主機上運作了三個程序,這三個程序共享同一分塊的資料檔案,每一個對等體使用資料檔案中一個特定的分塊,三個程序通過封包傳送系統互相連接配接。
發送程序:
—由每個對等體中的獨立的計時器控制,收集資料檔案中的資訊并向它的對等體發送NTP封包;每個NTP封包中包括封包發送時的本地時間戳、上次接收到封包的時間戳和其它确定層次和管理關聯所必須的資訊。
接收程序:
—接收NTP封包(也可能包括其它協定的封包)和來自于與主機直接相連的Radio Clocks 的資訊。
更新過程:
—在接收到NTP封包時或其它時間啟動,它處理來自于每一個對等體的偏移資料,并用選擇算法選擇出最好的對等體。
本地時鐘程序:
—根據由更新過程中産生的偏移資料用一定的機制對本地時鐘的相位和頻率進行調節。
NTP實驗:
下面的部分是轉載的别人的,在此說聲感謝:
一、使用windows2003作為時鐘源
ParametersType -> NTP
ConfigAnnounceFlags -> 5
TimeProvidersNtpServerEnabled -> 1
TimeProvidersNtpClientSpecialPollInterval -> 900
ConfigMaxPosPhaseCorrection -> 172800
ConfigMaxNegPhaseCorrection -> 172800
ConfigLocalClockDispersion -> 0 (Previous 10)
Run the commands to restart the time service:
- net stop w32time
- net start w32time
二:思科裝置作為用戶端配置
1、配置指令
clock timezone CST 8
ntp server x.x.x.x
ntp source interface
2 狀态檢查
show ntp status
show ntp associations detail
3 注意事項
如果沒有同步,最好先no ntp server 再重新配置ntp server
三、思科裝置作為源
clock timezone CST 8
ntp source Loopback0
ntp authenticate
ntp authentication-key 1234 md5 104D000A0618 7
ntp trusted-key 1234
ntp master 3
四、Linux作為時間源
如果你的伺服器是Linux,請先用如下指令檢視本機是否已安裝ntp server
rpm -qa|grep ntp
如無,則安裝上此RPM包。
也可安裝tar包。
配置NTP server
NTP server的主配置檔案為/etc/ntp.conf
現對/etc/ntp.conf的各項進行說明
#設定此伺服器同上層伺服器做時間同步的IP位址,prefer意味着首選IP位址
server 61.246.176.141 prefer
server 210.59.157.10 prefer
server 202.112.7.150 prefer
server 203.116.5.254 #asia.pool.ntp.org
server 202.162.32.12 #1.asia.pool.ntp.org
server 202.155.248.212 #0.asia.pool.ntp.org
#記錄上次我們的NTP server與上層NTP server連線時所花費的時間
driftfile /etc/ntp/drift
#設定預設政策為允許任何主機進行時間同步
restrict default ignore
#設定允許通路此時間伺服器的時間服務的IP位址
restrict 127.0.0.1 # 開啟內部環路lo
restrict 192.168.0.2 # 主機本身的 IP 也同時開啟
restrict 211.101.48.56
restrict 192.168.1.0 mask 255.255.255.0 意味着允許192.168.1.0/24子網内主機可同步
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap #允許任何主機跟此伺服器進行時間同步
#指定階層編号為5,降低其優先度。
fudge 127.127.1.1 stratum 5
#設定ntp日志的path
statsdir /var/log/ntp/
#設定ntp日志檔案
logfile /var/log/ntp/ntp.log
keys /etc/ntp/keys
NTP server的維護
1、 啟動
service ntpd start或者ntpd –p /var/log/ntpd.pid或手工指定配置檔案的帶path的全名
如ntpd –c /etc/ntp/ntp.conf –p /var/log/ntpd.pid
2、 停止
service ntpd stop
3、 ntpq –p 檢視本機和上層伺服器的時間同步結果
4、 ntptrace 可以用來追蹤某台時間伺服器的時間對應關系
5、 ntpdate IP 用戶端要和NTP server進行時鐘同步。
6、 檢視ntp日志/var/log/ntp/ntp.log
用戶端的配置
LINUX用戶端:
echo “10 5 * * * root /usr/sbin/ntpdate 192.168.5.3;/sbin/hwclock -w”>>/etc/crontab
意為每天淩晨的5:10同NTP server進行一次時鐘同步,并寫入本機BIOS