ntp服务配置
Redhat6.5下配置NTP時間服務器
在配置服務之前需要知道的一些概念:
【整篇文章有很多是借鑒別人的,少部分是自己編寫的,希望能對大家有所裨益】
1.時間和時區
如果有人問你說現在幾點??你看了看表回答他說晚上8點了.?這樣回答看上去沒有什么問題,但是如果問你的這個人在歐洲的話那么你的回答就會讓他很疑惑,因為他那里還太陽當空呢.
?
這里就有產生了一個如何定義時間的問題.?因為在地球環繞太陽旋轉的24個小時中,世界各地日出日落的時間是不一樣的.所以我們才有劃分時區(timezone)?的必要,也就是把全球劃分成24個不同的時區.?所以我們可以把時間的定義理解為一個時間的值加上所在地的時區(注意這個所在地可以精確到城市)
?
地理課上我們都學過格林威治時間(GMT),?它也就是0時區時間.?但是我們在計算機中經??吹降氖荱TC.?它是Coordinated?Universal?Time的簡寫.?雖然可以認為UTC和GMT的值相等(誤差相當之小),但是UTC已經被認定為是國際標準,所以我們都應該遵守標準只使用UTC
?
那么假如現在中國當地的時間是晚上8點的話,我們可以有下面兩種表示方式
20:00?CST
12:00?UTC
?
這里的CST是Chinese?Standard?Time,也就是我們通常所說的北京時間了.?因為中國處在UTC+8時區,依次類推那么也就是12:00?UTC了.
第一,不管通過任何渠道我們想要同步系統的時間,通常提供方只會給出UTC+0的時間值而不會提供時區(因為它不知道你在哪里).所以當我們設置系統時間的時候,設置好時區是首先要做的工作
第二,很多國家都有夏令時,那就是在一年當中的某一天時鐘撥快一小時(比如從UTC+8一下變成UTC+9了),那么同理到時候還要再撥慢回來.如果我們設置了正確的時區,當需要改變時間的時候系統就會自動替我們調整
?
2.如何設置Linux?Time?Zone
在Linux下glibc提供了我們事先編譯好的許多timezone文件,?他們就放在/usr/share/zoneinfo這個目錄下,這里基本涵蓋了大部分的國家和城市
#?ls?-F?/usr/share/zoneinfo/
Africa/??????Chile/???Factory????Iceland??????Mexico/???posix/??????Universal
America/?????CST6CDT??GB?????????Indian/??????Mideast/??posixrules??US/
Antarctica/??Cuba?????GB-Eire????Iran?????????MST???????PRC?????????UTC
Arctic/??????EET??????GMT????????iso3166.tab??MST7MDT???PST8PDT?????WET
Asia/????????Egypt????GMT0???????Israel???????Navajo????right/??????W-SU
Atlantic/????Eire?????GMT-0??????Jamaica??????NZ????????ROC?????????zone.tab
Australia/???EST??????GMT+0??????Japan????????NZ-CHAT???ROK?????????Zulu
Brazil/??????EST5EDT??Greenwich??Kwajalein????Pacific/??Singapore
Canada/??????Etc/?????Hongkong???Libya????????Poland????Turkey
CET??????????Europe/??HST????????MET??????????Portugal??UCT
在這里面我們就可以找到自己所在城市的time?zone文件.?那么如果我們想查看對于每個time?zone當前的時間我們可以用zdump命令
代碼:
#?zdump?Hongkong
Hongkong??Fri?Jul??6?06:13:57?2007?HKT
?
那么我們又怎么來告訴系統我們所在time?zone是哪個呢??方法有很多,這里舉出兩種
第一個就是修改/etc/localtime這個文件,這個文件定義了我么所在的local?time?zone.
我們可以在/usr/share/zoneinfo下找到我們的time?zone文件然后拷貝去到/etc/localtimezone(或者做個symbolic?link)
?
假設我們現在的time?zone是BST(也就是英國的夏令時間,UTC+1)
代碼:
#?date
Thu?Jul??5?23:33:40?BST?2007我們想把time?zone換成上海所在的時區就可以這么做
代碼:
#?ln?-sf?/usr/share/zoneinfo/posix/Asia/Shanghai?/etc/localtime
#?date
Fri?Jul??6?06:35:52?CST?2007
這樣時區就改過來了(注意時間也做了相應的調整)
?
3.?Real?Time?Clock(RTC)?and?System?Clock
?
說道設置時間這里還要明確另外一個概念就是在一臺計算機上我們有兩個時鐘:一個稱之為硬件時間時鐘(RTC),還有一個稱之為系統時鐘(System?Clock)
?
硬件時鐘是指嵌在主板上的特殊的電路,?它的存在就是平時我們關機之后還可以計算時間的原因
系統時鐘就是操作系統的kernel所用來計算時間的時鐘.?它從1970年1月1日00:00:00?UTC時間到目前為止秒數總和的值?在Linux下系統時間在開機的時候會和硬件時間同步(synchronization),之后也就各自獨立運行了
?
那么既然兩個時鐘獨自運行,那么時間久了必然就會產生誤差了,下面我們來看一個例子
代碼:
#?date
Fri?Jul??6?00:27:13?BST?2007
#?hwclock?--show
Fri?06?Jul?2007?12:27:17?AM?BST??-0.968931?seconds
通過hwclock?--show?命令我們可以查看機器上的硬件時間(always?in?local?time?zone),?我們可以看到它和系統時間還是有一定的誤差的,?那么我們就需要把他們同步
?
如果我們想要把硬件時間設置成系統時間我們可以運行以下命令
代碼:
#?hwclock?--hctosys??
反之,我們也可以把系統時間設置成硬件時間
代碼:
#?hwclock?--systohc??
那么如果想設置硬件時間我們可以開機的時候在BIOS里設定.也可以用hwclock命令
代碼:
#?hwclock?--set?--date="mm/dd/yy?hh:mm:ss"??
如果想要修改系統時間那么用date命令就最簡單了
代碼:
#?date?-s?"dd/mm/yyyy?hh:mm:ss"??
?
現在我們知道了如何設置系統和硬件的時間.?但問題是如果這兩個時間都不準確了怎么辦??那么我們就需要在互聯網上找到一個可以提供我們準確時間的服務器然后通過一種協議來同步我們的系統時間,那么這個協議就是NTP了.?注意接下去我們所要說的同步就都是指系統時間和網絡服務器之間的同步了
?
一、NTP服務的簡介
NTP(Network?Time?Protocol,網絡時間協議)是用來使計算機時間同步化的一種協議,它可以使計算機對其服務器或時鐘源做同步化,它可以提供?高精準度的時間校正。
二、使用的端口
?默認NTP服務端口:
?UDP/123
本文配置的NTP工作模式:
?使用client/server方式,該方式適用于一臺時間服務器接收上層時間服務器的時間信息,并提供時間信息給下層用戶。
三、測試環境:
NTPserver:222.24.24.21
NTPclient:222.24.24.19
?
配置環境
關閉selinux:
?
vi?/etc/selinux/config
?
SELINUX=disabled
?
關閉iptables:
?
service?iptables?stop
?
chkconfig?iptables?off
?
四、安裝NTP軟件包
?
是否已經安裝了NTP包可以用這條命令來確定:
?
#?rpm?-qa?|?grep?ntp
ntp-4.2.2p1-9.el5_4.1
出現以上代碼則表示已安裝NTP包,否則用下面方法安裝:
代碼:
#?rpm?-ivh?ntp-4.2.2p1-5.el5.rpm?
或者用yum源安裝
yum?-y?install?ntp???/*yum安裝NTP服務*/
?
chkconfig?--add?ntpd??/*添加NTP*/
?
chkconfig?ntpd?on???/*開機自啟動NTP服務*/
要找到在互聯網上給我們提供同步服務的NTP?Server
http://www.pool.ntp.org是NTP的官方網站,在這上面我們可以找到離我們城市最近的NTP?Server.?NTP建議我們為了保障時間的準確性,最少找兩個個NTP?Server
那么比如在英國的話就可以選擇下面兩個服務器
0.uk.pool.ntp.org
1.uk.pool.ntp.org
它的一般格式都是number.country.pool.ntp.org【數字、國家、ntp服務器】
?
第二步要做的就是在打開NTP服務器之前先和這些服務器做一個同步,使得我們機器的時間盡量接近標準時間.
這里我們可以用ntpdate命令手動更新時間
代碼:
#?ntpdate?0.uk.pool.ntp.org
6?Jul?01:21:49?ntpdate[4528]:?step?time?server?213.222.193.35?offset?-38908.575181?sec
#?ntpdate?0.pool.ntp.org
6?Jul?01:21:56?ntpdate[4530]:?adjust?time?server?213.222.193.35?offset?-0.000065?sec
?
假如你的時間差的很離譜的話第一次會看到調整的幅度比較大,所以保險起見可以運行兩次.?那么為什么在打開NTP服務之前先要手動運行同步呢?
1.?因為根據NTP的設置,如果你的系統時間比正確時間要快的話那么NTP是不會幫你調整的,所以要么你把時間設置回去,要么先做一個手動同步
2.?當你的時間設置和NTP服務器的時間相差很大的時候,NTP會花上較長一段時間進行調整.所以手動同步可以減少這段時間
?
五、配置NTP服務
?
vi?/etc/ntp.conf
***************************************************************
?
#?For?more?information?about?this?file,?see?the?man?pages
#?ntp.conf(5),?ntp_acc(5),?ntp_auth(5),?ntp_clock(5),?ntp_misc(5),?ntp_mon(5).
?
driftfile?/var/lib/ntp/drift
restrict?default?ignore?設置默認策略為拒絕所有訪問方式的請求
#?Permit?time?synchronization?with?our?time?source,?but?do?not
#?permit?the?source?to?query?or?modify?the?service?on?this?system.
restrict?default?kod?nomodify?notrap?nopeer?noquery
restrict?-6?default?kod?nomodify?notrap?nopeer?noquery
?
#?Permit?all?access?over?the?loopback?interface.?This?could
#?be?tightened?as?well,?but?to?do?so?would?effect?some?of
#?the?administrative?functions.
restrict?127.0.0.1
restrict?-6?::1
?
#?Hosts?on?local?network?are?less?restricted.
restrict?192.168.1.0?mask?255.255.255.0?nomodify?notrap?允許局域網內機器同步時間
?
#?Use?public?servers?from?the?pool.ntp.org?project.
#?Please?consider?joining?the?pool?(http://www.pool.ntp.org/join.html).
server?0.rhel.pool.ntp.org?iburst
server?1.rhel.pool.ntp.org?iburst??#設置同步服務器
server?2.rhel.pool.ntp.org?iburst
server?3.rhel.pool.ntp.org?iburst
server?210.72.145.44??????????#這是中國國家授時中心的IP
server?0.uk.pool.ntp.org
server?1.uk.pool.ntp.org
?
#broadcast?192.168.1.255?autokey?#?broadcast?server
#broadcastclient?#?broadcast?client
#broadcast?224.0.1.1?autokey?#?multicast?server
#multicastclient?224.0.1.1?#?multicast?client
#manycastserver?239.255.254.254?#?manycast?server
#manycastclient?239.255.254.254?autokey?#?manycast?client
?
restrict?0.centos.pool.ntp.org?nomodify?notrap?noquery
restrict?1.centos.pool.ntp.org?nomodify?notrap?noquery?允許與上層服務器同步時間
restrict?2.centos.pool.ntp.org?nomodify?notrap?noquery
?
#?Undisciplined?Local?Clock.?This?is?a?fake?driver?intended?for?backup
#?and?when?no?outside?source?of?synchronized?time?is?available.
server?127.127.1.0?#?local?clock??#外界同步源無法聯系時,使用本地時間為同步服務
fudge?127.127.1.0?stratum?0?????#stratum??這行是時間服務器的層次。設為0則為頂級,如果要向別的NTP服務器更新時間,請不要把它設為0
?
#?Enable?public?key?cryptography.
#crypto
?
includefile?/etc/ntp/crypto/pw
?
#?Key?file?containing?the?keys?and?key?identifiers?used?when?operating
#?with?symmetric?key?cryptography.
keys?/etc/ntp/keys
?
#?Specify?the?key?identifiers?which?are?trusted.
#trustedkey?4?8?42
?
#?Specify?the?key?identifier?to?use?with?the?ntpdc?utility.
#requestkey?8
?
#?Specify?the?key?identifier?to?use?with?the?ntpq?utility.
#controlkey?8
?
#?Enable?writing?of?statistics?records.
#statistics?clockstats?cryptostats?loops
?
?
六.?查看NTP服務的運行狀況
?
現在我們已經啟動了NTP的服務,但是我們的系統時間到底和服務器同步了沒有呢??為此NTP提供了一個很好的查看工具:?ntpq?(NTP?query)
?
我建議大家在打開NTP服務器后就可以運行ntpq命令來監測服務器的運行.這里我們可以使用watch命令來查看一段時間內服務器各項數值的變化
代碼:
#?watch?ntpq?-p
Every?2.0s:?ntpq?-p??????????????????????????????????Sat?Jul??7?00:41:45?2007
?
?????remote???????????refid??????st?t?when?poll?reach???delay???offset??jitter
===========================================================
+193.60.199.75???193.62.22.98?????2?u???52???64??377????8.578???10.203?289.032
*mozart.musicbox?192.5.41.41??????2?u???54???64??377???19.301??-60.218?292.411
?
現在我就來解釋一下其中的含義
?
??remote:?它指的就是本地機器所連接的遠程NTP服務器
??????refid:?它指的是給遠程服務器(e.g.?193.60.199.75)提供時間同步的服務器
??????????st:?遠程服務器的層級別(stratum).?由于NTP是層型結構,有頂端的服務器,多層的Relay?Server再到客戶端.?所以服務器從高到低級別可以設定為1-16.?為了減緩負荷和網絡堵塞,原則上應該避免直接連接到級別為1的服務器的.
????????????t:?這個.....我也不知道啥意思^_^
????when:?我個人把它理解為一個計時器用來告訴我們還有多久本地機器就需要和遠程服務器進行一次時間同步
???????poll:?本地機和遠程服務器多少時間進行一次同步(單位為秒).?在一開始運行NTP的時候這個poll值會比較小,那樣和服務器同步的頻率也就增加了,可以盡快調整到正確的時間范圍.之后poll值會逐漸增大,同步的頻率也就會相應減小
????reach:?這是一個八進制值,用來測試能否和服務器連接.每成功連接一次它的值就會增加
????delay:?從本地機發送同步要求到服務器的round?trip?time
????offset:?這是個最關鍵的值,?它告訴了我們本地機和服務器之間的時間差別.?offset越接近于0,我們就和服務器的時間越接近
?????jitter:?這是一個用來做統計的值.?它統計了在特定個連續的連接數里offset的分布情況.?簡單地說這個數值的絕對值越小我們和服務器的時間就越精確
?
那么大家細心的話就會發現兩個問題:?第一我們連接的是0.uk.pool.ntp.org為什么和remote?server不一樣??第二那個最前面的+和*都是什么意思呢?
?
第一個問題不難理解,因為NTP提供給我們的是一個cluster?server所以每次連接的得到的服務器都有可能是不一樣.同樣這也告訴我們了在指定NTP?Server的時候應該使用hostname而不是IP
?
第二個問題和第一個相關,既然有這么多的服務器就是為了在發生問題的時候其他的服務器還可以正常地給我們提供服務.那么如何知道這些服務器的狀態呢??這就是第一個記號會告訴我們的信息
?
*?它告訴我們遠端的服務器已經被確認為我們的主NTP?Server,我們系統的時間將由這臺機器所提供
+?它將作為輔助的NTP?Server和帶有*號的服務器一起為我們提供同步服務.?當*號服務器不可用時它就可以接管
-?遠程服務器被clustering?algorithm認為是不合格的NTP?Server
x?遠程服務器不可用
?
了解這些之后我們就可以實時監測我們系統的時間同步狀況了
?
七.?NTP安全設置
?
運行一個NTP?Server不需要占用很多的系統資源,所以也不用專門配置獨立的服務器,就可以給許多client提供時間同步服務,?但是一些基本的安全設置還是很有必要的
那么這里一個很簡單的思路就是第一我們只允許局域網內一部分的用戶連接到我們的服務器.?第二個就是這些client不能修改我們服務器上的時間
?
關于權限設定部分
權限的設定主要以?restrict?這個參數來設定,主要的語法為:
restrict?IP地址?mask?子網掩碼?參數
其中?IP?可以是IP地址,也可以是?default?,default?就是指所有的IP
參數有以下幾個:
ignore :關閉所有的?NTP?聯機服務
nomodify:客戶端不能更改服務端的時間參數,但是客戶端可以通過服務端進行網絡校時。
notrust?:客戶端除非通過認證,否則該客戶端來源將被視為不信任子網
noquery?:不提供客戶端的時間查詢
注意:如果參數沒有設定,那就表示該?IP?(或子網)沒有任何限制!
?
在/etc/ntp.conf文件中我們可以用restrict關鍵字來配置上面的要求
?
首先我們對于默認的client拒絕所有的操作
代碼:
restrict?default?kod?nomodify?notrap?nopeer?noquery
?
然后允許本機地址一切的操作
代碼:
restrict?127.0.0.1
?
最后我們允許局域網內所有client連接到這臺服務器同步時間.但是拒絕讓他們修改服務器上的時間
代碼:
restrict?192.168.1.0?mask?255.255.255.0?nomodify
?
把這三條加入到/etc/ntp.conf中就完成了我們的簡單配置.?NTP還可以用key來做authentication,這里就不詳細介紹了
?
八.?NTP?client的設置
?
做到這里我們已經有了一臺自己的Relay?Server.如果我們想讓局域網內的其他client都進行時間同步的話那么我們就都應該照樣再搭建一臺Relay?Server,然后把所有的client都指向這兩臺服務器(注意不要把所有的client都指向Internet上的服務器).?只要在client的/etc/ntp.conf加上這你自己的服務器就可以了
代碼:
server?ntp1.leonard.com
server?ntp2.leonard.com
?
LINUX客戶端使用
ntpdate?172.30.218.114
來向NTP服務器同步自己的時間
其它LINUX如果僅作為只客戶端的話,則不能啟動ntpd服務!否則無法運行ntpdata?服務器地址?來同步時間
之后可以使用cron或修改crontab文件定期向NTP服務器更新時間,并用
#?hwclock?--systohc??
將系統時間設置為硬件時間
?
?九、一些補充和拾遺(挺重要)
?
1.?配置文件中的driftfile是什么?
我們每一個system?clock的頻率都有小小的誤差,這個就是為什么機器運行一段時間后會不精確.?NTP會自動來監測我們時鐘的誤差值并予以調整.但問題是這是一個冗長的過程,所以它會把記錄下來的誤差先寫入driftfile.這樣即使你重新開機以后之前的計算結果也就不會丟失了
?
2.?如何同步硬件時鐘?
NTP一般只會同步system?clock.?但是如果我們也要同步RTC(hwclock)的話那么只需要把下面的選項打開就可以了
代碼:
#?vi?/etc/sysconfig/ntpd
SYNC_HWCLOCK=yes
?
3、利用crontab讓LINUX?NTP定時更新時間
注:讓linux運行ntpdate更新時間時,linux不能開啟NTP服務,否則會提示端口被占用:如下
[root@ESXI?~]#?ntpdate?1.rhel.pool.ntp.org?????????????????????????????????
20?May?09:34:14?ntpdate[6747]:?the?NTP?socket?is?in?use,?exiting
?
crontab文件配置簡要說明
命令格式的前一部分是對時間的設定,后面一部分是要執行的命令。時間的設定我們有一定的約定,前面五個*號代表五個數字,數字的取值范圍和含義如下:
分鐘 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天
除了數字還有幾個個特殊的符號就是“*”、“/”和“-”、“,”,“*”代表所有的取值范圍內的數字,“/”代表每的意思,“*/5”表示每5個單位,“-”代表從某個數字到某個數字,“,”分開幾個離散的數字。以下舉幾個例子說明問題:
每天早上6點:
0?6?*?*?*??command
每兩個小時:
0?*/2?*?*?*??command
晚上11點到早上8點之間每兩個小時,早上八點:
0?23-7/2,8?*?*?*?command
每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點:
0?11?4?*?1-3?command
1月1日早上4點:
0?4?1?1?*?command
?
3.3、設置開機自動啟動服務
運行setup或其它服務設置工具,將crond服務勾選上
chkconfig?--level?2345?crond?on??定義在這幾個系統運行級別上啟用crond?(系統安裝完默認就是這個設置)
__________________________________________
?
十、.NTP客戶端的設置
?
一、LINUX做為客戶端自動同步時間
如果想定時進行時間校準,可以使用crond服務來定時執行。
編輯?/etc/crontab?文件
加入下面一行:
?
30?8?*?*?*?root?/usr/sbin/ntpdate?192.168.0.1;?/sbin/hwclock?-w??#192.168.0.1是NTP服務器的IP地址
然后重啟crond服務
service?crond?restart
這樣,每天?8:30?Linux?系統就會自動的進行網絡時間校準。
?
十一、WINDOWS?需要打開windows?time服務和RPC的二個服務
如果在打開windows?time?服務,時報?錯誤1058,進行下面操作
1.運行?cmd?進入命令行,然后鍵入
w32tm?/register??進行注冊
正確的響應為:W32Time?成功注冊。
?
2.如果上一步正確,用?net?start?"windows?time"?或?net?start?w32time?啟動服務。
?
十三、.其它造成無法成功更新的原因:
1、客戶端的日期必須要設置正確,不能超出正常時間24小時,不然會因為安全原因被拒絕更新。其次客戶端的時區必須要設置好,以確保不會更新成其它時區的時間。
2、fudge?127.127.1.0?stratum?10?如果是LINUX做為NTP服務器,stratum(層級)的值不能太大,如果要向上級NTP更新可以設成2
3、LINUX的NTP服務器必須記得將從上級NTP更新的時間從系統時間寫到硬件里去?hwclock?--systohc
?????NTP一般只會同步system?clock.?但是如果我們也要同步RTC(hwclock)的話那么只需要把下面的選項打開就可以了
??????代碼:
??????#?vi?/etc/sysconfig/ntpd
??????SYNC_HWCLOCK=yes
4、Linux如果開啟了NTP服務,則不能手動運行ntpdate更新時間(會報端口被占用),它只能根據/etc/ntp.conf?里server?字段后的服務器地址按一定時間間隔自動向上級NTP服務器更新時間。可以運行命令?ntpstat?查看每次更新間隔如:
[root@ESXI?~]#?ntpstat
synchronised?to?NTP?server?(210.72.145.44)?at?stratum?2????#本NTP服務器層次為2,已向210.72.145.44?NTP同步過
???time?correct?to?within?93?ms???????????????????????????????????????????????#時間校正到相差93ms之內
???polling?server?every?1024?s?????????????????????????????????????????????????#每1024秒會向上級NTP輪詢更新一次時間?
轉載于:https://www.cnblogs.com/mmdln/p/8989949.html
總結
 
                            
                        - 上一篇: ffmpeg 的下载安装
- 下一篇: 阜阳智慧城市建设居全国地市级城市第11位
