ntpdate และ ntpd ไม่สามารถซิงค์นาฬิกาบน Linux


11

ฉันมีปัญหาแปลก ๆ กับเซิร์ฟเวอร์ตัวใดตัวหนึ่งของฉัน ntpdและntpdateไม่สามารถใช้งานได้ แต่การดีบักไม่แสดงข้อผิดพลาด แต่อย่างใด ตอนแรกฉันคิดว่าไฟร์วอลล์ในพื้นที่หรือไฟร์วอลล์ของเครือข่ายกำลังปิดกั้นพอร์ต UDP 123 แต่นั่นไม่ใช่กรณีนี้ - เซิร์ฟเวอร์นี้สามารถพูดคุยกับพอร์ต UDP 123 (โพรโทคอล ntp) กับอินเทอร์เน็ตและรับคำตอบ

ให้ฉันแสดงให้เห็นถึงปัญหา

date -s "30 DEC 2012 02:30:00" - ใช้งานได้ฉันจึงสามารถตั้งค่านาฬิกาได้สำเร็จโดยไม่มีข้อผิดพลาด

ntpq -pn pool.ntp.org - ทำงานฉันได้รับข้อมูลเวลาโดยละเอียดจาก timeserver และพิสูจน์ว่าแพ็กเก็ต UDP ทำงานได้

ntpdate -d pool.ntp.org - โหมดการแก้ไขข้อบกพร่องทำงานแสดงตันข้อมูลการดีบักและแสดงการชดเชยเวลาปัจจุบัน: 30 Dec 02:38:56 ntpdate[19267]: step time server 208.97.140.69 offset 228.234554 sec

ทุกอย่างดูปกติจนกระทั่ง: ntpdate pool.ntp.org- หลังจากหยุดไป 4.7 วินาทีมันจะกลับมา: 30 Dec 02:41:29 ntpdate[19274]: no server suitable for synchronization found

ปัญหาที่คล้ายกันนี้ทำงานอยู่ntpdแต่จะไม่อัพเดทนาฬิกา

หลังจากเริ่ม ntpd ntpq -pnผลลัพธ์ใน refid ทั้งหมดจะติดตลอดไป.INIT.ซึ่งหมายความว่าพวกเขาไม่สามารถซิงค์ได้

/ var / lib / ntp / drift เป็นการตั้งค่า driftfile ใน ntp.conf ซึ่งเป็น chmod 644 และเป็นเจ้าของโดย ntp: ntp เหมือนกับระบบอื่น ๆ ของฉัน

ฉันลองเซิร์ฟเวอร์เวลา ntp อื่น ๆ โหลปิดการใช้งานไฟร์วอลล์ iptables และยืนยันว่าดาต้าเซ็นเตอร์ไม่ได้กรองปริมาณข้อมูลของ udp ความคิดใดที่จะหยุด ntpd และ ntpdate จากการซิงค์นาฬิกาของฉัน

นี่คือ CentOS 6.3 x64 บนเซิร์ฟเวอร์เฉพาะที่มี Intel CPU


2
คุณสามารถอธิบายสิ่งที่คุณหมายถึงโดย "เซิร์ฟเวอร์เฉพาะ" - มันเป็นฮาร์ดแวร์ทางกายภาพหรือเครื่องเสมือน?
เชนหัวเสีย

เซิร์ฟเวอร์เฉพาะ = ฮาร์ดแวร์จริง ไม่ใช่เครื่องเสมือน
Crash Override

คำตอบ:


13

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

ลองntpdate -bแทน มันจะตั้งเวลาไม่ว่ามันจะดูไร้เหตุผลก็ตาม

คุณอาจต้องเพิ่มการ-uตั้งค่าสถานะซึ่งจะป้องกันไม่ให้ntpdateใช้พอร์ตพิเศษ (<1024) โปรดทราบว่า-uมีนัยโดย-d! และดูเหมือนว่า-dจะทำงานได้ดี

หากการเพิ่ม-uสร้างความแตกต่างระหว่างการทำงานและไม่ทำงานแสดงว่าคุณมีไฟร์วอลล์ในทางที่ทำให้เกิดปัญหาเหล่านี้

และน่าเสียดายที่ไม่สามารถntpdใช้พอร์ตที่ไม่มีข้อ จำกัดได้


ยังคงล้มเหลว ntpdate -b pool.ntp.orgผลลัพธ์: 30 Dec 03:00:10 ntpdate[1341]: no server suitable for synchronization foundแฟล็กการดีบัก ntpdate ซึ่ง-dจะแสดงข้อมูลการดีบัก แต่ไม่ได้ซิงค์จริงและใช้งานได้: ntpdate -d pool.ntp.orgผลลัพธ์:30 Dec 03:00:55 ntpdate[1343]: step time server 128.10.254.6 offset 228.030338 sec
Crash Override

@CrashOverride ฉันอัปเดตคำตอบเพื่อพยายามอธิบายว่าเพราะเหตุใดถึง-dอาจทำงานได้ในขณะที่ไม่ทำงาน
chutz

1
ntpdate -b -uทำงาน !!! น่ากลัว คำถามสองข้อ ntpd daemon ยังคงล้มเหลวฉันจะได้รับวิธีที่จะไม่ใช้พอร์ตที่มีสิทธิพิเศษได้อย่างไร คำถามที่สองทำไมเครื่องนี้ถึงล้มเหลวด้วย ntp บนพอร์ตที่มีสิทธิพิเศษเมื่อเซิร์ฟเวอร์อื่น ๆ ของฉันไม่ทำ?
Crash Override

อืมมมอาจจะมีไฟร์วอลล์ปิดกั้น UDP พอร์ต 123 ที่มาจากเซิร์ฟเวอร์ของฉัน ตรวจสอบว่า ขอขอบคุณอีกครั้งสำหรับคำตอบของคุณ
Crash Override

ฉันอัพเดตด้วยลิงก์เพื่ออธิบายว่าไม่สามารถเปลี่ยนพอร์ตต้นทางของ ntpd ได้ ขออภัยฉันไม่ได้มองไกลไปกว่าการค้นหาลิงก์นั้น
chutz

2

คุณสามารถให้ผลลัพธ์ต่อไปนี้ใน pastebin ได้ไหม

cat /etc/ntp.conf
cat /etc/sysconfig/ntpd
ntpq -pn
ntpdc -c sysstat
ntpdc -c kerninfo
ntpdc -c loopinfo
ntpdate -d <time-server-IP>
ntptrace

คุณซิงค์จากเซิร์ฟเวอร์ stratum 1 หรืออย่างอื่น

เซิร์ฟเวอร์ไม่เหมาะสำหรับการซิงโครไนซ์หมายถึงสิ่งที่บอกว่าไม่สามารถสร้างการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์ได้

หากเราไม่พบเบาะแสจากชุดข้อมูลนี้อาจจำเป็นต้องใช้ tcpdump เพื่อดูว่าแพ็กเก็ตหายไปที่ไหน

tcpdump -s0 -i ethX -p udp -w /tmp/ntp.pcap

หยุดและเริ่ม ntpd daemon และรอให้ถึงไปถึง 377 แล้วหยุด tcpdump ที่ควรให้เบาะแสเพิ่มเติม


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