ntpdate: ไม่พบเซิร์ฟเวอร์ที่เหมาะสมสำหรับการซิงโครไนซ์


82

นาฬิกาของฉันคือปิดntpdateดังนั้นผมอยากจะประสานโดยใช้ ฉันลองเซิร์ฟเวอร์ NTP หลายแห่ง แต่ด้วยเหตุผลบางอย่างฉันมักจะได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

$ sudo ntpdate ntp.ubuntu.com
4 Mar 12:27:35 ntpdate[1258]: no server suitable for synchronization found
$ sudo ntpdate pool.ntp.org
4 Mar 12:27:50 ntpdate[1267]: no server suitable for synchronization found
$ sudo ntpdate de.pool.ntp.org
4 Mar 12:28:01 ntpdate[1273]: no server suitable for synchronization found
$ sudo ntpdate us.pool.ntp.org
4 Mar 12:28:12 ntpdate[1276]: no server suitable for synchronization found

คำถามที่เกี่ยวข้อง

ฉันได้ตรวจสอบคำถามที่เกี่ยวข้องแล้ว แต่ก็ไม่มีใครแก้ปัญหาได้:

สิ่งที่ฉันได้ลอง

ฉันติดตั้งแพคเกจ ntp

... และลองใช้ntpddaemon แทนntpdateยูทิลิตี้ มันจะไม่ซิงค์เวลาของฉันเช่นกัน ภูตเริ่มต้นได้ดี แต่นาฬิกาของฉันยังคงปิดอยู่ ฉันยังลองใช้/etc/ntp.confคำตอบที่แน่นอนจากคำตอบที่ยอมรับในโพสต์หลังแล้วรีสตาร์ท daemon ไม่ไป. อย่างไรก็ตามฉันไม่ต้องการใช้ภูต ฉันตระหนักดีว่าntpdateถือว่า "เลิกใช้แล้ว" และแนะนำให้ใช้ntpd -qแทน ดูที่นี่ด้วย:

แต่เนื่องจากntpdไม่ได้ทำงานสำหรับฉันทั้งปัญหาอยู่ที่อื่น และฉันพบว่าฉันไม่ต้องการติดตั้งแพ็กเกจพิเศษใด ๆ เพียงเพื่อซิงโครไนซ์นาฬิกา ntpdateมาติดตั้งกับอูบุนตูและมันควรจะทำงานได้ดี ดังนั้นฉันจึงถอนการติดตั้งntpแพคเกจอีกครั้ง

บางทีพอร์ต 123 ถูกบล็อก

จากโพสต์นี้:

... ฉันมีความคิดว่าพอร์ต 123 อาจถูกบล็อกจากคอมพิวเตอร์ / เครือข่ายในที่ทำงานของฉัน อันที่จริง

$ sudo nmap -p123 -sU -P0 localhost
...
PORT    STATE  SERVICE
123/udp closed ntp 
...
$ sudo ufw allow 123/udp
Rules updated
Rules updated (v6)
$ sudo nmap -p123 -sU -P0 localhost
...
PORT    STATE SERVICE
123/udp open  ntp
...

แต่ยังคง:

$ sudo ntpdate ntp.ubuntu.com
4 Mar 13:06:16 ntpdate[4361]: no server suitable for synchronization found

แม้จะมี-uตัวเลือกซึ่งบอกntpdateให้ใช้พอร์ต unprivileged สำหรับการซิงค์ (แทนพอร์ต123) ซึ่งไม่ได้ถูกบล็อกอย่างแน่นอนจากที่ทำงานของฉัน:

$ sudo ntpdate -u ntp.ubuntu.com
4 Mar 13:06:28 ntpdate[4427]: no server suitable for synchronization found

บางทีชั้นอาจจะสูงเกินไป?

สุดท้ายจากโพสต์นี้ที่ serverfault:

... ฉันคิดว่าบางทีชั้นจากเซิร์ฟเวอร์ NTP นั้นสูงเกินไป แม้ว่าพวกเขาจะไม่ เรามาดูข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติมอีกเล็กน้อย:

$ sudo ntpdate -dv ntp.ubuntu.com
 4 Mar 13:12:24 ntpdate[4523]: ntpdate 4.2.6p5@1.2349-o Wed Oct  9 19:08:07 UTC 2013 (1)
Looking for host ntp.ubuntu.com and service ntp
host found : golem.canonical.com
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
91.189.89.199: Server dropped: no data
91.189.94.4: Server dropped: no data
server 91.189.89.199, port 123
stratum 0, precision 0, leap 00, trust 000
refid [91.189.89.199], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Mon, Jan  1 1900  1:00:00.000
originate timestamp: 00000000.00000000  Mon, Jan  1 1900  1:00:00.000
transmit timestamp:  d6c041ae.e6166441  Tue, Mar  4 2014 13:12:30.898
filter delay:  0.00000  0.00000  0.00000  0.00000 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000

server 91.189.94.4, port 123
stratum 0, precision 0, leap 00, trust 000
refid [91.189.94.4], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Mon, Jan  1 1900  1:00:00.000
originate timestamp: 00000000.00000000  Mon, Jan  1 1900  1:00:00.000
transmit timestamp:  d6c041af.1948fc50  Tue, Mar  4 2014 13:12:31.098
filter delay:  0.00000  0.00000  0.00000  0.00000 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000

 4 Mar 13:12:33 ntpdate[4523]: no server suitable for synchronization found

Pfeeewww ... อันนี้ยาวมาขอโทษด้วย ฉันนิ่งงัน เบาะแสใด ๆ

อัปเดต: ข่าวสารเพิ่มเติม

ไม่ว่าว่าเซิร์ฟเวอร์ NTP HOSTNAMEตัวเลขใน/etc/ntp.confและไม่ว่าไม่ว่าจะเป็นntpdบริการที่กำลังทำงานอยู่หรือไม่เมื่อใดก็ตามที่ฉันเรียกฉันได้รับsudo ntpdate -u HOSTNAME no server suitable for synchronization foundสิ่งเดียวกันเมื่อntpdบริการไม่ได้ทำงานและฉันละเว้น-uตัวเลือก เมื่อntpdการให้บริการเป็นที่ทำงานและฉันละเว้นตัวเลือกผมแทนที่จะได้รับ-uthe NTP socket is in use, exiting

นอกจากนี้:

$ timedatectl status
      Local time: Wed 2014-03-05 13:11:54 CET
  Universal time: Wed 2014-03-05 12:11:54 UTC
        Timezone: Europe/Berlin (CET, +0100)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sun 2013-10-27 02:59:59 CEST
                  Sun 2013-10-27 02:00:00 CET
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2014-03-30 01:59:59 CET
                  Sun 2014-03-30 03:00:00 CEST

แต่เวลา UTC ไม่ถูกต้องที่นี่ ตอนนี้เวลา UTC คือไม่11:1112:11

และ:

$ sudo hwclock --show
Wed 05 Mar 2014 01:11:56 PM CET  -0.625627 seconds

คุณบอกว่าคุณวิ่ง `sudo ntpdate ntp.ubuntu.com 'แต่คุณทำเช่นนั้นหลังจากเพิ่ม ntp.ubuntu.comไปยัง/etc/ntp.confเขตข้อมูลเซิร์ฟเวอร์ s หรือไม่? หากไม่เห็นคำตอบต่อไปนี้
Stormvirux

ลอง `sudo ntpdate 0.ubuntu.pool.ntp.org
Stormvirux

1
สวัสดีเห็นความคิดเห็นของฉันต่อคำตอบของคุณ ฉันพยายามเพิ่มserver pool.ntp.orgไป/etc/ntp.confแต่ntpdate -u pool.ntp.orgโยนข้อผิดพลาดเดียวกัน ฉันยังลองด้วยntp.ubuntu.com(เพิ่มไปยัง/etc/ntp.confเริ่มntpบริการใหม่อีกครั้งเรียกใช้ntpdate -uบนเซิร์ฟเวอร์ที่แน่นอนที่ฉันเพิ่งเพิ่มไป/etc/ntp.conf) สรุปแล้วไม่สำคัญว่าจะมีการพูดถึงเซิร์ฟเวอร์ที่ฉันพยายามซิงค์ด้วย/etc/ntp.confหรือไม่ ฉันได้รับno server suitable...ข้อผิดพลาดในทุกกรณี (ยกเว้นเมื่อntpบริการกำลังทำงานอยู่และฉันข้าม-uตัวเลือกไปแล้วจะได้รับNTP socket in useข้อผิดพลาด)
Malte Skoruppa

ตกลงฉันยังลองsudo ntpdate 0.ubuntu.pool.ntp.orgซึ่งอยู่ใน/etc/ntp.confไฟล์แล้ว ไม่มีโชค - ข้อผิดพลาดเดียวกัน
Malte Skoruppa

คำตอบ:


54

ผู้ให้บริการโฮสต์ของคุณกำลังบล็อกแพ็กเก็ต ntp ผู้ให้บริการอินเทอร์เน็ตบางรายใช้วิธีการถนัดมือนี้ในการตอบสนองต่อการโจมตี DDoS คุณจะเห็นว่า ntpdate กำลังส่งแพ็กเก็ตจาก ntpdate -vd:

transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)

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

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


6
คุณพูดถูก ดูเหมือนว่ามหาวิทยาลัยของเรากำลังปิดกั้นคำขอ NTP ภายนอก นอกจากนี้ยังมีเซิร์ฟเวอร์ NTP ในพื้นที่เพียงไม่กี่ตัวเป็นทางเลือก ทำงานเหล่านี้ได้อย่างสมบูรณ์แบบ ผมเห็นว่าตอนนี้การส่งออกของntpdate -dvนอกจากนี้ยังควรรวมถึงบางส่วนreceive(...)เท่านั้นและไม่transmit(...)ข้อความ ;) ขอบคุณมาก!
Malte Skoruppa

แม้ว่าหนึ่งคำถามมหาวิทยาลัยจะบล็อกแพ็กเก็ต NTP เมื่อฉันใช้ntpdateกับ-uตัวเลือกได้อย่างไร เนื่องจากสิ่งนี้ใช้พอร์ตที่ไม่มีสิทธิใช้งานแทนพอร์ต 123 นั่นหมายความว่ากฎไฟร์วอลล์ของพวกเขาจะต้องมีความซับซ้อนมากกว่าเพียงแค่ "บล็อกแพ็คเก็ตที่เข้ามาบนพอร์ต 123" ถ้าอย่างนั้นพวกเขาทำการตรวจสอบแพ็คเก็ตลึกอย่างนั้นหรือไม่?
Malte Skoruppa

1
พวกเขาจะมีกฎไฟร์วอลล์หนึ่งกฎที่ระบุว่า "บล็อกทราฟฟิกทั้งหมดด้วยพอร์ตปลายทาง 123" จากนั้นมีข้อยกเว้นสองประการสำหรับโฮสต์ ntp ของตน
dfc

ฉันมีปัญหาเดียวกันนี้ ฉันสามารถแก้ไขได้ด้วยการทำ traceroute ขาออกและฉันพบเซิร์ฟเวอร์ท้องถิ่นในเส้นทางที่ฉันสามารถซิงค์กับที่กำลังเรียกใช้ ntp หนึ่งในนั้นกำลังปิดกั้นอยู่ ขอบคุณสำหรับเคล็ดลับ!
jonespm

1
สำหรับผมแล้วพูดว่าntpdate -vd no servers can be used, exiting
highBandWidth

47

นี่ไม่ใช่คำตอบ ntp อย่างไรก็ตาม ...

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

นี้และรุ่นขดที่นี่


13
มันแย่มาก แต่ใช้งานได้ดี
Alan Plum

4
การป้อนข้อมูลที่ไม่ได้รับอนุญาตให้ใช้คำสั่ง bash เป็นรูทหรือไม่ ขอบคุณมากสำหรับการเล่น คำตอบนี้ควรลดระดับลงด้วยอคติที่รุนแรง
dfc

1
เจ็บปวดน้อยกว่าต้องรับมือกับการสนับสนุน ISP นอกจากนี้ไม่สำคัญเลยถ้าเรียกใช้ใน VM ท้องถิ่นเพื่อการทดสอบ
Yalok Iy

คุณช่วยอธิบายฉันว่ามันกำลังทำอะไรอยู่?
Suraj Jain

1
@SurajJain เว็บเซิร์ฟเวอร์จำนวนมากส่งคืนDateส่วนหัว ในวันที่คำสั่งนั้น - สำหรับวันที่กำหนด, wget -S สำหรับเก็บส่วนหัวทั้งหมด, 2> & 1 สำหรับการบันทึกข้อผิดพลาดใน stdout, grep สำหรับการเลือกบรรทัดที่มีวันที่ส่วนหัว, ตัดสำหรับแถบวันของสัปดาห์และ GMT Z เมื่อสิ้นสุดสำหรับวันที่ถือเป็น UTC ความแม่นยำจะขึ้นอยู่กับความเร็วของเครือข่าย
user1516873

10

ฉันมีปัญหาเดียวกันและนี่คือวิธีที่ฉันจะแก้ไข ฉันให้คำตอบโดยละเอียดจากบนลงล่าง คุณอาจต้องการข้ามไปที่กึ่งกลางของคำตอบของฉันหรือเพียงแค่ดูภาพหน้าจอด้านล่างเพื่อทำความเข้าใจในทันที

ก่อนติดตั้ง ntpdate (เห็นได้ชัดว่าคุณทำสิ่งนี้แล้ว)

sudo apt-get install ntpdate

NEXTคุณต้องกำหนดค่า ntp กับเซิร์ฟเวอร์ดังนี้:

อย่างน้อยคุณควรตั้งค่าพารามิเตอร์ต่อไปนี้ในไฟล์ /etc/ntp.conf config: server

ตัวอย่างเช่นเปิดไฟล์ /etc/ntp.conf โดยใช้โปรแกรมแก้ไขข้อความนาโน:

sudo nano /etc/ntp.conf

ค้นหาพารามิเตอร์ของเซิร์ฟเวอร์และหากยังว่างให้ตั้งค่าดังนี้:

server pool.ntp.org

แต่โดยปกติในอูบุนตูแล้วบางเซิร์ฟเวอร์จะถูกเขียนไว้ล่วงหน้าซึ่งอาจจะเป็น

server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นบันทึกไฟล์และเริ่มบริการ ntpd ใหม่ :

sudo /etc/init.d/ntpd start

คุณสามารถซิงโครไนซ์นาฬิการะบบกับเซิร์ฟเวอร์ NTP ได้ทันทีด้วยคำสั่งต่อไปนี้:

sudo ntpdate pool.ntp.org

หรือเพียงแค่เรียกใช้เซิร์ฟเวอร์ที่มีการกำหนดไว้แล้ว

sudo ntpdate 0.ubuntu.pool.ntp.org

หรือเซิร์ฟเวอร์อื่น ๆ ที่กำหนดโดยใช้เซิร์ฟเวอร์

โดยทั่วไป

sudo ntpdate <one of the servername in /etc/ntp.conf>

แต่หลังจากนั้นมีโอกาสที่คุณจะได้รับข้อผิดพลาดNTP socket in useดังที่แสดงด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

ในกรณีที่เพิ่งทำงาน

ntpdate -u pool.ntp.org 

เพื่ออัปเดตเมื่อ ntp deamon กำลังทำงาน

หรือเพียงแค่หยุด deamon อัพเดตและเริ่มใหม่อีกครั้งดังนี้:

sudo ntpdate pool.ntp.org
sudo service ntp stop
sudo ntpdate pool.ntp.org
sudo service ntp start

และคุณจะได้รับ

ป้อนคำอธิบายรูปภาพที่นี่


สวัสดีขอบคุณสำหรับคำตอบโดยละเอียดของคุณ! น่าเสียดายที่มันไม่ได้ผลสำหรับฉัน ฉันมีสิ่ง/etc/ntp.confที่มาพร้อมกับ Ubuntu ไม่เคยทำการเปลี่ยนแปลงใด ๆ ฉันวางมันนี่: pastebin.com/bB0sskzv ฉันยังพยายามเพิ่มserver pool.ntp.orgที่ด้านบนของรายการเซิร์ฟเวอร์ดังแสดงในภาพหน้าจอคุณ พบว่าที่นี่: pastebin.com/YH372Jdi ด้วยการตั้งค่าทั้งสองนี้ฉันใช้ลำดับของคำสั่งที่คุณเสนอ: ฉันเพิ่มภาพหน้าจอในโพสต์ดั้งเดิมของฉัน /etc/ntp.confผลที่ได้คือตรงเดียวกันกับทั้งแปรและการแก้ไข ความคิดอื่น ๆ ? ขอบคุณ!
Malte Skoruppa

สิ่งที่จะtimedatectl statusคืน
Stormvirux

ดูผลลัพธ์ของtimedatectl statusคำสั่งในโพสต์ต้นฉบับของฉัน
Malte Skoruppa

ตอนนี้ฉันได้ลองกับเซิร์ฟเวอร์ทั้ง 4 ที่กำหนดไว้ล่วงหน้า (คือ, {0..3}.ubuntu.pool.ntp.org), ทั้งที่มีและไม่มี-uตัวเลือก ข้อผิดพลาดเดียวกันเสมอ
Malte Skoruppa

แค่บอกฉันอันนี้ด้วย ผลลัพธ์ของsudo hwclock --show
Stormvirux

8

ใช้ htpdate

หากการส่ง ntp ถูกบล็อกในเครือข่ายของคุณให้ติดตั้ง htpdate มันจะซิงค์เวลาผ่านโปรโตคอล http ความแม่นยำจะอยู่ที่ 0.5 วินาทีตามหน้า man

sudo apt-get install htpdate
sudo htpdate -a google.com

บริการ htpdate จะเริ่มต้นเมื่อคุณติดตั้งแพ็คเกจ เวลาจะอัปเดตทันทีหากมีการเชื่อมต่ออินเทอร์เน็ต


โปรดอย่าคัดลอกและวางคำตอบเดียวกันในทุกหัวข้อที่คุณพบเกี่ยวกับ ntp
sempaiscuba

1
Copypasta หรือไม่วิธีนี้ใช้ได้กับฉันในขณะที่ฉันได้รับntpdate[22109]: no server suitable for synchronization foundข้อผิดพลาด
kneeki

4

เช่นเดียวกับคำตอบของ Alex สิ่งนี้ใช้ได้ผลสำหรับฉันที่จะใช้พอร์ต ntp ที่ถูกไฟร์วอลล์:

sudo date -s "$(curl http://s3.amazonaws.com -v 2>&1 | \
  grep "Date: " | awk '{ print $3 " " $5 " " $4 " " $7 " " $6 " GMT"}')"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.