ntpdate dan ntpd gagal menyinkronkan jam di Linux

11

Saya memiliki masalah aneh dengan salah satu server saya. ntpddan ntpdategagal berfungsi, tetapi debugging tidak menunjukkan kesalahan sama sekali. Pada awalnya saya pikir mungkin firewall lokal atau jaringan memblokir port UDP 123, tetapi bukan itu masalahnya - server ini dapat berbicara port UDP 123 (protokol ntp) ke Internet dan mendapatkan jawaban.

Biarkan saya menunjukkan masalahnya.

date -s "30 DEC 2012 02:30:00" - berfungsi, jadi saya bisa berhasil mengatur jam tanpa kesalahan.

ntpq -pn pool.ntp.org - berfungsi, saya mendapatkan data waktu secara rinci dari timeserver, dan membuktikan bahwa paket-paket UDP berfungsi.

ntpdate -d pool.ntp.org - Mode debug berfungsi, menunjukkan satu ton data debug dan menunjukkan offset waktu saat ini: 30 Dec 02:38:56 ntpdate[19267]: step time server 208.97.140.69 offset 228.234554 sec

Semua terlihat normal, hingga: ntpdate pool.ntp.org- setelah jeda 4,7 detik, ia kembali: 30 Dec 02:41:29 ntpdate[19274]: no server suitable for synchronization found

Masalah serupa berjalan ntpd, itu tidak memperbarui jam.

Setelah ntpd dimulai, ntpq -pnmengakibatkan semua refid selamanya macet .INIT.yang berarti mereka tidak dapat melakukan sinkronisasi.

/ var / lib / ntp / drift adalah pengaturan driftfile di ntp.conf, yang merupakan chmod 644 dan dimiliki oleh ntp: ntp, sama seperti semua sistem saya yang lain.

Saya mencoba selusin server waktu ntp lainnya, firewall iptables yang dinonaktifkan, dan mengkonfirmasi bahwa datacenter tidak memfilter lalu lintas udp. Adakah ide apa yang menghentikan ntpd dan ntpdate dari menyinkronkan jam saya?

Ini adalah CentOS 6.3 x64 pada server khusus dengan Intel CPU.

Crash Override
sumber
2
Bisakah Anda mengklarifikasi apa yang Anda maksud dengan "dedicated server" - apakah itu perangkat keras fisik, atau mesin virtual?
Shane Madden
Server khusus = perangkat keras fisik. BUKAN mesin virtual.
Crash Override

Jawaban:

13

ntpdate(dan ntpd) akan menolak untuk (dengan mudah) mengatur waktu jika offset terlalu tinggi. Kedua aplikasi akan mencoba menyesuaikan waktu Anda secara perlahan , agar tidak membingungkan sistem Anda atau aplikasi apa pun yang mungkin tidak menangani lompatan besar dengan sangat baik.

Coba ntpdate -bsaja. Ini akan mengatur waktu tidak peduli seberapa tidak masuk akalnya.

Anda mungkin juga perlu menambahkan -uflag, yang akan mencegah ntpdatepenggunaan port yang diistimewakan (<1024). Catatan yang -utersirat oleh -d! Dan sepertinya -dbekerja dengan baik.

Jika menambahkan -umembuat perbedaan antara bekerja dan tidak bekerja, maka Anda memiliki firewall di jalan yang menyebabkan masalah ini.

Dan sayangnya sepertinya tidak mungkin ntpdmenggunakan port yang tidak dibatasi .

chutz
sumber
Masih gagal. ntpdate -b pool.ntp.orghasil: 30 Dec 03:00:10 ntpdate[1341]: no server suitable for synchronization foundBendera debug ntpdate yang -dakan menampilkan data debug tetapi tidak benar-benar disinkronkan, dan itu berfungsi: ntpdate -d pool.ntp.orghasil:30 Dec 03:00:55 ntpdate[1343]: step time server 128.10.254.6 offset 228.030338 sec
Crash Override
@ CrashOverride, saya memperbarui jawaban saya untuk mencoba menjelaskan mengapa -dmungkin berfungsi sementara sebaliknya tidak.
chutz
1
ntpdate -b -ubekerja !!! Luar biasa. Dua pertanyaan. Daemon ntpd masih gagal, bagaimana caranya agar tidak menggunakan port yang diistimewakan? Pertanyaan kedua, MENGAPA mesin ini gagal dengan ntp pada port istimewa ketika semua server saya yang lain tidak?
Crash Override
Humm, mungkin ada firewall yang memblokir port UDP sumber 123 dari server saya. Memeriksa itu. Sekali lagi, terima kasih atas jawaban Anda.
Crash Override
Saya memperbarui dengan tautan untuk menjelaskan bahwa tidak mungkin mengubah port sumber ntpd. Maaf, saya belum melihat lebih jauh daripada menemukan tautan itu.
chutz
2

Bisakah Anda memberikan output berikut dalam 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

Apakah Anda menyinkronkan dari server strata 1 atau apa pun.

Tidak ada server yang cocok untuk sinkronisasi yang memberi tahu bahwa komunikasi antara klien dan server tidak dapat dilakukan.

Jika kami tidak dapat menemukan petunjuk dari kumpulan data ini, tcpdump mungkin diperlukan untuk melihat di mana paket tersebut hilang.

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

Berhenti dan mulai ntpd daemon dan tunggu sampai mencapai 377 dan kemudian hentikan tcpdump. Itu harus memberikan petunjuk lebih lanjut.

Soham Chakraborty
sumber
pastebin.com/Rw0nZTA8
Crash Override