การตั้งค่าเซิร์ฟเวอร์ NTP ระดับ 2 ภายในเครื่อง


9

ฉันกำลังพยายามติดตั้ง NTP บนเครือข่ายท้องถิ่นที่ไม่มีการเชื่อมต่ออินเทอร์เน็ต ลำดับความสำคัญหลักคือว่าเครื่องในเครือข่ายจะซิงค์กันแม้ว่าเวลาที่พวกเขาซิงค์ที่ไม่ถูกต้อง 100%

นอกจากนี้เรายังมีข้อกำหนดที่จะใช้ลำดับชั้นของ NTP เพื่อทำซ้ำการตั้งค่าของระบบที่ปรับใช้ สิ่งที่ฉันต้องการทำคือมีลำดับชั้นของเครื่องดังนี้:

Moon  (Main Server running Windows) (10.1.3.10)
|____Earth   (Linux x64 client) (10.1.3.1)
|____Mars    (Linux x64 client) (10.1.3.2)
|____Saturn  (Linux x64 client) (10.1.3.3)
|____RackCard23   (Linux x64 client and server to the two machines below)  (10.1.3.23)
     |___RackCard21   (Linux x64 client) (10.1.4.21)
     |___RackCard22   (Linux x64 client) (10.1.4.22)

โปรดทราบว่า RackCards มีสองพอร์ตอีเธอร์เน็ตหนึ่งพอร์ตเชื่อมต่อกับเครือข่าย 10.1.3.x และอีกพอร์ตหนึ่งในเครือข่าย 10.1.4.x RackCard23 ซึ่งซิงค์ออกจากเซิร์ฟเวอร์หลัก Moon จะทำเช่นนั้นในเครือข่าย 10.1.3.x และ RackCard22 / 23 จะเชื่อมต่อกับ RackCard23 บนเครือข่าย 10.1.4.x นี่เป็นเพราะฉันไม่ต้องการให้ RackCards 22/23 ออกจากเครือข่ายเพื่อซิงค์เวลาและเพราะมันทำซ้ำระบบที่ปรับใช้ครั้งสุดท้าย

จนถึงตอนนี้ฉันสามารถจัดการทุกอย่างที่ควรโดยการปิด Moon เพื่อซิงค์อย่างถูกต้อง (รวมถึง RackCard23)

แต่ฉันมีปัญหาในการรับ RackCard22 และ 23 เพื่อซิงค์จาก RackCard23

[root@RackCard23]# cat /etc/ntp.conf
# NTP Deamon Configuration File "ntp.conf"
# Created on 27/04/2010
# Original backed-up as "ntp.conf.backup"

server 10.1.3.10 iburst minpoll 4 maxpoll 4 prefer #This is what we want to happen
fudge   127.127.1.0 stratum 2   #Not sure about these two lines, was trying to force it to be a stratum 2 server
fudge   127.127.0.1 stratum 2

# Drift file.  Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift
restrict 10.1.3.10 mask 255.255.255.255 nomodify notrap noquery

#Attempt to get to act as an NTP Server
broadcast 10.1.4.255

restrict 10.1.3.21 mask 255.255.255.255 nomodify notrap
restrict 10.1.4.21 mask 255.255.255.255 nomodify notrap

นี่คือผลลัพธ์จาก ntptrace:

[rootRackCard23]# /usr/sbin/ntptrace
localhost.localdomain: stratum 16, offset 0.000000, synch distance 0.000030

อย่างที่คุณเห็นว่าเครื่องกำลังรายงานตัวเองว่าเป็นเซิร์ฟเวอร์ stratum 16 แม้ว่าจะถูกซิงค์กับเซิร์ฟเวอร์ "stratum 1" (Moon):

[root@RackCard23 awd]# /usr/sbin/ntpdate -d 10.1.3.10
21 Jun 13:55:09 ntpdate[19410]: ntpdate 4.2.2p1@1.1570-o Tue May 19 13:57:56 UTC 2009 (1)
Looking for host 10.1.3.10 and service ntp
host found : 10.1.3.10
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
server 10.1.3.10, port 123
stratum 1, precision -6, leap 00, trust 000
refid [LOCL], delay 0.04135, dispersion 0.00383
transmitted 4, in filter 4
reference time:    cfc99402.e010624d  Mon, Jun 21 2010  8:32:18.875
originate timestamp: cfc9dfad.48000000  Mon, Jun 21 2010 13:55:09.281
transmit timestamp:  cfc9dfad.47e27179  Mon, Jun 21 2010 13:55:09.280
filter delay:  0.04155  0.04155  0.04137  0.04135
         0.00000  0.00000  0.00000  0.00000
filter offset: -0.01448 0.000781 0.000537 0.000394
         0.000000 0.000000 0.000000 0.000000
delay 0.04135, dispersion 0.00383
offset 0.000394

21 Jun 13:55:09 ntpdate[19410]: adjust time server 10.1.3.10 offset 0.000394 sec

การกำหนดค่าของไคลเอนต์ (RackCard21 / 22) มีลักษณะดังนี้:

[root@RackCard21]# cat /etc/ntp.conf
# NTP Deamon Configuration File "ntp.conf"
# Created on 27/04/2010
# Original backed-up as "ntp.conf.backup"

server 10.1.4.23 iburst minpoll 4 maxpoll 4 prefer

server 127.127.1.0
fudge   127.127.1.0 stratum 10

# Drift file.  Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift

# restrict 127.0.0.1

restrict None mask 255.255.255.255 nomodify notrap noquery

และ ntptrace ให้สิ่งนี้:

[root@RackCard21]# /usr/sbin/ntpdate -d 10.1.4.23
21 Jun 14:04:34 ntpdate[14381]: ntpdate 4.2.2p1@1.1570-o Tue May 19 13:57:56 UTC 2009 (1)
Looking for host 10.1.4.23 and service ntp
host found : 10.1.4.23
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
10.1.4.23: Server dropped: strata too high
server 10.1.4.23, port 123
stratum 16, precision -20, leap 11, trust 000
refid [10.1.4.23], delay 0.02568, dispersion 0.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Thu, Feb  7 2036  6:28:16.000
originate timestamp: cfc9dfef.12b79516  Mon, Jun 21 2010 13:56:15.073
transmit timestamp:  cfc9e1e2.aeae7d56  Mon, Jun 21 2010 14:04:34.682
filter delay:  0.02573  0.02571  0.02568  0.02568
         0.00000  0.00000  0.00000  0.00000
filter offset: -499.609 -499.609 -499.609 -499.609
         0.000000 0.000000 0.000000 0.000000
delay 0.02568, dispersion 0.00000
offset -499.609286

21 Jun 14:04:34 ntpdate[14381]: no server suitable for synchronization found

ดังนั้นจึงไม่พบเซิร์ฟเวอร์ที่เหมาะสมเพราะเซิร์ฟเวอร์ที่ฉันพยายามใช้รายงานว่าเป็นเซิร์ฟเวอร์ stratum 16 (ซึ่งฉันเชื่อว่าหมายถึงไม่ซิงโครไนซ์) นี่คือความจริงที่ว่ามันจะถูกทำข้อมูลให้ตรงกัน

ดังนั้นฉันต้องทำให้ RackCard23 เป็น stratum ที่สูงขึ้น (stratum 2) ฉันจะทำเช่นนั้นได้อย่างไร

ความช่วยเหลือใด ๆ ที่ได้รับความนิยมอย่างมากเนื่องจากฉันพยายามทำให้มันใช้งานได้หลายวันแล้ว!

แก้ไข:

สวัสดีคริสโตเฟอร์

ฉันรีสตาร์ท ntpd แล้วใช่;)

กล่อง linux ทั้งหมดกำลังเรียกใช้ CentOS 5.4

นี่คือผลลัพธ์จากคำสั่งที่คุณแนะนำ ประการแรกจากเซิร์ฟเวอร์:

[root@RackCard23]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.3.10       .INIT.          16 u    -   16    0    0.000    0.000   0.000
 10.1.4.255      .BCST.          16 u    -   64    0    0.000    0.000   0.001

[root@RackCard23]# /usr/sbin/ntpdc -c monlist
remote address          port local address      count m ver code avgint  lstint
===============================================================================
localhost.localdomain  34566 127.0.0.1              1 7 2      0      0       0
10.1.4.21                123 10.1.4.23              5 3 4    180      5       1
10.1.4.22                123 10.1.4.23              7 3 4      0      2       2

และจากลูกค้า:

[root@RackCard21]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.4.23       .INIT.          16 u   10   16    0    0.000    0.000   0.000
 LOCAL(0)        .LOCL.          10 l   44   64    1    0.000    0.000   0.001

หากคุณไม่มีการเชื่อมต่ออินเทอร์เน็ตแหล่งเวลาของคุณคืออะไรฉันคิดถึงมันบ้างไหม?
dbasnett

แหล่งเวลาไม่สำคัญเลยเราไม่ได้ตามเวลาที่ถูกต้อง 100% สิ่งที่เราต้องการคือเครื่องทุกเครื่องเชื่อมโยงกันแม้ว่านั่นหมายความว่าเวลาของพวกเขาจะถูกปิด 10+ นาทีตามเวลาจริง ดังนั้นเราจึงใช้เครื่องสุ่มบนเครือข่ายเป็นแหล่งเวลาหลัก - เช่นนาฬิกาภายใน สิ่งที่เรารู้และยอมรับนั้นไม่น่าเชื่อถือ แต่ตราบใดที่สิ่งต่าง ๆ ตรงกันมันก็โอเคสำหรับเรา ในระบบที่ใช้งานจริงเราจะซิงค์กับแหล่งเวลาบนระบบอื่นที่เราไม่สามารถควบคุมได้ซึ่งอาจจะใช่หรือไม่แม่นยำกว่า
fwgx

คำตอบ:


5

อย่างที่ Chris พูดไว้ stratum 16 บ่งชี้ว่าเซิร์ฟเวอร์ไม่ได้ซิงค์กับเซิร์ฟเวอร์จริง เพื่อให้แน่ใจว่าคุณได้เริ่มบริการ ntp ใหม่ใช่ไหม ( service ntpd restart) ฉันไม่ได้พยายามที่จะบอกว่าคุณคิดถึงสิ่งง่าย ๆ แต่ฉันทำเสมอ!

คุณสามารถโพสต์เอาต์พุตของคำสั่งอีกสองสามคำสั่งเพื่อช่วยในการวินิจฉัยได้หรือไม่

ntpq -pบนไคลเอนต์ & เซิร์ฟเวอร์ ควรแสดงเซิร์ฟเวอร์ที่กำหนดค่ารวมถึงสถิติสำหรับเซิร์ฟเวอร์เหล่านั้น
ntpdc -c monlistบนเซิร์ฟเวอร์ ควรแสดงลูกค้าที่เชื่อมต่อ

นอกจากนี้เนื่องจากคุณไม่ได้พูดถึงระบบปฏิบัติการฉันจึงใช้คำสั่งสไตล์ RHEL แจ้งให้เราทราบหากคุณมีสิ่งที่แตกต่าง

แก้ไขหลังจากข้อมูลเพิ่มเติม
ตกลงเห็นผลลัพธ์ของคุณนี่คือปัญหาของคุณ: คุณไม่มีเซิร์ฟเวอร์ stratum 1 ความจริงแล้ว "Moon" กำลังใช้นาฬิกาท้องถิ่นอยู่ มันรายงานตัวเองว่าเป็นเซิร์ฟเวอร์ stratum 16 สำหรับการอ้างอิงของคุณเซิร์ฟเวอร์ Stratum1 จะมี GPS ในตัวหรือนาฬิกาอะตอมมิก คุณมีหนึ่งในนั้นหรือไม่ มิเช่นนั้น Moon จำเป็นต้องซิงโครไนซ์นาฬิกากับเซิร์ฟเวอร์ ANTERNTP หากไม่มีการเข้าถึงเครือข่ายคุณจะต้องทำให้เสียชั้นบรรยากาศ (สิ่งนี้ต้องการให้คุณไม่สนใจเวลาที่ 'จริง' มากเกินไปซึ่งคุณทำไม่ได้ แต่ใครก็ตามที่อ่านข้อความนี้ควรทราบด้วย)

บนดวงจันทร์เพิ่มบรรทัดต่อไปนี้ไปยังแฟ้ม ntp.conf fudge 127.127.1.0 stratum 10ของคุณ: สิ่งนี้จะทำให้รายงานนาฬิกาในเครื่องของตนเป็น stratum 10 ซึ่งจะทำให้เซิร์ฟเวอร์อื่น ๆ ใช้มันผ่านนาฬิกา stratum 16 ท้องถิ่นของพวกเขา

- คาริสโตเฟอร์คาริล


เพิ่มผลลัพธ์ไปยังโพสต์คำถามหลัก
fwgx

เห็นด้วยกับคริส จำนวนมากเข้าใจผิดเกี่ยวกับชั้น ntp.org/ntpfaq/NTP-s-algo.htm
dbasnett

3

อาจอยู่นอกหัวข้อเซิร์ฟเวอร์ Stratum 2 ในพื้นที่ต้องใช้การเชื่อมต่อกับเซิร์ฟเวอร์ Stratum 1 และภายในเครือข่ายแยกของคุณคุณไม่มี

คุณสามารถรับโมดูล GPS ราคาถูกและ Raspberry Pi คอมพิวเตอร์บอร์ดเดียวที่ใช้พลังงานน้อยที่สุดและมีความสามารถในการเชื่อมต่อที่เพียงพอ เชื่อมต่อโมดูล GPS ของคุณกับ Raspberry Pi และเข้าร่วม Pi ในเครือข่ายของคุณด้วยซอฟต์แวร์ที่เหมาะสมสามารถเป็นเซิร์ฟเวอร์ Stratum 1 NTP ของคุณที่เซิร์ฟเวอร์ Stratum 2 ของคุณหรือเนื่องจากคุณมีมันอยู่ในเครือข่ายของคุณคอมพิวเตอร์ทุกเครื่องซิงค์เวลาด้วย


2

NTPd จะตั้งค่า stratum ของตนเองตาม:

  1. หากไม่มีการประเมินการเลื่อนของนาฬิกาในเครื่องให้ตั้งค่า stratum เป็น 16 กระบวนการนี้ใช้เวลาประมาณ 15 นาทีบนเซิร์ฟเวอร์ปกติหลังจากนั้นจะดำเนินการในขั้นตอนถัดไป
  2. เชื่อมต่อกับเซิร์ฟเวอร์เวลาที่กำหนดค่าทั้งหมดประเมินว่าเซิร์ฟเวอร์ใดเชื่อถือได้ (และเป็นที่ต้องการ) ตั้งค่า stratum โลคัลเป็น stratum ของเซิร์ฟเวอร์ที่เชื่อถือได้ต่ำสุดบวกหนึ่ง ดังนั้นหากเซิร์ฟเวอร์ที่เชื่อถือได้ต่ำที่สุดที่พบคือ 1 แล้ว local จะเป็น 2

(สิ่งนี้ไม่จำเป็นต้องเป็นลำดับของเหตุการณ์ แต่ลำดับที่ถูกประมวลผลเพื่อวัตถุประสงค์ในการตั้งค่า stratum ในพื้นที่)
(นอกจากนี้ stratum 16 ยังไม่ได้หมายความว่ามันไม่ได้ซิงโครไนซ์)


1
อาจเป็นเพราะ Moon เป็นเครื่อง Windows XP Pro x64 ที่ใช้บริการ W32Time NTP ที่เป็นค่าเริ่มต้นซึ่งเป็น Simple NTP (SNTP) ที่ RackCard23 ไม่เห็นว่าเป็นเซิร์ฟเวอร์ NTP ที่เหมาะสมดังนั้นจะไม่ตั้งค่า stratum เป็นอย่างอื่น มากกว่า 16
fwgx

โอ๊ะฉันไม่เห็นสิ่งนี้ก่อนที่จะแก้ไขโพสต์ของฉัน นี่เป็นโอกาสที่ค่อนข้างดี มีเหตุผลใดที่จะไม่ใช้ไคลเอ็นต์ ntp ที่เหมาะสมบนลำดับชั้นของคุณ? (ไม่ว่าจะใช้ Windows หรือ Unix)
Christopher Karel

2

นอกเหนือจากนี้ฉันจะรวมการวิเคราะห์เอาต์พุต ntpq ของคุณ เพียงเพื่อช่วยแก้ไขปัญหาทั่วไปในอนาคตสำหรับตัวคุณเองและคนอื่น ๆ

ก่อนอื่นจากเซิร์ฟเวอร์ของคุณ:

[root@RackCard23]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.3.10       .INIT.          16 u    -   16    0    0.000    0.000   0.000
 10.1.4.255      .BCST.          16 u    -   64    0    0.000    0.000   0.001

คอลัมน์แรกระบุว่าเซิร์ฟเวอร์ทั้งสองเครื่องนี้ได้รับการกำหนดค่าให้ซิงค์ โดดเด่นคือการขาด*หรือ+ที่จะบ่งบอกถึงเพียร์ที่ตรงกันหรือผู้สมัครรอง ซึ่งหมายความว่าเซิร์ฟเวอร์ของคุณจะไม่ใช้รายการที่นี่ แต่อย่างน้อยก็เช็คอินกับพวกเขา

คอลัมน์ที่สาม "st" หมายถึง stratum ของเซิร์ฟเวอร์เหล่านั้น ในกรณีนี้แสดงว่าเครื่องทั้งสองกำลังใช้นาฬิกาท้องถิ่น (stratum เริ่มต้นที่ 16) สามคอลัมน์สุดท้ายจะบ่งบอกว่านาฬิกาทั้งสองอยู่ไกลแค่ไหน อาจเป็นค่า "ความแตกต่างของวินาทีในนาฬิกา" หรือเวลาแฝงระหว่างเครื่องสองเครื่องจนถึงความแตกต่างในเวลาแฝงนั้น ที่นี่ตัวเลขที่สูงขึ้นจะแย่ลง

เหตุผลของรายการที่ไม่ซิงค์เช่นนี้อาจขึ้นอยู่กับปัจจัยบางอย่าง: หากออฟเซ็ตในนาฬิกามากเกินไป ntp จะไม่ลองด้วยซ้ำเพราะมันจะทำให้เกิดการกระโดดครั้งใหญ่ในเวลาท้องถิ่น หากกระวนกระวายใจแย่ลูกค้าจะ desync จนกระทั่งสิ่งต่าง ๆ มีเสถียรภาพ (โดยปกติจะเป็นการชั่วคราวและยัง reoccuring) อีกวิธีหนึ่งเช่นในกรณีของคุณถ้าเซิร์ฟเวอร์ที่กำหนดค่ามีค่า stratum เท่ากับหรือสูงกว่าแสดงว่าพวกเขามีความน่าเชื่อถือน้อยกว่าเป็นแหล่งเวลาลูกค้าจะไม่ใช้พวกเขา

- คาริสโตเฟอร์คาริล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.