新聞中心
在我們的日常生活和工作中,時(shí)間的準(zhǔn)確性很重要。不管是在計(jì)算機(jī)網(wǎng)絡(luò)還是其他方面,時(shí)間的不準(zhǔn)確會(huì)導(dǎo)致嚴(yán)重的后果。而Linux系統(tǒng)中可以通過(guò)NTP協(xié)議來(lái)自動(dòng)校對(duì)時(shí)間,以保證時(shí)間的準(zhǔn)確。本文將。

一、NTP介紹
網(wǎng)絡(luò)時(shí)間協(xié)議(NTP)是一種用于計(jì)算機(jī)網(wǎng)絡(luò)的協(xié)議,用于同步世界各地計(jì)算機(jī)的時(shí)間。NTP是由David L. Mills于1985年開(kāi)發(fā)的,并于1989年被納入IEEE標(biāo)準(zhǔn)1733中。NTP可以通過(guò)網(wǎng)絡(luò)對(duì)計(jì)算機(jī)時(shí)鐘進(jìn)行校對(duì),使得時(shí)鐘準(zhǔn)確地同步于世界標(biāo)準(zhǔn)時(shí)間。
二、校對(duì)時(shí)間
在Linux系統(tǒng)中,可以使用ntpdate命令手動(dòng)校對(duì)時(shí)間。該命令通過(guò)與NTP服務(wù)器進(jìn)行通信,獲取當(dāng)前時(shí)間,并將系統(tǒng)時(shí)間調(diào)整為與NTP服務(wù)器一致。命令格式如下:
ntpdate [選項(xiàng)] [服務(wù)器地址]
其中,選項(xiàng)可以是以下參數(shù):
-a:使用adjtime()函數(shù)調(diào)整時(shí)間。
-b:后臺(tái)模式,使得ntpdate在后臺(tái)運(yùn)行。
-d:調(diào)試模式,輸出調(diào)試信息。
-e:使用settimeofday()函數(shù)調(diào)整時(shí)間。
-q:安靜模式,不輸出任何消息。
-t timeout:指定超時(shí)時(shí)間(單位為秒)。
-u:使用UTC時(shí)間。
服務(wù)器地址可以是NTP服務(wù)器的IP地址或域名。
三、安裝NTP服務(wù)
為了實(shí)現(xiàn)Linux系統(tǒng)自動(dòng)校對(duì)時(shí)間,可以使用NTP服務(wù)。NTP服務(wù)通過(guò)與NTP服務(wù)器進(jìn)行通信,自動(dòng)校對(duì)時(shí)間。在安裝NTP服務(wù)之前,需要安裝NTP客戶端??梢酝ㄟ^(guò)以下命令進(jìn)行安裝:
sudo apt-get install ntpdate
安裝完成之后,可以使用以下命令查看NTP客戶端版本:
ntpdate -v
接下來(lái)需要安裝NTP服務(wù)。可以使用以下命令進(jìn)行安裝:
sudo apt-get install ntp
安裝完成之后,可以使用以下命令查看NTP服務(wù)版本:
ntpdc -c version
四、配置NTP服務(wù)
NTP服務(wù)的配置文件為/etc/ntp.conf。打開(kāi)該配置文件,可以看到默認(rèn)配置如下:
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift
# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
# pool.ntp.org maps to more than 300 low-stratum NTP servers.
# Your server will pick a different set every time it starts up.
#Please consider joining the pool! ***
#***
#***
server 0.ubuntu.pool.ntp.org iburst
server 1.ubuntu.pool.ntp.org iburst
server 2.ubuntu.pool.ntp.org iburst
server 3.ubuntu.pool.ntp.org iburst
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# detls. The web page at http://support.ntp.org/bin/view/Support/AccessRestrictions
# might also be helpful.
#
# Note that “restrict” applies to both servers and clients, so a configuration
# that might be intended to block requests from certn clients could also end
# up blocking replies from your own upstream servers.
# By default, exchange time with everybody, but don’t allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
# Local users may interrogate the ntp server more closely.
#restrict 127.0.0.1
#restrict ::1
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
# If you want to provide time to your local subnet, change the next line.
# (Agn, the address is an example only.)
#broadcast 192.168.123.255
# If you want to listen to time broadcasts on your local subnet,
# de-comment the next lines. Please do this only if you trust everybody
# on the network!
#disable auth
#broadcastclient
將服務(wù)器配置修改為以下內(nèi)容:
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
配置完成后,需要重啟NTP服務(wù):
sudo service ntp restart
五、自動(dòng)校對(duì)時(shí)間
配置完成后,NTP服務(wù)會(huì)自動(dòng)校對(duì)時(shí)間??梢酝ㄟ^(guò)以下命令查看NTP服務(wù)器與本地時(shí)鐘的時(shí)間差:
ntpq -p
如果NTP服務(wù)未啟動(dòng)或未能成功同步時(shí)間,可以手動(dòng)校對(duì)時(shí)間:
sudo ntpdate pool.ntp.org
可以將該命令添加到cron定時(shí)任務(wù),實(shí)現(xiàn)定期自動(dòng)校對(duì)時(shí)間。
六、
在Linux系統(tǒng)中,使用NTP協(xié)議可以自動(dòng)校對(duì)時(shí)間,以保證時(shí)間的準(zhǔn)確。本文記錄了Linux系統(tǒng)中使用NTP校對(duì)時(shí)間的過(guò)程,包括手動(dòng)校對(duì)時(shí)間和安裝、配置NTP服務(wù)等內(nèi)容。通過(guò)使系統(tǒng)時(shí)間與NTP服務(wù)器同步,可以避免時(shí)間不準(zhǔn)確引起的問(wèn)題。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
linux系統(tǒng)上驗(yàn)證系統(tǒng)時(shí)間和ntp server的時(shí)間是否一致。
GMT/UTC/CST;/etc/localtime,/usr/share/zoneinfo/*時(shí)區(qū)文件,/etc/profile加TZ變量;硬件時(shí)間RTC,系統(tǒng)時(shí)間;date,hwclock,tzselect;ntp relay server;rpm –ivh ntp-*;ntpdate 0.uk.pool.ntp.org ;ntpq –p,watch ntpq –p;/etc/ntp.conf;/etc/init.d/ntpd start;chkconfig –level 35 ntpd on;service ntpd status;設(shè)置NTP服務(wù)器不難但是NTP本身是一個(gè)很復(fù)雜的協(xié)議.
1. 時(shí)間和時(shí)區(qū)
如果有人問(wèn)你說(shuō)現(xiàn)在幾點(diǎn)? 你看了看表回答他說(shuō)晚上8點(diǎn)了. 這樣回答看上去沒(méi)有什么問(wèn)題,但是如果問(wèn)你的這個(gè)人在歐洲的話那么你的回答就會(huì)讓他很疑惑,因?yàn)樗抢镞€太指皮陽(yáng)當(dāng)空呢.
這里就有產(chǎn)生了一個(gè)如何定義時(shí)間的問(wèn)題. 因?yàn)樵诘厍颦h(huán)繞太陽(yáng)旋轉(zhuǎn)的24個(gè)小時(shí)中,世界各地日出日落的時(shí)間是不一樣的.所以我們才有劃分時(shí)區(qū)(timezone) 的必要,也就是把全球劃分成24個(gè)不同的時(shí)區(qū). 所以我們滑仿可以把時(shí)間的定義理解為一個(gè)時(shí)間的值加上所在地的時(shí)區(qū)(注意這個(gè)所在地可以精確到城市)
地理課上我們都學(xué)過(guò)格林威治時(shí)間(GMT), 它也就是0時(shí)區(qū)時(shí)間. 但是我們?cè)谟?jì)算機(jī)中經(jīng)??吹降氖荱TC. 它是Coordinated Universal Time的簡(jiǎn)寫(xiě). 雖然可以認(rèn)為UTC和GMT的值相等(誤差相當(dāng)之小),但是UTC已經(jīng)被認(rèn)定為是國(guó)際標(biāo)準(zhǔn),所以我們都應(yīng)該遵守標(biāo)準(zhǔn)只使用UTC
那么假如現(xiàn)在中國(guó)當(dāng)?shù)氐臅r(shí)間是晚上8點(diǎn)的話,我們可以有下面兩種表示方式
20:00 CST
12:00 UTC
這里的CST是Chinese Standard Time,也就是我們通常所說(shuō)的北京時(shí)間了. 因?yàn)橹袊?guó)處在UTC+8時(shí)區(qū),依次類(lèi)推那么也就是12:00 UTC了.
為什么要說(shuō)這些呢?
之一,不管通過(guò)任何渠道我們想要同步系統(tǒng)的時(shí)間,通常提供方只會(huì)給出UTC+0的時(shí)間值而不會(huì)提供時(shí)區(qū)(因?yàn)樗恢滥阍谀睦?.所以當(dāng)我們?cè)O(shè)置系統(tǒng)時(shí)間的時(shí)候,設(shè)置好時(shí)區(qū)是首先要做的工作
第二唯讓差,很多國(guó)家都有夏令時(shí)(我記得小時(shí)候中國(guó)也實(shí)行過(guò)一次),那就是在一年當(dāng)中的某一天時(shí)鐘撥快一小時(shí)(比如從UTC+8一下變成UTC+9了),那么同理到時(shí)候還要再撥慢回來(lái).如果我們?cè)O(shè)置了正確的時(shí)區(qū),當(dāng)需要改變時(shí)間的時(shí)候系統(tǒng)就會(huì)自動(dòng)替我們調(diào)整
現(xiàn)在我們就來(lái)看一下如何在Linux下設(shè)置時(shí)區(qū),也就是time zone
2. 如何設(shè)置Linux Time Zone
在Linux下glibc提供了事先編譯好的許多timezone文件, 他們就放在/usr/share/zoneinfo這個(gè)目錄下,這里基本涵蓋了大部分的國(guó)家和城市 # ls -F /usr/share/zoneinfo/
Africa/ Chile/ Factory Iceland Mexico/ posix/ Universal
America/ CST6CDT GBIndian/ Mideast/ posixrules US/
Antarctica/ Cuba GB-Eire IranMSTPRCUTC
Arctic/ EET GMTiso3166.tab MST7MDT PST8PDT WET
Asia/Egypt GMTIsraelNavajo right/ W-SU
Atlantic/ Eire GMTJamaica NZROCzone.tab
Australia/ EST GMT+JapanNZ-CHAT ROKZulu
Brazil/ EST5EDT Greenwich Kwajalein Pacific/ Singapore
Canada/ Etc/ Hongkong LibyaPoland Turkey
CETEurope/ HSTMETPortugal UCT 在這里面我們就可以找到自己所在城市的time zone文件. 那么如果我們想查看對(duì)于每個(gè)time zone當(dāng)前的時(shí)間我們可以用zdump命令 # zdump Hongkong
Hongkong Fri Jul 6 06:13:HKT 那么我們又怎么來(lái)告訴系統(tǒng)我們所在time zone是哪個(gè)呢? 方法有很多,這里舉出兩種
之一個(gè)就是修改/etc/localtime這個(gè)文件,這個(gè)文件定義了我么所在的local time zone.
我們可以在/usr/share/zoneinfo下找到我們的time zone文件然后拷貝去到/etc/localtimezone(或者做個(gè)symbolic link)
假設(shè)我們現(xiàn)在的time zone是BST(也就是英國(guó)的夏令時(shí)間,UTC+1) # date
Thu Jul 5 23:33:40 BST 2023我們想把time zone換成上海所在的時(shí)區(qū)就可以這么做# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# date
Fri Jul 6 06:35:52 CST 2023這樣時(shí)區(qū)就改過(guò)來(lái)了(注意時(shí)間也做了相應(yīng)的調(diào)整)
第二種方法也就設(shè)置TZ環(huán)境變量的值. 許多程序和命令都會(huì)用到這個(gè)變量的值. TZ的值可以有多種格式,最簡(jiǎn)單的設(shè)置方法就是使用tzselect命令 # tzselect
… You can make this change permanent for yourself by appending the line
TZ=’Asia/Hong_Kong’; (permission denied?) export TZ
to the file ‘.profile’ in your home directory; then log out and log in again. TZ變量的值會(huì)override /etc/localtime. 也就是說(shuō)當(dāng)TZ變量沒(méi)有定義的時(shí)候系統(tǒng)才使用/etc/localtime來(lái)確定time zone. 所以你想永久修改time zone的話那么可以把TZ變量的設(shè)置寫(xiě)入/etc/profile里 3. Real Time Clock(RTC) and System Clock
說(shuō)道設(shè)置時(shí)間這里還要明確另外一個(gè)概念就是在一臺(tái)計(jì)算機(jī)上我們有兩個(gè)時(shí)鐘:一個(gè)稱(chēng)之為硬件時(shí)間時(shí)鐘(RTC),還有一個(gè)稱(chēng)之為系統(tǒng)時(shí)鐘(System Clock)
硬件時(shí)鐘是指嵌在主板上的特殊的電路, 它的存在就是平時(shí)我們關(guān)機(jī)之后還可以計(jì)算時(shí)間的原因
系統(tǒng)時(shí)鐘就是操作系統(tǒng)的kernel所用來(lái)計(jì)算時(shí)間的時(shí)鐘. 它從1970年1月1日00:00:00 UTC時(shí)間到目前為止秒數(shù)總和的值 在Linux下系統(tǒng)時(shí)間在開(kāi)機(jī)的時(shí)候會(huì)和硬件時(shí)間同步(synchronization),之后也就各自獨(dú)立運(yùn)行了
那么既然兩個(gè)時(shí)鐘獨(dú)自運(yùn)行,那么時(shí)間久了必然就會(huì)產(chǎn)生誤差了,下面我們來(lái)看一個(gè)例子# date
Fri Jul 6 00:27:13 BST 2023 # hwclock –help
hwclock – query and set the hardware clock (RTC) Usage: hwclock Functions:
–helpshow this help
–showread hardware clock and print result
–setset the rtc to the time given with –date
–hctosys set the system time from the hardware clock
–systohc set the hardware clock to the current system time
–adjust adjust the rtc to account for systematic drift since
the clock was last set or adjusted
–getepoch print out the kernel’s hardware clock epoch value
–setepoch set the kernel’s hardware clock epoch value to the
value given with –epoch
–version print out the version of hwclock to stdoutOptions:
–utcthe hardware clock is kept in coordinated universal time
–localtime the hardware clock is kept in local time
–directisa access the ISA bus directly instead of /dev/rtc
–badyear ignore rtc’s year because the bios is broken
–datespecifies the time to which to set the hardware clock
–epoch=year specifies the year which is the beginning of the
hardware clock’s epoch value
–noadjfile do not access /etc/adjtime. Requires the use of
either –utc or –localtime# hwclock –show
Fri 06 Jul:27:17 AM BST -0.seconds通過(guò)hwclock –show命令我們可以查看機(jī)器上的硬件時(shí)間(always in local time zone), 我們可以看到它和系統(tǒng)時(shí)間還是有一定的誤差的, 那么我們就需要把他們同步
# hwclock –hctosys 把硬件時(shí)間設(shè)置成系統(tǒng)時(shí)間 # hwclock –systohc 把系統(tǒng)時(shí)間設(shè)置成硬件時(shí)間# hwclock –set –date=”mm/dd/yy hh:mm:ss” 設(shè)置硬件時(shí)間我們可以開(kāi)機(jī)的時(shí)候在BIOS里設(shè)定.也可以用hwclock命令# date -s “dd/mm/yyyy hh:mm:ss” 修改系統(tǒng)時(shí)間用date命令就最簡(jiǎn)單了現(xiàn)在我們知道了如何設(shè)置系統(tǒng)和硬件的時(shí)間. 但問(wèn)題是如果這兩個(gè)時(shí)間都不準(zhǔn)確了怎么辦? 那么我們就需要在互聯(lián)網(wǎng)上找到一個(gè)可以提供我們準(zhǔn)確時(shí)間的服務(wù)器然后通過(guò)一種協(xié)議來(lái)同步我們的系統(tǒng)時(shí)間,那么這個(gè)協(xié)議就是NTP了. 接下去我們所要說(shuō)的同步就都是指系統(tǒng)時(shí)間和網(wǎng)絡(luò)服務(wù)器之間的同步了 4. 設(shè)置NTP Server前的準(zhǔn)備
其實(shí)這個(gè)標(biāo)題應(yīng)該改為設(shè)置”NTP Relay Server”前的準(zhǔn)備更加合適. 因?yàn)椴徽撐覀兊挠?jì)算機(jī)配置多好運(yùn)行時(shí)間久了都會(huì)產(chǎn)生誤差,所以不足以給互聯(lián)網(wǎng)上的其他服務(wù)器做NTP Server. 真正能夠精確地測(cè)算時(shí)間的還是原子鐘. 但由于原子鐘十分的昂貴,只有少部分組織擁有, 他們連接到計(jì)算機(jī)之后就成了一臺(tái)真正的NTP Server. 而我們所要做的就是連接到這些服務(wù)器上同步我們系統(tǒng)的時(shí)間,然后把我們自己的服務(wù)器做成NTP Relay Server再給互聯(lián)網(wǎng)或者是局域網(wǎng)內(nèi)的用戶提供同步服務(wù). 1). 架設(shè)一個(gè)NTP Relay Server其實(shí)非常簡(jiǎn)單,我們先把需要的RPM包裝上 # rpm -ivh ntp-4.2.2p1-5.el5.rpm2).找到在互聯(lián)網(wǎng)上給我們提供同步服務(wù)的NTP Server ,
是NTP的官方網(wǎng)站,在這上面我們可以找到離我們城市最近的NTP Server. NTP建議我們?yōu)榱吮U蠒r(shí)間的準(zhǔn)確性,最少找兩個(gè)個(gè)NTP Server
那么比如在英國(guó)的話就可以選擇下面兩個(gè)服務(wù)器
0.uk.pool.ntp.org
1.uk.pool.ntp.org
它的一般格式都是number.country.pool.ntp.org中國(guó)的ntp服務(wù)器地址:server 133.100.11.8 prefer
server 210.72.145.44
server 203.117.180.36
server 131.107.1.10
server time.asia.apple.com
server 64.236.96.53
server 130.149.17.21
server 66.92.68.246
server
www.freebsd.org
server 18.145.0.30
server clock.via.net
server 137.92.140.80
server 133.100.9.2
server 128.118.46.3
server ntp.nasa.gov
server 129.7.1.66
server ntp-sop.inria.frserver (國(guó)家授時(shí)中心服務(wù)器IP地址)3).在打開(kāi)NTP服務(wù)器之前先和這些服務(wù)器做一個(gè)同步,使得我們機(jī)器的時(shí)間盡量接近標(biāo)準(zhǔn)時(shí)間. 這里我們可以用ntpdate命令 # ntpdate 0.uk.pool.ntp.org
6 Jul 01:21:49 ntpdate: step time server 213.222.193.35 offset.sec
# ntpdate 0.pool.ntp.org
6 Jul 01:21:56 ntpdate: adjust time server 213.222.193.35 offset -0.sec 假如你的時(shí)間差的很離譜的話之一次會(huì)看到調(diào)整的幅度比較大,所以保險(xiǎn)起見(jiàn)可以運(yùn)行兩次. 那么為什么在打開(kāi)NTP服務(wù)之前先要手動(dòng)運(yùn)行同步呢?
1. 因?yàn)楦鶕?jù)NTP的設(shè)置,如果你的系統(tǒng)時(shí)間比正確時(shí)間要快的話那么NTP是不會(huì)幫你調(diào)整的,所以要么你把時(shí)間設(shè)置回去,要么先做一個(gè)手動(dòng)同步
2. 當(dāng)你的時(shí)間設(shè)置和NTP服務(wù)器的時(shí)間相差很大的時(shí)候,NTP會(huì)花上較長(zhǎng)一段時(shí)間進(jìn)行調(diào)整.所以手動(dòng)同步可以減少這段時(shí)間5. 配置和運(yùn)行NTP Server
現(xiàn)在我們就來(lái)創(chuàng)建NTP的配置文件了, 它就是/etc/ntp.conf. 我們只需要加入上面的NTP Server和一個(gè)driftfile就可以了 # vi /etc/ntp.conf
server 0.uk.pool.ntp.org
server 1.uk.pool.ntp.org
driftfile /var/lib/ntp/ntp.drift非常的簡(jiǎn)單. 接下來(lái)我們就啟動(dòng)NTP Server,并且設(shè)置其在開(kāi)機(jī)后自動(dòng)運(yùn)行# /etc/init.d/ntpd start
# chkconfig –level 35 ntpd on6. 查看NTP服務(wù)的運(yùn)行狀況
現(xiàn)在我們已經(jīng)啟動(dòng)了NTP的服務(wù),但是我們的系統(tǒng)時(shí)間到底和服務(wù)器同步了沒(méi)有呢? 為此NTP提供了一個(gè)很好的查看工具: ntpq (NTP query)
我建議大家在打開(kāi)NTP服務(wù)器后就可以運(yùn)行ntpq命令來(lái)監(jiān)測(cè)服務(wù)器的運(yùn)行.這里我們可以使用watch命令來(lái)查看一段時(shí)間內(nèi)服務(wù)器各項(xiàng)數(shù)值的變化 # watch ntpq -p
Every 2.0s: ntpq -p Sat Jul 7 00:41:
remoterefid st t when poll reach delay offset jitter
==============================================================================
+193.60.199..62.22.u 8…032
*mozart.musicbox 192.5.41.u 19…411 現(xiàn)在我就來(lái)解釋一下其中的含義
remote: 它指的就是本地機(jī)器所連接的遠(yuǎn)程N(yùn)TP服務(wù)器
refid: 它指的是給遠(yuǎn)程服務(wù)器(e.g. 193.60.199.75)提供時(shí)間同步的服務(wù)器
st: 遠(yuǎn)程服務(wù)器的級(jí)別. 由于NTP是層型結(jié)構(gòu),有頂端的服務(wù)器,多層的Relay Server再到客戶端. 所以服務(wù)器從高到低級(jí)別可以設(shè)定為1-16. 為了減緩負(fù)荷和網(wǎng)絡(luò)堵塞,原則上應(yīng)該避免直接連接到級(jí)別為1的服務(wù)器的.
t: 這個(gè)…..我也不知道啥意思^_^
when: 我個(gè)人把它理解為一個(gè)計(jì)時(shí)器用來(lái)告訴我們還有多久本地機(jī)器就需要和遠(yuǎn)程服務(wù)器進(jìn)行一次時(shí)間同步
poll: 本地機(jī)和遠(yuǎn)程服務(wù)器多少時(shí)間進(jìn)行一次同步(單位為秒). 在一開(kāi)始運(yùn)行NTP的時(shí)候這個(gè)poll值會(huì)比較小,那樣和服務(wù)器同步的頻率也就增加了,可以盡快調(diào)整到正確的時(shí)間范圍.之后poll值會(huì)逐漸增大,同步的頻率也就會(huì)相應(yīng)減小
reach: 這是一個(gè)八進(jìn)制值,用來(lái)測(cè)試能否和服務(wù)器連接.每成功連接一次它的值就會(huì)增加
delay: 從本地機(jī)發(fā)送同步要求到服務(wù)器的round trip time
offset: 這是個(gè)最關(guān)鍵的值, 它告訴了我們本地機(jī)和服務(wù)器之間的時(shí)間差別. offset越接近于0,我們就和服務(wù)器的時(shí)間越接近
jitter: 這是一個(gè)用來(lái)做統(tǒng)計(jì)的值. 它統(tǒng)計(jì)了在特定個(gè)連續(xù)的連接數(shù)里offset的分布情況. 簡(jiǎn)單地說(shuō)這個(gè)數(shù)值的絕對(duì)值越小我們和服務(wù)器的時(shí)間就越精確
那么大家細(xì)心的話就會(huì)發(fā)現(xiàn)兩個(gè)問(wèn)題: 之一我們連接的是0.uk.pool.ntp.org為什么和remote server不一樣? 第二那個(gè)最前面的+和*都是什么意思呢?
之一個(gè)問(wèn)題不難理解,因?yàn)镹TP提供給我們的是一個(gè)cluster server所以每次連接的得到的服務(wù)器都有可能是不一樣.同樣這也告訴我們了在指定NTP Server的時(shí)候應(yīng)該使用hostname而不是IP
第二個(gè)問(wèn)題和之一個(gè)相關(guān),既然有這么多的服務(wù)器就是為了在發(fā)生問(wèn)題的時(shí)候其他的服務(wù)器還可以正常地給我們提供服務(wù).那么如何知道這些服務(wù)器的狀態(tài)呢? 這就是之一個(gè)記號(hào)會(huì)告訴我們的信息
*
它告訴我們遠(yuǎn)端的服務(wù)器已經(jīng)被確認(rèn)為我們的主NTP Server,我們系統(tǒng)的時(shí)間將由這臺(tái)機(jī)器所提供
+
它將作為輔助的NTP Server和帶有*號(hào)的服務(wù)器一起為我們提供同步服務(wù). 當(dāng)*號(hào)服務(wù)器不可用時(shí)它就可以接管
–
遠(yuǎn)程服務(wù)器被clustering algorithm認(rèn)為是不合格的NTP Server
x
遠(yuǎn)程服務(wù)器不可用
了解這些之后我們就可以實(shí)時(shí)監(jiān)測(cè)我們系統(tǒng)的時(shí)間同步狀況了7. NTP安全設(shè)置
運(yùn)行一個(gè)NTP Server不需要占用很多的系統(tǒng)資源,所以也不用專(zhuān)門(mén)配置獨(dú)立的服務(wù)器,就可以給許多client提供時(shí)間同步服務(wù), 但是一些基本的安全設(shè)置還是很有必要的
那么這里一個(gè)很簡(jiǎn)單的思路就是之一我們只允許局域網(wǎng)內(nèi)一部分的用戶連接到我們的服務(wù)器. 第二個(gè)就是這些client不能修改我們服務(wù)器上的時(shí)間
在/etc/ntp.conf文件中我們可以用restrict關(guān)鍵字來(lái)配置上面的要求
首先我們對(duì)于默認(rèn)的client拒絕所有的操作 restrict default kod nomodify notrap nopeer noquery
然后允許本機(jī)地址一切的操作restrict 127.0.0.1
最后我們?cè)试S局域網(wǎng)內(nèi)所有client連接到這臺(tái)服務(wù)器同步時(shí)間.但是拒絕讓他們修改服務(wù)器上的時(shí)間restrict 192.168.1.0 mask 255.255.255.0 nomodify
把這三條加入到/etc/ntp.conf中就完成了我們的簡(jiǎn)單配置. NTP還可以用key來(lái)做authenticaiton,這里就不詳細(xì)介紹了8. NTP client的設(shè)置
做到這里我們已經(jīng)有了一臺(tái)自己的Relay Server.如果我們想讓局域網(wǎng)內(nèi)的其他client都進(jìn)行時(shí)間同步的話那么我們就都應(yīng)該照樣再搭建一臺(tái)Relay Server,然后把所有的client都指向這兩臺(tái)服務(wù)器(注意不要把所有的client都指向Internet上的服務(wù)器). 只要在client的ntp.conf加上這你自己的服務(wù)器就可以了 代碼:
server ntp1.leonard.com
server ntp2.leonard.com
9. 一些補(bǔ)充和拾遺
1. 配置文件中的driftfile是什么?
我們每一個(gè)system clock的頻率都有小小的誤差,這個(gè)就是為什么機(jī)器運(yùn)行一段時(shí)間后會(huì)不精確. NTP會(huì)自動(dòng)來(lái)監(jiān)測(cè)我們時(shí)鐘的誤差值并予以調(diào)整.但問(wèn)題是這是一個(gè)冗長(zhǎng)的過(guò)程,所以它會(huì)把記錄下來(lái)的誤差先寫(xiě)入driftfile.這樣即使你重新開(kāi)機(jī)以后之前的計(jì)算結(jié)果也就不會(huì)丟失了
2. 如何同步硬件時(shí)鐘?
NTP一般只會(huì)同步system clock. 但是如果我們也要同步RTC的話那么只需要把下面的選項(xiàng)打開(kāi)就可以了 可以通過(guò)ps –ef |grep ntp或者使用pgrep –lf ntp查看一下你的ntp服務(wù)是否啟動(dòng)了。然后可以通過(guò)snoop命令進(jìn)行ntp的檢測(cè)。
Snoop |grep –i ntp進(jìn)行檢測(cè)。
在建立好ntp服務(wù)以后,可以用2個(gè)工具命令對(duì)ntp服務(wù)進(jìn)行管理。
一個(gè)是ntpq是一個(gè)交互式應(yīng)用命令,在它的下面有很多的子命令可以供大家使用.使用peers可以查看同步進(jìn)程。如果還需要其他的命令可以輸入help 進(jìn)行查看。還有一個(gè)工具命令是ntpdate這個(gè)命令一般用于ntp的客戶端使用??梢栽?var/adm/messages中看到ntp的同步信息的情況。如果需要更加詳細(xì)的ntpq和ntpdate的信息可以使用man幫助進(jìn)行查詢(xún)。
ntp -s pool.ntp.org
怎么測(cè)試linux下搭建的ntp服務(wù)器
三、什么是NTP
為了實(shí)現(xiàn)時(shí)間同步,我們就洞塌需要用戶NTP(Network Time Protocol)這個(gè)協(xié)議。如圖1所示。簡(jiǎn)單地說(shuō),NTP是用來(lái)使系統(tǒng)和一個(gè)精確的時(shí)間源保持時(shí)間同步的協(xié)議。筆者建議管理員更好在自己管理的網(wǎng)絡(luò)中建立至少一臺(tái)時(shí)間服務(wù)器來(lái)同步本地時(shí)間。
如 果在一個(gè)公司的局域網(wǎng)中,逗臘如果讓每個(gè)員工通過(guò)手動(dòng)的方式每隔一段時(shí)間去校準(zhǔn)時(shí)間,不但不利于管理,而且校準(zhǔn)目標(biāo)時(shí)間源也不一定準(zhǔn)確。公司局域網(wǎng)絡(luò)中不同計(jì) 算機(jī)的時(shí)間偏差尤其是客戶機(jī)/服務(wù)器之間的時(shí)間偏差,就會(huì)對(duì)一些要求時(shí)間同步的服務(wù)產(chǎn)生影響。比如,為了管理方便,服務(wù)器設(shè)置了一到下班時(shí)間便 賬號(hào)過(guò)期,用戶無(wú)法訪問(wèn)Internet網(wǎng)絡(luò)。而如果你的電腦時(shí)間與服務(wù)器的時(shí)間不同步,當(dāng)你為你下班時(shí)間未到,正準(zhǔn)備發(fā)送郵件時(shí),或許在服務(wù)器的時(shí)間 上,你的賬號(hào)便過(guò)期了,從而導(dǎo)到無(wú)法發(fā)送郵件。解決這種問(wèn)題的方法很簡(jiǎn)單,就是建立一個(gè)能提供精確時(shí)間的服務(wù)器,局域網(wǎng)內(nèi)的所有電腦統(tǒng)一通過(guò)這臺(tái)時(shí)間服務(wù) 器進(jìn)行時(shí)間同步、校準(zhǔn)。
四、NTP服務(wù)器安裝
現(xiàn)在,我們就來(lái)介紹一下,如何在Linux系統(tǒng)下,建立一個(gè)NTP服務(wù)器吧。在本文中,我們采用的是Fedora 2操作系統(tǒng)作為例子 (其它版本Linux也可以,系統(tǒng)的配置類(lèi)似)。
使用 RPM 安裝
首先輸入如下指令
rpm -q ntp
查詢(xún)本機(jī)是否安裝了NTP軟件包。如果沒(méi)有安裝的話,找到您的 Linux 的安裝光盤(pán),mount 上后,查找以NTP開(kāi)頭的軟件包名,然后安裝上去,就可以了!
rpm –ivh ntp-4.1.2-5.i386.rpm
五、NTP服務(wù)的設(shè)置
1.NTP軟件包的結(jié)構(gòu)
NTP服務(wù)的配置文件:
/etc/ntp.conf :這個(gè)是 NTP 服務(wù)的主要配置文件,不同的Linux版本文件所在的目錄可能會(huì)不同!
與NTP服務(wù)有關(guān)的Linux 系統(tǒng)文件及目錄:
/usr/share/zoneinfo:這是個(gè)目錄,在這個(gè)目錄下是規(guī)定了各主要時(shí)區(qū)的時(shí)間設(shè)定文件,例如中國(guó)大陸地區(qū)的時(shí)區(qū)設(shè)置文件是 /usr/share/zoneinfo/Asia/Shanghai 。
/etc /sysconfig/clock:這個(gè)文件是Linux 的主要時(shí)區(qū)設(shè)定文件。每次啟動(dòng)后,Linux 會(huì)自動(dòng)讀取這個(gè)文件來(lái)設(shè)定系統(tǒng)預(yù)設(shè)要顯示的時(shí)間!比如這個(gè)文件內(nèi)容為“ZONE=Asia/Shanghai”,這表示我們的時(shí)間設(shè)定使用 /usr/share/zoneinfo/Asia/Shanghai 這個(gè)文件!
/etc/localtime:這個(gè)文件是本地系 統(tǒng)的時(shí)間設(shè)定文件! 假設(shè)clock 文件里面規(guī)定了使用的時(shí)間設(shè)定文件為 /usr/share/zoneinfo/Asia/Shanghai, Linux 系統(tǒng)就會(huì)將 Shanghai那個(gè)文件復(fù)制一份為 /etc/localtime ,所以系統(tǒng)納指圓的時(shí)間顯示就會(huì)以 Shanghai 那個(gè)時(shí)間設(shè)定文件為準(zhǔn)。假設(shè)這臺(tái)主機(jī)到了美國(guó)紐約,您只要將 /etc/sysconfig/clock 里面的ZONE 設(shè)定成為ZONE=”America/New_York” 并且將/usr/share/zoneinfo/America/New_York復(fù)制成為 /etc/localtime ,其它什么設(shè)置都不需要改動(dòng),系統(tǒng)的顯示時(shí)間就是美國(guó)紐約當(dāng)?shù)氐臅r(shí)間了!
與 NTP 及系統(tǒng)時(shí)間有關(guān)的執(zhí)行文件:
/bin/date: Linux 系統(tǒng)上面的日期與時(shí)間修改及輸出命令。
/in /hwclock:因?yàn)橹鳈C(jī)的 BIOS 時(shí)間與 Linux 系統(tǒng)時(shí)間是分開(kāi)的,所以使用 date 這個(gè)指令調(diào)整了時(shí)間之后,只是調(diào)整了linux的系統(tǒng)時(shí)間,還需要使用 hwclock 才能將修改過(guò)后的時(shí)間寫(xiě)入 BIOS。這個(gè)命令必須root用戶才能執(zhí)行 。
/usr/in/ntpd:NTP服務(wù)的守護(hù)進(jìn)程文件,需要啟動(dòng)它才能提供NTP服務(wù)。
/usr/in/ntpdate:NTP客戶端用來(lái)連接NTP服務(wù)器命令文件。
2.NTP服務(wù)端的設(shè)置
編輯 /etc/ntp.conf 文件
關(guān)于權(quán)限設(shè)定部分
權(quán)限的設(shè)定主要以 restrict 這個(gè)參數(shù)來(lái)設(shè)定,主要的語(yǔ)法為:
restrict IP地址 mask 子網(wǎng)掩碼 參數(shù)
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
參數(shù)有以下幾個(gè):
ignore :關(guān)閉所有的 NTP 聯(lián)機(jī)服務(wù)
nomodify:客戶端不能更改服務(wù)端的時(shí)間參數(shù),但是客戶端可以通過(guò)服務(wù)端進(jìn)行網(wǎng)絡(luò)校時(shí)。
notrust :客戶端除非通過(guò)認(rèn)證,否則該客戶端來(lái)源將被視為不信任子網(wǎng)
noquery :不提供客戶端的時(shí)間查詢(xún)
注意:如果參數(shù)沒(méi)有設(shè)定,那就表示該 IP (或子網(wǎng))沒(méi)有任何限制!
上級(jí)時(shí)間服務(wù)器的設(shè)定
由于我們配置的NTP 服務(wù)器需要網(wǎng)絡(luò)上面時(shí)間比較準(zhǔn)確的NTP服務(wù)器來(lái)更新自己的時(shí)間,所以在我們的 NTP 服務(wù)器上面要配置一部上級(jí)時(shí)間服務(wù)器來(lái)進(jìn)行校準(zhǔn)!在 Internet 上面提供了許多時(shí)間服務(wù)器,從下面地址找一個(gè)離你最近的
用server這個(gè)參數(shù)設(shè)定上級(jí)時(shí)間服務(wù)器,語(yǔ)法為:
server IP地址或域名
IP地址或域名就是我們指定的上級(jí)時(shí)間服務(wù)器,如果 Server 參數(shù)最后加上 prefer,表示我們的 NTP 服務(wù)器主要以該部主機(jī)時(shí)間進(jìn)行校準(zhǔn)。
解決NTP服務(wù)器校準(zhǔn)時(shí)間時(shí)的傳送延遲
使用driftfile參數(shù)設(shè)置:
driftfile 文件名
在與上級(jí)時(shí)間服務(wù)器聯(lián)系時(shí)所花費(fèi)的時(shí)間,記錄在driftfile參數(shù)后面的文件內(nèi)。
注意: driftfile 后面接的文件需要使用完整的路徑文件名,不能是鏈接文件,并且文件的權(quán)限需要設(shè)定成 ntpd守護(hù)進(jìn)程可以寫(xiě)入。
ntp.conf文件舉例:
設(shè)置要求:不對(duì) Internet 提供服務(wù),僅對(duì)內(nèi)部子網(wǎng) 192.168.0.0/24 提供服務(wù),NTP 服務(wù)器的上級(jí)時(shí)間主機(jī)為:clock.nc.fukuoka-u.ac.jp和ntp.nasa.gov,內(nèi)部子網(wǎng)的客戶端不能修改NTP服務(wù)器的時(shí)間參數(shù)。
在ntp.conf中增加以下內(nèi)容:
restrict default ignore # 關(guān)閉所有的 NTP 要求封包
restrict 127.0.0.1 # 開(kāi)啟內(nèi)部遞歸網(wǎng)絡(luò)接口 lo
restrict 192.168.0.0 mask 255.255.255.0 nomodify #在內(nèi)部子網(wǎng)里面的客戶端可以 進(jìn)行網(wǎng)絡(luò)校時(shí),但不能修改NTP服務(wù)器的時(shí)間參數(shù)。
server 133.100.9.2 prefer #用133.100.9.2做上級(jí)時(shí)間服務(wù)器
server 198.123.30.132 #198.123.30.132作為上級(jí)時(shí)間服務(wù)器參考
restrict 133.100.9.2 #開(kāi)放server 訪問(wèn)我們ntp服務(wù)的權(quán)限
restrict 198.123.30.132
driftfile /var/lib/ntp/drift
保存退出后。啟動(dòng)NTP服務(wù)
service ntpd start
如果想每次系統(tǒng)啟動(dòng),NTP服務(wù)自動(dòng)啟動(dòng),請(qǐng)輸入下面命令: chkconfig -level 35 ntpd on 注意:
1.NTP服務(wù)的端口是123,使用的是udp協(xié)議,所以NTP服務(wù)器的防火墻必須對(duì)外開(kāi)放udp 123這個(gè)端口。
2.Ntpd啟動(dòng)的時(shí)候通常需要一段時(shí)間進(jìn)行時(shí)間同步,所以在ntpd剛剛啟動(dòng)的時(shí)候還不能正常提供時(shí)鐘服務(wù),最長(zhǎng)大概有5分鐘吧,如果超過(guò)了這個(gè)時(shí)間請(qǐng)檢查一下您的配置文件。
六、NTP客戶端的使用
Linux系統(tǒng)
在Linux 上面進(jìn)行網(wǎng)絡(luò)校時(shí)非常簡(jiǎn)單,執(zhí)行 ntpdate 即可:
ntpdate 192.168.0.1 #192.168.0.1是NTP服務(wù)器的IP
不要忘了使用hwclock命令,把時(shí)間寫(xiě)入bios
hwclock -w
如果想定時(shí)進(jìn)行時(shí)間校準(zhǔn),可以使用crond服務(wù)來(lái)定時(shí)執(zhí)行。
編輯 /etc/crontab 文件
加入下面一行:
* * * root /usr/in/ntpdate 192.168.0.1; /in/hwclock -w #192.168.0.1是NTP服務(wù)器的IP地址
然后重啟crond服務(wù)
service crond restart
這樣,每天 8:30 Linux 系統(tǒng)就會(huì)自動(dòng)的進(jìn)行網(wǎng)絡(luò)時(shí)間校準(zhǔn)。
Windows 系統(tǒng)
在 Windows XP上面使用NTP進(jìn)行時(shí)間校準(zhǔn)也很簡(jiǎn)單:
雙擊桌面任務(wù)欄上的時(shí)間,彈出“日期和時(shí)間”屬性窗口,如圖所示:
選擇Internet時(shí)間,在服務(wù)器中填入你的NTP服務(wù)器的IP地址或者域名,然后點(diǎn)擊立即更新,您的系統(tǒng)時(shí)間就會(huì)立即更新。如果想定時(shí)更新,把左上角的自動(dòng)與Internet時(shí)間服務(wù)器同步選中,然后點(diǎn)擊右下角的應(yīng)用即可。
yy-2-3.tif
如 果不是Windows XP系統(tǒng),但是NTP服務(wù)器同時(shí)也是samba服務(wù)器的話,則對(duì)Windows來(lái)說(shuō),不需要安裝任何時(shí)間同步軟件,因?yàn)閃indows客戶端可以用net time\\時(shí)間服務(wù)器IP或服務(wù)器netbios名/set/yes來(lái)同步??梢园言撁罘旁陂_(kāi)始菜單的啟動(dòng)項(xiàng)中,啟動(dòng)windows時(shí)自動(dòng)同步。
關(guān)于linux ntp校時(shí) 記錄的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機(jī)被稱(chēng)為香港虛擬空間/香港網(wǎng)站空間,或者簡(jiǎn)稱(chēng)香港主機(jī)/香港空間。香港虛擬主機(jī)特點(diǎn)是免備案空間開(kāi)通就用, 創(chuàng)新互聯(lián)香港主機(jī)精選cn2+bgp線路訪問(wèn)快、穩(wěn)定!
分享名稱(chēng):記錄Linux系統(tǒng)中使用NTP校對(duì)時(shí)間的過(guò)程(linuxntp校時(shí)記錄)
分享鏈接:http://m.5511xx.com/article/cdhopsi.html


咨詢(xún)
建站咨詢(xún)
