歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> NTP for Linux

NTP for Linux

日期:2017/3/1 13:53:34   编辑:關於Linux
NTP for Linux
一、服務概述 NTP(network time protocol 網絡時間協議)服務器是用來使計算機時間同步化的一種協議,它可以使計算機對其服務器或時鐘源做同步化,提供高精度的時間校正,在LAN上與標准時間差小於1毫秒,WAN相差幾十毫秒,並且通過加密確認的方式來防止攻擊。 二、NTP的基本工作原理 如圖所示。Device A和Device B通過網絡相連,它們都有自己獨立的系統時鐘,需要通過NTP實現各自系統時鐘的自動同步。為便於理解,作如下假設:
在Device A和Device B的系統時鐘同步之前,Device A的時鐘設定為10:00:00am,Device B的時鐘設定11:00:00am。
Device B作為NTP時間服務器,即Device A將使自己的時鐘與Device B的時鐘同步。
NTP報文在Device A和Device B之間單向傳輸所需要的時間為1秒。 系統時鐘同步的工作過程如下:
Device A發送一個NTP報文給Device B,該報文帶有它離開Device A時的時間戳,該時間戳為10:00:00am(T1)。
當此NTP報文到達Device B時,Device B加上自己的時間戳,該時間戳為11:00:01am(T2)。
當此NTP報文離開Device B時,Device B再加上自己的時間戳,該時間戳為11:00:02am(T3)。
當Device A接收到該響應報文時,Device A的本地時間為10:00:03am(T4)。
至此,Device A已經擁有足夠的信息來計算兩個重要的參數:
NTP報文的往返時延Delay=(T4-T1)-(T3-T2)=2秒。
Device A相對Device B的時間差offset=((T2-T1)+(T3-T4))/2=1小時。
這樣,Device A就能夠根據這些信息來設定自己的時鐘,使之與Device B的時鐘同步 三、NTP服務的安裝配置 [root@localhost softs]# wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p5.tar.gz [root@localhost softs]# tar xf ntp-4.2.6p5.tar.gz -C /usr/src/
[root@localhost softs]# cd /usr/src/ntp-4.2.6p5/ [root@localhost ntp-4.2.6p5]# ./configure --prefix=/usr/local/ntp --enable-all-clocks --enable-parse-clocks [root@localhost ntp-4.2.6p5]# make [root@localhost ntp-4.2.6p5]# make install 解釋一下相關的配置文件 1、/etc/ntp.conf 這是ntp默認的主配置文件,不同的linux版本,可能改文件米目錄不一樣 2、/usr/share/zoneinfo 規定了各個時區的配置文件,例如,上海 [root@localhost Asia]# ls /usr/share/zoneinfo/Asia/Shanghai
Shanghai 3、/etc/sysconfig/clock linux 主要時區的設定文件。每次啟動後linux操作系統會自動讀取這個文件來設定系統顯示的時間。 [root@localhost Asia]# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai" 這裡會使用上海這個文件的時間
4、/etc/localtime 顯示時間本地系統時間的設定文件,如果clock文件中規定了使用的時間設定文件為/usr/share/zoneinfo/Asia/Shanghai,linux系統會復制一份為/etc/localtim額,所以系統的時間顯示就會以Shanghai這個時間為准。 ntp服務默認的主配置文件 /etc/ntp.conf [root@localhost bin]# cat /etc/ntp.conf | grep -v ^# | grep -v ^$
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1 -----------因為沒有parameter部分,所以,該地址不受任何限制
restrict -6 ::1
server 0.rhel.pool.ntp.org--------上級時間服務器
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org
server 127.127.1.0 ----------- local clock
fudge 127.127.1.0 stratum 10 -----fudge用戶為這個時鐘設置級別,對待內部系統時鐘比較理想的情況是將時間源作為級別10來對待
driftfile /var/lib/ntp/drift -----------與上級時間服務器聯系所花費的時間,記錄在drift這個文件中
keys /etc/ntp/keys 權限的設定主要以 restrict 這個參數來設定,主要的語法為:restrict IP mask netmask_IP parameter 其中 IP 可以是軟件地址,也可以是 default ,default 就類似 0.0.0.0 ignore: 關閉所有的 NTP 聯機服務
nomodify: 表示 Client 端不能更改 Server 端的時間參數,不過, Client 端仍然可以透過 Server 端來進行網絡校時。
notrust: Client 除非通過認證,否則該 Client 來源將被視為不信任網域
noquery: 不提供 Client 端的時間查詢 ; 如果 paramter 完全沒有設定,那就表示該 IP 沒有任何限制!
restrict default ignore # 關閉所有的 NTP 要求封包
restrict 127.0.0.1 # 開啟內部遞歸網絡接口 lo

搭建一個內網的ntp服務器
[root@localhost bin]# cp /etc/ntp.conf /usr/local/ntp/ 因為我是源碼安裝的,並且制定目錄在此,所以我手動創建一個配置文件
[root@localhost bin]# vi /usr/local/ntp/ntp.conf

[root@localhost bin]# cd /usr/local/ntp/bin
[root@localhost bin]# ./ntpd -c /usr/local/ntp/ntp.conf -----------c制定配置文件啟動
[root@localhost bin]# lsof -i:123 --------查看ntpd的監聽端口
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
ntpd 5424 root 16u IPv4 18575 UDP *:ntp
ntpd 5424 root 17u IPv4 18577 UDP localhost.localdomain:ntp
ntpd 5424 root 18u IPv4 18578 UDP 192.168.254.153:ntp
然後我到192.168.254.46上測試
[root@localhost ~]# ntpdate 192.168.254.153 ----------以153作為ntp服務器進行時間的同步
23 Oct 15:05:12 ntpdate[23303]: step time server 192.168.254.153 offset 48.683654 sec 成功

這張圖可以看得出效果 相關的執行文件 /bin/date 查詢、修改日期時間的命令 /sbin/hwclock 主機的BIOS時間與系統時間是分開的,所以使用date命令只是改的系統時間,要想將修改的時間寫進bios必須還要root用戶執行這個命令才可以。 /usr/sbin/ntpd ntp服務的守護進程 /usr/sbin/ntpdate ntp客戶端用來連接ntp服務器的命令文件 /usr/sbin/ntpq 標准網絡計時協議查詢程序 /usr/sbin/ntptrace 跟蹤網絡計時協議主機鏈到它們的控制時間源 /sbin/clock 調整電腦硬件時間RTC,執行這個命令可以顯示現在時刻。將硬件時間與系統時間調成一致。 接下來再用一下hwclock命令
下一個命令ntpq
[root@localhost bin]# ntpq -p 列出當前NTP服務器上的ntp狀態
remote refid st t when poll reach delay offset jitter
==============================================================================
*LOCAL(0) .LOCL. 10 l 62 64 377 0.000 0.000 0.001 remote 響應這個請求的ntp服務器的名稱; refid NTP服務器使用的上一級NTP服務器; stremote服務器的級別;when 上次請求成功到現在的秒數;poll本地機和遠程機多久同步一次;reach測試能否跟服務器連接;delay從本地雞發送同步請求道ntp服務器的round trip time;offset主機與時間源同步的時候的時間偏移量(ms);jitter統計值 ntptrace ----查看ntp與上層服務器的關系,下面表示與第十層已經連上了 [root@localhost bin]# ntptrace -n 127.0.0.1
127.0.0.1: stratum 11, offset 0.000000, synch distance 0.000000 順便介紹一下windows客戶端的時間同步 win +R 打開運行,輸入cmd 在命令行輸入“net stop w32time”,在輸入"net start w32time",最後輸入net time /setsntp:"192.168.254.153" 提示:其實NTP服務的配置非常簡單,好像貌似也沒什麼用,但是如果你是在玩集群的話,那你可要重視了,呵呵 !
Copyright © Linux教程網 All Rights Reserved