ทำไม ntpd ไม่อัพเดทเวลาบนเซิร์ฟเวอร์ของฉัน?


20

ฉันมี ntpd ทำงานบนเซิร์ฟเวอร์ของฉัน เป็นการตั้งค่าเริ่มต้นทั้งหมดยกเว้นฉันให้ความเห็นว่าความสามารถในการเป็นเซิร์ฟเวอร์ของเครื่องอื่น:

# restrict -4 default kod notrap nomodify nopeer noquery                                                                    
# restrict -6 default kod notrap nomodify nopeer noquery   
restrict default ignore

ถ้าฉันวิ่งntpdate -q ntp.ubuntu.comฉันก็บอกว่านาฬิกาของเครื่องของฉันถูกปิดโดย 7 วินาที

เกิดอะไรขึ้น? ฉันจะวินิจฉัยสิ่งที่เกิดขึ้นมีบันทึกที่ฉันสามารถเปิดได้หรือไม่

ข้อมูลเพิ่มเติม # 1

# ntpq -np
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 91.189.94.4     193.79.237.14    2 u   30   64    7  108.518   -0.136   0.361

ข้อมูลเพิ่มเติม # 2

นี่คือสิ่งที่ดูเหมือนว่าเมื่อฉันถามคำถาม:

# ntpdate -q ntp.ubuntu.com
server 91.189.94.4, stratum 2, offset 7.191308, delay 0.13310
10 Jan 20:38:09 ntpdate[31055]: step time server 91.189.94.4 offset 7.191308 sec

และนี่คือสิ่งที่ดูเหมือนตอนนี้หลังจากรีสตาร์ท ntpd สองสามครั้ง (ฉันสมมติว่านั่นคือสิ่งที่แก้ไขแล้ว):

# ntpdate -q ntp.ubuntu.com
server 91.189.94.4, stratum 2, offset 0.000112, delay 0.13164
10 Jan 20:47:03 ntpdate[31419]: adjust time server 91.189.94.4 offset 0.000112 sec

ข้อมูลเพิ่มเติม # 3

ฉันถอนการติดตั้ง ntp และติดตั้ง openntpd และวิ่ง/usr/sbin/ntpd -dและฉันเห็นผลลัพธ์เช่นนี้:

reply from 64.73.32.134: offset 6.715003 delay 0.041152, next query 30s
reply from 208.53.158.34: offset 6.700224 delay 0.036263, next query 31s
adjusting local clock by 6.734120s
reply from 72.18.205.156: offset 6.708575 delay 0.035885, next query 30s
reply from 64.73.32.134: offset 6.701463 delay 0.044199, next query 33s

ซึ่งสำหรับฉันค่อนข้างชัดเจนบ่งบอกว่าฉันไม่สามารถกำหนดเวลาบนเซิร์ฟเวอร์ของฉัน (แม้ว่าด้วย ntp ปกติก็ดูเหมือนจะปรับปรุงบางครั้ง ... )

ข้อมูลเพิ่มเติม # 4

ผู้ให้บริการ VPS ของฉันพูดว่า:

เมล็ดล่าสุดไม่ควรล็อคระบบของคุณเข้ากับนาฬิกา dom0 ของเราเพื่อให้อยู่ในด้านที่ปลอดภัยคุณสามารถตั้งค่า xen.ind Independent_wallclock = 1 ใน sysctl.conf ของคุณ

ซึ่งฉันคิดว่ายังไม่ได้แก้ไขปัญหาของ VPS ที่ต้องการ CPU ที่มีอยู่เพื่อทำการคำนวณเวลาที่ถูกต้อง


นั่นคือไฟล์กำหนดค่าทั้งหมดของคุณหรือไม่ หากคุณเรียกใช้ntpq -npผลลัพธ์คืออะไร
David Mackintosh

ส่วนที่เหลือของการกำหนดค่าอยู่ที่ไหน ไม่มีเซิร์ฟเวอร์อัปสตรีมสำหรับโฮสต์ของคุณเพื่อให้ได้เวลา
Aaron Copley

6
เข้าใจแล้ว ดูเหมือนว่า ntpd ทำงานได้ตามปกติ NTPd จะ "สังหาร" นาฬิกาของคุณกลับไปสู่การซิงค์อย่างค่อยเป็นค่อยไป การเปลี่ยนแปลงอย่างฉับพลันในเวลาอาจทำให้เกิดปัญหาใหญ่สำหรับกระบวนการทำงานบางอย่างดังนั้น NTP จะทำงานโดยการเร่งความเร็วหรือชะลอความยาวของวินาทีเพื่อทำการปรับเปลี่ยนทีละน้อย
Aaron Copley

1
ใช่เคอร์เนลจะเริ่มต้นด้วยนาฬิกาฮาร์ดแวร์ในการบู๊ตตั้งแต่ตอนบู๊ตซึ่งเป็นการอ้างอิงเท่านั้น หากมีการใช้งานมาหลายเดือนอย่างที่คุณพูดนั่นก็ไม่เป็นเช่นนั้น คุณสามารถบอก NTP ให้ซิงค์กับนาฬิกาฮาร์ดแวร์ของคุณ ฉันไม่แน่ใจเกี่ยวกับ Ubuntu แต่ใช้ระบบที่ใช้ Red Hat ซึ่งอยู่ใน / etc / sysconfig / ntpd คุณสามารถดูหรืออ้างถึงเอกสารของฮาร์ดแวร์ของคุณ
Aaron Copley

1
ฉันไม่คิดว่าคุณเข้าใจว่า ntpdate เป็นแอปพลิเคชันแบบสแตนด์อโลน ไม่มีอะไรเกี่ยวข้องกับ ntpd และไม่ควรใช้เพื่อแก้ไขปัญหา เหตุผลที่แนะนำให้ ntpq พร้อมกับตัวเลือก -p เพื่อแสดงการเพ่งดู หาก ntpd เห็นเพื่อนของคุณระบบจะนำระบบกลับมาซิงค์กัน ดูเหมือนว่าทุกอย่างตอนนี้จะดี ฉันแค่หวังที่จะให้ข้อมูลเชิงลึกเพิ่มเติม หวังว่านี่จะช่วยได้ในอนาคต!
Aaron Copley

คำตอบ:


10

คุณสามารถเปิดใช้งานการเข้าสู่ระบบใน ntpd โดยเพิ่มลงใน ntp.conf:

logfile /var/log/ntpd.log

ที่มา: คู่มือ ntp

หากคุณปิด ntpd คุณสามารถปรับปรุงนาฬิกาตามบรรทัดคำสั่งได้หรือไม่ หากคุณรันคำสั่ง ntpdate และรับข้อผิดพลาดดังนี้:

# ntpdate ntp.ubuntu.com
10 Jan 23:47:57 ntpdate[26284]: Can't adjust the time of day: Operation not permitted

ซึ่งหมายความว่าคุณอาจอยู่ใน VPS และในกรณีนั้นคุณไม่สามารถปรับเปลี่ยนนาฬิกาของระบบได้ซึ่งสามารถทำได้บนเครื่องโฮสต์เท่านั้น


ntpdate ยินดีที่จะทำสิ่งนั้น - แต่ฉันสงสัยว่าเมื่อเซิร์ฟเวอร์ของฉันรีบูตนาฬิกาจะถูกรีเซ็ตเป็นนาฬิกาของฮาร์ดแวร์หรือบางสิ่งบางอย่าง?
John Bachir

หลังจากที่คุณใช้ ntpdate เพื่อตั้งค่านาฬิกาให้ใช้ 'hwclock --systohc' เพื่อซิงค์เวลา "กำลังทำงาน" กับนาฬิกาฮาร์ดแวร์ของคุณ ควรซิงค์ในการรีบูต แต่หากเครื่องของคุณขัดข้อง (หรือมีปัญหาในการปิดระบบที่เหมาะสม) จะไม่สามารถซิงค์ได้
Dave Drager

ดีมันเป็น vhost ดังนั้นผมจึงไม่สามารถเข้าถึงนาฬิกาฮาร์ดแวร์ (อย่างน้อยฉันหวังว่าไม่!)
จอห์น Bachir

มีนาฬิกาฮาร์ดแวร์จำลองเมื่อมี BIOS จำลอง
Keith Stokes

ฉันเป็นผู้ดูแลระบบบนแพลตฟอร์ม VPS หลายแห่งไม่มีใครในพวกเขา (openvz, Xen) สามารถเข้าถึงการตั้งค่านาฬิกาบนระบบ พวกเขาทั้งหมดจะต้องทำในระดับโฮสต์ ส่งตั๋วกับโฮสต์ของคุณเพื่อระบุว่าเวลาถูกปิดพวกเขาควรจะใช้ ntp และทำให้เวลาตรงกันสำหรับคุณ
Dave Drager

7

ในเวลาเดียวกันตั้งแต่ถามคำถามนี้ฉันได้ติดตั้ง ntp ใหม่กับผู้ให้บริการเริ่มต้น (Ubuntu 10.0.4) แล้วทำการปล่อยให้มันทำงานสองสามวัน จากการเขียนนี้ntpdate -q ntp.ubuntu.comแสดงให้เห็นว่าเวลาของฉันแม่นยำภายใน 0.000216 วินาที ดังนั้นปัญหาที่ฉันต้องทำก็คือการปรับแต่งแบบกำหนดเอง (ที่ฉันพยายามทำให้เป็นไปไม่ได้ที่โฮสต์ภายนอกจะสอบถามเซิร์ฟเวอร์ของฉันซึ่งฉันทำกับไฟร์วอลล์แล้วดังนั้นฉันจึงไม่กังวลเกินไป) นี่คือ Ubuntu 10.0.4 ntp.conf อย่างครบถ้วนพร้อมลบความคิดเห็น:

driftfile /var/lib/ntp/ntp.drift

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

server ntp.ubuntu.com

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

restrict 127.0.0.1
restrict ::1

ฉันยินดีรับข้อเสนอแนะเกี่ยวกับวิธีปรับปรุงการกำหนดค่านี้

ฉันทำตั๋วกับผู้ให้บริการ VPS ของฉันเพื่อขอคำแนะนำโดยละเอียดเกี่ยวกับสิ่งที่ดีที่สุดที่จะทำ ฉันชี้ไปที่เธรดนี้และเอกสารอื่น ๆ ที่ระบุว่าบางทีการจัดสรร CPU อาจทำให้เกิดปัญหาเกี่ยวกับเวลา นี่คือสิ่งที่พวกเขาพูดว่า:

เมล็ดล่าสุดไม่ควรล็อคระบบของคุณเข้ากับนาฬิกา dom0 ของเราเพื่อให้อยู่ในด้านที่ปลอดภัยคุณสามารถตั้งค่า xen.ind Independent_wallclock = 1 ใน sysctl.conf ของคุณ สิ่งนี้จะทำให้แน่ใจว่าอินสแตนซ์ของเซิร์ฟเวอร์ไม่ได้ติดตามนาฬิกาบนโฮสต์เซิร์ฟเวอร์

และ:

ฉันคิดว่าคุณอาจเข้าใจผิดในระดับที่แน่นอนซึ่งปัญหานี้มีผลต่อลูกค้า NTP ในสภาพแวดล้อมเสมือนจริง จากประสบการณ์ของฉันเกี่ยวกับระบบเสมือนจริงบนโฮสต์ Xen (เช่นการตั้งค่าของเราที่ Rackspace Cloud) ความไม่ถูกต้องที่สืบทอดมาจากการไม่มีนาฬิการะบบเฉพาะในการประมวลผลการขัดจังหวะจำนวนเสี้ยววินาทีแม้แต่ในระบบที่โหลดสูง ความไม่ถูกต้องเล็กน้อยนี้ได้รับการจัดการอย่างง่ายดายโดย NTP แม้ว่าจะถูกตั้งค่าให้อัปเดตเซิร์ฟเวอร์เวลาหนึ่งครั้งต่อวัน (หรือแม้แต่น้อยกว่าบ่อยกว่านั้น)


4

หนึ่งในความคิดเห็นของคุณบอกว่าคุณกำลังทำงานบน vhost ในกรณีนี้คุณอาจจะไม่ประสบความสำเร็จมากนักเพราะความรู้สึกของ vhost ของคุณนั้นขึ้นอยู่กับโฮสต์จริงที่มันทำงานอยู่และโดยรวมแล้ว vhost นั้นยุ่งแค่ไหน

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

ทางออกที่ดีที่สุดของคุณหากเป็นกรณีนี้อาจจะเป็นสัตว์เดียรัจฉานrdate -s $serverทุก ๆ ชั่วโมง (เช่นทุก ๆ หกชั่วโมง) เพื่อดึงนาฬิการอบ ๆ ด้วยจมูกของมัน แต่ความแม่นยำของเม็ดเล็กน่าจะเอื้อมถึง


ผู้ให้บริการโฮสต์ของฉัน (rackspace cloud) ได้บอกฉันว่า NTP ทำงานได้ดีในสภาพแวดล้อมของพวกเขา
John Bachir

ดูคำตอบที่ส่ง / ยอมรับของฉันสำหรับสิ่งที่ผู้ให้บริการ VPS ของฉันพูดเกี่ยวกับนาฬิกาและเข้าถึงการตั้งเวลา
John Bachir

rdate อัตโนมัติสามารถตั้งค่านาฬิกาถอยหลังซึ่งสามารถมีผลกระทบที่ไม่คาดคิดมากมาย
rackandboneman

4

สิ่งที่ฉันพบในอดีตเมื่อฉันใช้ ntpd แทน openntpd:

  1. คุณต้องอนุญาตให้เข้าถึง localhost สำหรับ ntpd เพื่อเริ่มต้นอย่างถูกต้องและทำสิ่งต่างๆ

    restrict 127.0.0.1
    restrict ::1
    
  2. แม้ว่าคุณจะสามารถใช้ชื่อโฮสต์สำหรับกฎเซิร์ฟเวอร์ได้การเปิดแบ็คอัพรูทเพื่อพูดคุยกับเซิร์ฟเวอร์เหล่านั้นหมายถึงการใช้restrictที่ต้องใช้ที่อยู่ IP ดังนั้นฉันจึงต้องใช้ IP สำหรับทุกสิ่งอยู่แล้ว

  3. คุณไม่ได้พูดถึงการใช้restrictเพื่อเปิดการเข้าถึงสำรองข้อมูลไปยังเซิร์ฟเวอร์ของคุณ นั่นเป็นปัญหา ลองบล็อกเช่นต่อไปนี้:

    # ntp.xs4all.nl
    server          194.109.22.18
    restrict        194.109.22.18
    
  4. คุณต้องมีเพื่อนหรือเซิร์ฟเวอร์หลายเครื่องสำหรับ ntpd เนื่องจากพยายามใช้การลงคะแนนเสียงข้างมากเพื่อจัดการกับนักแสดงที่ไม่ดี อย่างน้อย 4 เพื่อให้สามารถมีส่วนใหญ่เมื่อคุณสูญเสียหนึ่งโดยเฉพาะอย่างยิ่ง 5

  5. เพื่อล็อคการเข้าถึงเริ่มต้นฉันสามารถใช้:

    restrict default notrust nomodify
    

    เพื่อที่จะยังคงสามารถที่จะสอบถาม แต่ฉันสิ้นสุดที่ใช้restrict default ignoreในขณะที่คุณทำเมื่อ ntpd 4.2 notrustการเปลี่ยนแปลงความหมายของ ถอนหายใจ

  6. หากคุณไม่ได้ให้เวลากับผู้อื่นคุณอาจไม่ต้องการพลังเต็มรูปแบบของ ntpd ปกติและคุณควรพิจารณาopenntpdแทน เขียนโดยทีมงาน OpenBSD มันเป็นการใช้งานที่น้อยที่สุดโดยใช้การแยกสิทธิพิเศษและไฟล์กำหนดค่าที่ง่ายกว่ามาก มันถูกกล่าวหาว่าจะไม่ให้เวลาที่แม่นยำสูงเท่าที่ ntpd ต้องการ แต่ก็ดีพอสำหรับเซิร์ฟเวอร์หรือเวิร์กสเตชันปกติ


นี่คือข้อมูลที่ดี ฉันเช็คเอาท์ openntpd คำถาม: คุณเห็นด้วยหรือไม่เห็นด้วยกับคนอื่น ๆ ที่อ้างว่าการตั้งค่านาฬิกาบน vhost นั้นเป็นไปไม่ได้หรือไม่?
John Bachir

และบางทีคุณสามารถตอบคำถามนี้: serverfault.com/questions/223511/…
John Bachir

ฉันไม่เข้าใจสิ่งที่คุณกำลังพูดด้วยrestrictกฎต่าง ๆ ของคุณ…กฎเหล่านั้นมีผลกับเซิร์ฟเวอร์ใดที่ฉันสามารถค้นหาด้วยก็ได้ ฉันคิดว่ามันจะส่งผลกระทบต่อโหนที่สามารถขอเวลา
John Bachir

1
นี่คือแนวคิด: ต้องการเปลี่ยนคำตอบของคุณให้เป็นไฟล์ ntp.conf ขั้นต่ำสุดพร้อมความคิดเห็นหรือไม่ :-)
John Bachir

แนะนำให้ตั้งค่านาฬิกาบน vhost เว้นแต่คุณจะรับประกันว่าจะมีกำหนดเวลาอย่างน้อยหนึ่ง CPU เนื่องจากมิฉะนั้น vhost ที่รับรู้เวลาไม่ตรงกับเวลาของโลกภายนอก Dom0 ควรจะรักษาเวลา คำตอบของคำถามอื่นนั้นดี NTP คือ UDP ดังนั้นคุณต้องอนุญาตแพ็กเก็ตจากเซิร์ฟเวอร์ที่คุณต้องค้นหาเป็นระยะ ntpd ของฉันค้างเมื่อฉันย้ายไป OpenNTPD ไม่กี่ปีที่ผ่านมา
ฟิล P

3
  • หาก ntpd ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลคุณจะไม่เห็นการชดเชยสำหรับเซิร์ฟเวอร์นั้น
  • หาก ntpq จะถูกบล็อกโดย ntpd คุณจะเห็นข้อความแสดงข้อผิดพลาดที่ชัดเจนจาก ntpq
  • หากบริการอื่น ๆ จะตั้งเวลา (เช่นเครื่องมือ vmware) คุณจะเห็นการชดเชยข้ามสำหรับเซิร์ฟเวอร์ (เรียกใช้ ntpq -p ทุก ๆ 70 วินาที)

reach 7ในการส่งออก ntpq ชี้ให้เห็นว่าคุณให้ทำงานเฉพาะ ntpd ประมาณ 4 นาที 7 คือ 111 ไบนารี่ซึ่งหมายความว่าเซิร์ฟเวอร์ถึง 3 ครั้งแล้ว ntp เข้าถึงทุก 64 วินาที ( pollค่า) และรอ 30 วินาที ( whenค่า) ตั้งแต่ผู้ติดต่อล่าสุด

offset -0.136ระบุว่าระบบจะตรงอยู่แล้ว เฉพาะ ntpd ยังไม่ได้ทำเครื่องหมายเซิร์ฟเวอร์เป็นแหล่งที่มา เพียงแค่ให้เวลากับมันมากขึ้นและดาวดวงเล็ก ๆ ก็จะปรากฏขึ้น

ดังนั้นจริงๆแล้ว ntpd ของคุณกำลังซิงค์ แต่โดยปกติแล้ว ntpd จะไม่ซิงค์ในการกระโดดครั้งใหญ่ครั้งเดียว (เช่น ntpdate) แต่พยายามปรับเวลาอย่างช้าๆและทำให้แน่ใจในรอบหลาย ๆ รอบว่าเวลาจะเสถียร

PS: ฉันรู้ว่าคำถามนั้นเก่ามาก แต่ปัญหานั้นไม่มีเวลา และคำตอบอื่น ๆ ทั้งหมดเป็นเพียงการหลอกลวง IMHO ntpd ยังแนะนำโดย VMWare เพื่อให้เวลาในการซิงค์


คำตอบแรกที่ดี Robert ยินดีต้อนรับสู่เว็บไซต์
kubanczyk

1

ฉันพบระบบของฉันปิดและทำให้งงว่าทำไมนาฬิกา HW ไม่ซิงค์กับนาฬิการะบบเมื่อปิดระบบอย่างสมบูรณ์ ดูเหมือนว่ามีการตั้งค่า NTP ใน sysconfig ที่ต้องแก้ไขเพื่อให้เกิดขึ้น

ใน/etc/sysconfig/ntpd:

# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=no

yesผมตั้งว่า แน่นอนก่อนตรวจสอบว่าคุณมีเซิร์ฟเวอร์ NTP ที่มั่นคงและนาฬิการะบบของคุณมีความน่าเชื่อถือ

ฉันรู้ว่าเป็นอย่างนั้น - ความเบ้ของฉันคือ 47 วินาทีและนาฬิกา HW ของฉันก็ปิดไป 47 วินาที บิงโก! เบาะแสแรกของฉันคือ Kerberos ล้มเหลวที่เห็นในบันทึก Kerberos และ NAS จำนวนมากจะไม่ทำงานหากนาฬิกาเอียงมากเกินไป

ขอให้มีความสุขมาก ๆ ในวันนี้!


1
Snap .. ที่เกี่ยวข้องกับ RHEL / Centos อาจไม่ใช่ Ubuntu
Wayne Sweatt


0

Hai ..

ดูที่การอ้างอิงนี้เพื่อดูว่าสามารถช่วยในการแก้ไขปัญหาของคุณ:

http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_: Ch24 : _The_NTP_Server

คุณอาจต้องการโพสต์เนื้อหาของไฟล์ ntpd.conf ของคุณเอาต์พุตของคำสั่ง debug เช่น ntpq -p

และตรวจสอบวันที่ / เวลาของคุณ?

และตรวจสอบสิ่งนี้เช่นกันเรียกใช้ ntpdate และเริ่มต้น ntpd เวลาในการซิงค์คืออะไร?

ด้วยความปรารถนาดี

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