把電腦設置成ntp伺服器
① ntp時間同步伺服器
NTP時間同步伺服器是針對計算機、自動化裝置等進行校時而研發的高科技產品。NTP時間同步伺服器從GPS衛星上獲取標準的時間信號,將這些信號通過各種介面傳輸給自動化系統中需要時間信息的設備。
NTP服務工作模式為三種,即客戶/伺服器模式、廣播模式和對稱模塊。在客戶端/伺服器模式下,客戶端以周期性地發送NTP數據包,根據標記直觀查看工作狀態、事件結果等並及時反饋。
NTP時鍾同步伺服器利用衛星通信功能,可以構建中心主站系統對各廠站時間同步系統的集中監測和遠程維護,提高設備的運行可靠性。NTP時鍾同步伺服器採用SMT表面貼裝技術生產,以高速晶元進行控制,無硬碟和風扇設計,精度高、穩定性好、功能強、無積累誤差、不受地域氣候等環境條件限制、性價比高、操作簡單、全自動智能化運行,免操作維護,適合無人值守。
② 區域網內建立時間同步
幾台伺服器之間的時間誤差也就是相對時間的重要性要大於絕對時間的重要性。因此需要在區域網內建立伺服器的時間同步。下面是我收集整理的區域網內建立時間同步,希望對大家有幫助~~
區域網內建立時間同步
工具/原料
操作系統 :windows 2000/xp/2003
電腦,伺服器
方法 /步驟
(一) 基於XP/2003系統
1、打開注冊表
單擊“開始”,單擊“運行”,鍵入 regedit,然後單擊“確定”。
2、配置 Windows 時間服務以使用外部時間源
(1)指定時間源。
a. 找到並單擊下面的注冊表子項:
程序代碼
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer
b. 在右窗格中,右鍵單擊“NtpServer”,然後單擊“修改”。
c. 在“編輯值”的“數值數據”框中鍵入210.72.145.44,0x1,然後單擊“確定”。
註:210.72.145.44是中科院國家授時中心的伺服器,這是由於微軟的時間伺服器經常連接失敗而造成無法同步。列出的每個 DNS 名稱都必須是唯一的。必須在每個 DNS 名稱後面附加,0x1。如果不在每個DNS名稱後面附加 ,0x1,則在下面步驟中所做的更改將不會生效。
(2)選擇輪詢間隔。
a. 找到並單擊下面的注冊表子項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval
b在右窗格中,右鍵單擊“SpecialPollInterval”,然後單擊“修改”。
c在“編輯 DWORD 值”的“數值數據”選十進制並在框中鍵入900,然後單擊“確定”。
注意:這里設置的是您希望各次輪詢之間的間隔秒數,以秒計算建議值為 900(十進制)。該值將時間伺服器配置為每隔15分鍾與時間伺服器同步一次。
3、配置NTP伺服器
(1)將伺服器類型更改為 NTP。
a. 找到並單擊下面的注冊表子項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type
b. 在右窗格中,右鍵單擊“Type”,然後單擊“修改”。
c. 在“編輯值”的“數值數據”框中鍵入 NTP,然後單擊“確定”。
(2)將AnnounceFlags設置為5。
a.找到並單擊下面的注冊表子項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags
b. 在右窗格中,右鍵單擊“AnnounceFlags”,然後單擊“修改”。
c. 在“編輯 DWORD 值”的“數值數據”框中鍵入 5,然後單擊“確定”。
(3)啟用 NTPServer。為此,請按照下列步驟操作:
a.找到並單擊下面的注冊表子項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
b.在右窗格中,右鍵單擊“Enabled”,然後單擊“修改”。
c.在“編輯 DWORD 值”的“數值數據”框中鍵入 1,然後單擊“確定”。
最後在管理工具中進入服務在服務中找到windows time 服務,重新啟動一次,這樣時間伺服器就配置完畢。
(二)基於windows2000系統
Windows2000的系統與xp/2003系統的不同在於時間和日期屬性中沒有INTERNET時間一項,這也使得NTP伺服器在2000系統的配置更簡單。
只需要在注冊表中找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\一項,並將其中的Type值改為NTP即可。
二、客戶機設置:
(一)基於XP/2003系統
a. 找到並單擊下面的注冊表子項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\中的 MaxPosPhaseCorrection和MaxNegPhaseCorrection兩項。
十進制修改為999999999
上面2項修改意思為:可以同步時間超過31年的時間差。因為XP默認為15小時,超過15小時差就不能夠自動更新時間。
b.到並單擊下面的注冊表子項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer
十進制修改為192.168.?.?(剛才建立的NTP伺服器地址,不是我上面輸入的210.72. 145.44)
c.到並單擊下面的注冊表子項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval
修改為600,意思為10分鍾自動更新時間一次。
重新啟動windows time服務。客戶機設置完畢!
(二)基於windows2000系統
點擊開始-運行後輸入CMD進入命令行,輸入net time /setsntp:NTP伺服器地址。
比如,輸入中科院國家授時中心的伺服器,就是 net time /setsntp: 210.72.145.44
而後重新啟動windows time服務。並將啟動類型更改成自動。
而後會發現注冊表中的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters裡面多出了ntpserver一項。而後面就是所設置的NTP伺服器的地址。
這說明當前的ntpserver客戶機已經配置成功。
上圖裡面的period項類似於xp里的SpecialPollInterval項,即用於控制時間服務同步的頻率。不同的是,如果指定一個字元串值,它必須是下面列出的特定值之一。如果使用數字(如 65535)指定字元串值,請將該值創建為 REG_DWORD。如果使用單詞(如 BiDaily)來指定字元串值,該項應被創建為 REG_SZ。
0 = 每天一次
65535,“BiDaily” = 每兩天一次
65534,“Tridaily” = 每三天一次
65533,“Weekly” = 每周(7 天)一次
65532,“SpecialSkew” = 每 45 分鍾一次,直到出現三次良好同步,然後每8小時一次(每天三次)[默認]
65531, “DailySpecialSkew” = 每 45 分鍾一次,直到出現一次良好同步,然後每天一次
PS:為保障時間同步的順利進行,請盡量保證客戶機與NTP伺服器同步和NTP伺服器與中科院國家授時中心的伺服器校時的時間差。
三、驗證
在客戶機中雙擊屏幕右下角的時間,在日期和時間屬性中修改時間。
(NTP伺服器的系統為windows2000,客戶端的系統是windows xp)
然後點擊“Internet時間”選項,選中“自動與Internet時間伺服器同步按鈕”。單擊“立即更新”。
如果顯示與配置的NTP伺服器同步時間成功。並且下一次的同步時間間隔為HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\ SpecialPollInterval
中的間隔。即為配置成功!
Windows2000客戶機的驗證
由於windows2000的時間屬性中沒有INTERNET時間這一項,因此它的INTERNET 校時也要在命令行里進行,在命令行下輸入w32tm /once,系統會立即校準時間。並依據period項設定值設定下一次校準的時間。但這些都將在後台進行。我們無法象在XP或2003那樣直觀的看到。
四、手動同步
為了防止區域網繁忙而造成時間同步失敗的現象,可以手動同步時間,方法是首先登錄到管理員用戶。然後新建一個文本文檔,在裡面輸入net time \\192.168.1.172 / set /yes(注意:time、192.168.1.172和set後面都有一個空格,192.168.1.172是我的NTP伺服器地址)保存後命名為同步時間.bat。雙擊打開後同步時間即可完成。也得在開始—運行—cmd中鍵入net time \\192.168.1.172 / set / yes命令。會出現下面的窗口:
這樣每一次點擊同步時間.bat的文件都能實現一次時間同步。也可以將這個文件復制到C:\Documents and Settings\Administrator\「開始」菜單\程序\啟動 文件夾中,這樣每次開機後會自動校時。當然也可以添加到任務計劃中,指定每天校時的時間。與前面的方法配合試用,兩種方法實現區域網時間同步的“雙 保險 ”。
區域網內建立時間同步相關 文章 :
1. 區域網內怎麼建立伺服器的時間同步
2. 如何在區域網內建立伺服器的時間同步
3. 區域網內如何設定系統時間與伺服器時間同步
4. 區域網中怎樣設置系統時間與伺服器同步
5. 區域網中如何設置系統時間與伺服器同步
6. 區域網中要怎樣設置系統時間與伺服器同步
7. 區域網內統一時間的方法
8. 怎麼設置電腦時間自動同步網路時間
③ 想要讓XP系統成為NTP伺服器使得linux系統可以與之同步
1、將伺服器類型更改為
NTP。為此,請按照下列步驟操作:
a.
單擊「開始」,單擊「運行」,鍵入
regedit,然後單擊「確定」。
b.
找到並單擊下面的注冊表子項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type
c.
在右窗格中,右鍵單擊「Type」,然後單擊「修改」。
d.
在「編輯值」的「數值數據」框中鍵入
NTP,然後單擊「確定」。
2、設置伺服器,開始菜單,輸入regedit命令後打開注冊表。
3、修改以下選項的鍵
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer內的「Enabled」設定為1,打開NTP伺服器功能。(默認是不開啟NTP
Server服務,除非計算機升級成為域控制站)
4、修改以下鍵值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags設定為5,該設定強制主機將它自身宣布為可靠的時間源,從而使用內置的互補金屬氧化物半導體(CMOS)
時鍾。該設定強制主機將它自身宣告為可靠的時間源,從而運用內置的互補金屬氧化物半導體
(CMOS)
時鍾。假如要採用外面的時間伺服器就用默認的
a
值即可.
5、在命令行執行以下命令重啟Win32Time服務,確保以上修改起作用
net
stop
w32time
net
start
w32time
6、其他:如果該伺服器和internet連接,那麼為了避免伺服器和internet上的ntp同步,最好追加以下配置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient的「enable」設定為0
以防止作為客戶端自動同步外界的時間服務
7、執行linux同步命令
ntpdate
192.168.1.1
#(伺服器IP地址)
hwclock
--systohc
#把時間寫入硬體
④ 【NTP】NTP(Network Time Protocol)配置詳解
設置NTP伺服器不難,但是NTP本身是一個很復雜的協議. 這里我們只是簡要地介紹一下實踐方法。
如果有人問你說現在幾點? 你看了看錶回答他說晚上8點了. 這樣回答看上去沒有什麼問題,但是如果問你的這個人在歐洲的話那麼你的回答就會讓他很疑惑,因為他那裡還太陽當空呢。
這里就有產生了一個如何定義時間的問題. 因為在地球環繞太陽旋轉的24個小時中,世界各地日出日落的時間是不一樣的.所以我們才有劃分時區(timezone) 的必要,也就是把全球劃分成24個不同的時區. 所以我們可以把時間的定義理解為一個時間的值加上所在地的時區(注意這個所在地可以精確到城市)。
地理課上我們都學過格林威治時間(GMT), 它也就是0時區時間. 但是我們在計算機中經常看到的是UTC. 它是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了),那麼同理到時候還要再撥慢回來.如果我們設置了正確的時區,當需要改變時間的時候系統就會自動替我們調整。
現在我們就來看一下如何在Linux下設置時區,也就是time zone
在Linux下glibc提供了我們事先編譯好的許多timezone文件, 他們就放在/usr/share/zoneinfo這個目錄下,這里基本涵蓋了大部分的國家和城市
# ls -F /usr/share/zoneinfo
在這裡面我們就可以找到自己所在城市的time zone文件. 那麼如果我們想查看對於每個time zone當前的時間我們可以用zmp命令
# zmp Shanghai
Shanghai Mon Apr 23 17:54:12 2018 Shanghai
那麼我們又怎麼來告訴系統我們所在time zone是哪個呢?
方法有很多,這里舉出兩種:
第一個就是修改/etc/localtime這個文件,這個文件定義了我么所在的local time zone.
我們可以在/usr/share/zoneinfo下找到我們的time zone文件然後軟鏈接去到/etc/localtimezone
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
第二種方法也就設置TZ環境變數的值. 許多程序和命令都會用到這個變數的值. TZ的值可以有多種格式,最簡單的設置方法就是使用tzselect命令
# tzselect
# TZ='Asia/Shanghai'; export TZ
You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai
通過這兩個例子我們也可以發現TZ變數的值會override /etc/localtime. 也就是說當TZ變數沒有定義的時候系統才使用/etc/localtime來確定time zone. 所以你想永久修改time zone的話那麼可以把TZ變數的設置寫入/etc/profile里!
說道設置時間這里還要明確另外一個概念就是在一台計算機上我們有兩個時鍾:
一個稱之為硬體時間時鍾(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 Relay Server"前的准備更加合適. 因為不論我們的計算機配置多好運行時間久了都會產生誤差,所以不足以給互聯網上的其他伺服器做NTP Server. 真正能夠精確地測算時間的還是原子鍾. 但由於原子鍾十分的昂貴,只有少部分組織擁有, 他們連接到計算機之後就成了一台真正的NTP Server. 而我們所要做的就是連接到這些伺服器上同步我們系統的時間,然後把我們自己的伺服器做成NTP Relay Server再給互聯網或者是區域網內的用戶提供同步服務。
# yum -y install 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伺服器之前先和這些伺服器做一個同步,使得我們機器的時間盡量接近標准時間.
這里我們可以用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的配置文件了, 它就是/etc/ntp.conf. 我們只需要加入上面的NTP Server和一個driftfile就可以了
# vi /etc/ntp.conf
#############################
server 210.72.145.44 #中國國家授時中心的IP
server 0.uk.pool.ntp.org
server 1.uk.pool.ntp.org
fudge 127.127.1.0 stratum 0
這行是時間伺服器的層次。設為0則為頂級,如果要向別的NTP伺服器更新時間,請不要把它設為0
driftfile /var/lib/ntp/ntp.drift
##############################
我們就啟動NTP Server,並且設置其在開機後自動運行
# systemctl start ntpd
# systemctl enable ntpd
現在我們已經啟動了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的伺服器的.
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 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,這里就不詳細介紹了。
做到這里我們已經有了一台自己的Relay Server.如果我們想讓區域網內的其他client都進行時間同步的話那麼我們就都應該照樣再搭建一台Relay Server,然後把所有的client都指向這兩台伺服器(注意不要把所有的client都指向Internet上的伺服器). 只要在client的/etc/ntp.conf加上這你自己的伺服器就可以了。
server ntp1.leonard.com
server ntp2.leonard.com
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服務,否則會提示埠被佔用:
# 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服務勾選上
# systemctl enable crond.service
一、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 查看每次更新間隔如:
# 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輪詢更新一次時間
這些問題主要涉及到NTP的層(stratum)的概念,頂層是1,值為0時表示層數不明,層的值是累加的,比如NTP授時方向是A-〉B-〉C,假設A的stratum值是3,那麼B從A獲取到時間,B的stratum置為4,C從B獲取到時間,C的值被置為5。一般只有整個NTP系統最頂層的伺服器stratum才設為1。
NTP同步的方向是從stratum值較小的節點向較大的節點傳播,如果某個NTP客戶端接收到stratum比自己還要大,那麼NTP客戶端認為自己的時間比接受到的時間更為精確,不會進行時間的更新。
對於大部分NTP軟體系統來說,服務啟動後,stratum值初始是0,一旦NTP服務獲取到了時間,NTP層次就設置為上級伺服器stratum+1。對於具備衛星時鍾、原子鍾的專業NTP設備,一般stratum值初始是1。
NTPD啟動後,stratum值初始是0,此時NTPD接收到NTP請求,回復stratum欄位為0的NTP包,客戶端接收後,發現stratum欄位無效,拒絕更新時間,造成時間更新失敗。
幾分鍾後,NTPD從上級伺服器獲取到了更新,設置了正確的stratum,回復stratum欄位為n+1的NTP包,客戶端接收後,確認stratum有效,成功進行時間更新。
在NTPD上級伺服器不可用的情況下,NTPD將本機時鍾服務模擬為一個上級NTP伺服器,地址使用環回127.127.1.0,服務啟動幾分鍾後,NTPD從127.127.1.0更新了時鍾,設置了有效的stratum,客戶端接收後,成功進行時間更新。
對應的/etc/ntp.conf配置項如下:
server 127.127.1.0
fudge 127.127.1.0 stratum 1
# NTPD把本地主機的時鍾也看作外部時鍾源來處理,分配的地址是127.127.1.0
# 設置本地時鍾源的層次為1,這樣如果NTPD服務從本地時鍾源獲取時間的話,NTPD對外宣布的時間層次為2。
https://blog.csdn.net/iloli/article/details/6431757
http://blog.163.com/little_yang@126/blog/static/2317559620091019104019991/
⑤ 如何搭建自己的NTP伺服器
NTP伺服器【Network Time Protocol(NTP)】是用來使計算機時間同步化的一種協議,它可以使計算機對其伺服器或時鍾源(如石英鍾,GPS等等)做同步化,它可以提供高精準度的時間校正(LAN上與標准間差小於1毫秒,WAN上幾十毫秒),且可介由加密確認的方式來防止惡毒的協議攻擊。時間按NTP伺服器的等級傳播。按照離外部UTC源的遠近把所有伺服器歸入不同的Stratum(層)中。
網路時間協議(NTP)用來同步網路上不同主機的系統時間。你管理的所有主機都可以和一個指定的被稱為 NTP 伺服器的時間伺服器同步它們的時間。而另一方面,一個 NTP 伺服器會將它的時間和任意公共 NTP 伺服器,或者你選定的伺服器同步。由 NTP 管理的所有系統時鍾都會同步精確到毫秒級。
在公司環境中,如果他們不想為 NTP 傳輸打開防火牆,就有必要設置一個內部 NTP 伺服器,然後讓員工使用內部伺服器而不是公共 NTP 伺服器。在這個指南中,我們會介紹如何將一個 CentOS 系統配置為 NTP 伺服器。在介紹詳細內容之前,讓我們先來簡單了解一下 NTP 的概念。
為什麼我們需要 NTP?
由於製造工藝多種多樣,所有的(非原子)時鍾並不按照完全一致的速度行走。有一些時鍾走的比較快而有一些走的比較慢。因此經過很長一段時間以後,一個時鍾的時間慢慢的和其它的發生偏移,這就是常說的 「時鍾漂移」 或 「時間漂移」。為了將時鍾漂移的影響最小化,使用 NTP 的主機應該周期性地和指定的 NTP 伺服器交互以保持它們的時鍾同步。
在不同的主機之間進行時間同步對於計劃備份、入侵檢測記錄、分布式任務調度或者事務訂單管理來說是很重要的事情。它甚至應該作為日常任務的一部分。
NTP 的層次結構
NTP 時鍾以層次模型組織。層級中的每層被稱為一個 stratum(階層)。stratum 的概念說明了一台機器到授權的時間源有多少 NTP 跳。
Stratum 0 由沒有時間漂移的時鍾組成,例如原子時鍾。這種時鍾不能在網路上直接使用。Stratum N (N > 1) 層伺服器從 Stratum N-1 層伺服器同步時間。Stratum N 時鍾能通過網路和彼此互聯。
NTP 支持多達 15 個 stratum 的層級。Stratum 16 被認為是未同步的,不能使用的。
准備 CentOS 伺服器
現在讓我們來開始在 CentOS 上設置 NTP 伺服器。
首先,我們需要保證正確設置了伺服器的時區。在 CentOS 7 中,我們可以使用 timedatectl 命令查看和更改伺服器的時區(比如,"Australia/Adelaide",LCTT 譯註:中國可設置為 Asia/Shanghai )
代碼如下:
# timedatectl list-timezones | grep Australia
# timedatectl set-timezone Australia/Adelaide
# timedatectl
繼續並使用 yum 安裝需要的軟體
代碼如下:
# yum install ntp
然後我們會添加全球 NTP 伺服器用於同步時間。
代碼如下:
# vim /etc/ntp.conf
server 0.oceania.pool.ntp.org
server 1.oceania.pool.ntp.org
server 2.oceania.pool.ntp.org
server 3.oceania.pool.ntp.org
默認情況下,NTP 伺服器的日誌保存在 /var/log/messages。如果你希望使用自定義的日誌文件,那也可以指定。
復制代碼
代碼如下:
logfile /var/log/ntpd.log
如果你選擇自定義日誌文件,確保更改了它的屬主和 SELinux 環境。
復制代碼
代碼如下:
# chown ntp:ntp /var/log/ntpd.log
# chcon -t ntpd_log_t /var/log/ntpd.log
現在初始化 NTP 服務並確保把它添加到了開機啟動。
代碼如下:
# systemctl restart ntp
# systemctl enable ntp
驗證 NTP Server 時鍾
我們可以使用 ntpq 命令來檢查本地伺服器的時鍾如何通過 NTP 同步。
下面的表格解釋了輸出列。
remote 源在 ntp.conf 中定義。『*』 表示當前使用的,也是最好的源;『+』 表示這些源可作為 NTP 源;『-』 標記的源是不可用的。
refid 用於和本地時鍾同步的遠程伺服器的 IP 地址。
st Stratum(階層)
t 類型。 'u' 表示單播(unicast)。其它值包括本地(local)、多播(multicast)、廣播(broadcast)。
when 自從上次和伺服器交互後經過的時間(以秒數計)。
poll 和伺服器的輪詢間隔,以秒數計。
reach 表示和伺服器交互是否有任何錯誤的八進制數。值 337 表示 100% 成功(即十進制的255)。
delay 伺服器和遠程伺服器來回的時間。
offset 我們伺服器和遠程伺服器的時間差異,以毫秒數計。
jitter 兩次取樣之間平均時差,以毫秒數計。
控制到 NTP 伺服器的訪問
默認情況下,NTP 伺服器允許來自所有主機的查詢。如果你想過濾進來的 NTP 同步連接,你可以在你的防火牆中添加規則過濾流量。
# iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 123 -j ACCEPT
# iptables -A INPUT -p udp --dport 123 -j DROP
該規則允許從 192.168.1.0/24 來的 NTP 流量(埠 UDP/123),任何其它網路的流量會被丟棄。你可以根據需要更改規則。
配置 NTP 客戶端
1. Linux
NTP 客戶端主機需要 ntpupdate 軟體包來和伺服器同步時間。可以輕松地使用 yum 或 apt-get 安裝這個軟體包。安裝完軟體包之後,用伺服器的 IP 地址運行下面的命令。
代碼如下:
# ntpdate
基於 RHEL 和 Debian 的系統命令都相同。
2. Windows
如果你正在使用 Windows,在日期和時間設置(Date and Time settings)下查找網路時間(Internet Time)。
3. Cisco 設備
如果你想要同步 Cisco 設備的時間,你可以在全局配置模式下使用下面的命令。
代碼如下:
# ntp server
來自其它廠家的支持 NTP 的設備有自己的用於網路時間的參數。如果你想將設備和 NTP伺服器同步時間,請查看設備的說明文檔。
結論
總而言之,NTP 是在你的所有主機上同步時鍾的一個協議。我們已經介紹了如何設置 NTP 伺服器並使支持 NTP 的設備和伺服器同步時間。
⑥ NTP伺服器的配置和使用
為了避免Linux系統的主機,在長時間運行下所導致的時間偏差。因此我們需要對時間進行時間同步(synchronize)。我們一般使用ntp服務來同步不同機器的時間。NTP 是網路時間協議(Network Time Protocol)的簡稱,他是通過UDP協議,對時間進行同步的。
編輯NTP Server的主要配置文件為/etc/ntp.conf ,如下:
配置含義:
配置完畢,重啟NTP服務,使配置更改生效。
查看NTP服務和上級連通狀態
內網其他設備作為NTP的客戶端配置,相對就比較簡單,而且所有設備的配置都相同。
首先需要安裝NTP服務(與NTP-Server完全一樣)。然後找其中一台配置/etc/ntp.conf文件,配置完成驗證通過後,拷貝到其他客戶端機器,直接使用即可。
注釋掉之前的上層服務,以下幾行
添加本地的NTP伺服器即可完成配置
可以用date命令查看時區
如果時區是EST需要改成CST
選擇亞洲 /中國 /北京 /然後確認
改完後執行如下復制語句
使用
172.17.30.100為你的NTP伺服器的ip地址,顯示adjust time server 192.168.1.135 offset 0.004882 sec
這里有可能出現同步失敗,一般情況下原因都是本地的NTPD伺服器還沒有正常啟動起來,一般需要幾分鍾時間後才能開始同步。
也有報錯 no server suitable for synchronization found,這種問題由一下兩種情況造成:
Server dropped: strata too high:
並且顯示「stratum 16」。而正常情況下stratum這個值得范圍是「0~15」。
這種問題往往是由ntp服務啟動後還沒有和上層服務同步完成,可以等五分鍾再次查看。
Server dropped: strata no data:
這種問題一般是因為訪問不到NTP服務,需要檢查NTP服務是否啟動成功,或者是否是被防火牆攔截。
啟動NTP_Client
啟動後,查看同步情況
由於是內網,NTP服務很快會同步上,可以使用下面命令查看時間是否和伺服器時間相同
本機客戶端配置完成後,需要同步的客戶端機器使用SCP拷貝/etc/ntp.conf,命令如下,啟動NTP服務即可。
Linux的NTP配置總結
NTP服務及時間同步問題
⑦ 如何搭建自己的NTP伺服器
1、首先使用組合鍵WIN + R 啟動運行窗口,在打開的窗口中輸入regedit,點擊確定按鈕。
⑧ 請問關於如何在xp系統下搭建ntp時間同步伺服器
WindowsXP時間伺服器配置
1.在注冊表中將服務NTPServer的Enabled屬性設置為1.Type改為NTP。
2.如果外部時間源獲取時間將Config/AnnounceFlags設置為5.
3.將parameters\NtpServer地址改為外部時間源的IP地址或者DNS,在使用DNS是後面要加上」,0x1」.多個地址之間用空格隔開。
4.其他參數是可選的參數,可根據需要配置。
5.重啟w32time服務.在命令行中,net stop w32time && net start
w32time.就配置完成了。
6.此外,要保證windows
防火牆是關閉的。或者啟動防火牆時,在例外中添加C:\WINDOWS\system32\w32time.dll埠號:123類型UDP。
經過以上六步伺服器端就設置完成了。
WindowsXP客戶端的配置
1.將NtpServer地址設置為伺服器的地址。
2.服務類型改為NTP。
3.SpecialPolInterval自動同步時間間隔根據需要配置比如15分鍾輪詢一次(設置為900,因為單位為秒)。
4.將默認的時間伺服器設置為伺服器的地址, XP默認是微軟的時間伺服器time.windows.com。在注冊表中
HKEY_LOCAL_MACHINE\SOFTWARE\WINDOWS\CurrentVersion\DateTime\Servers
新建一個字元串值(名字3),輸入伺服器的IP地址。
並將默認值改為3.這樣在時期時間屬性\Internet時間默認的時間同步伺服器就成為我們設置的了。