Menyiapkan server strata 2 NTP lokal

9

Saya mencoba mengatur NTP di jaringan lokal yang tidak memiliki (dan tidak akan pernah) koneksi internet. Prioritas utama adalah bahwa mesin-mesin di jaringan disinkronkan satu sama lain, bahkan jika waktu mereka disinkronkan tidak 100% akurat.

Kami juga memiliki persyaratan untuk menggunakan hierarki NTP untuk mereplikasi pengaturan sistem yang digunakan. Yang ingin saya lakukan adalah memiliki hierarki mesin seperti ini:

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)

Perhatikan bahwa RackCards memiliki dua port ethernet, satu terhubung ke jaringan 10.1.3.x dan satu di jaringan 10.1.4.x. RackCard23, yang menyinkronkan dari server master Moon akan melakukannya pada jaringan 10.1.3.x dan RackCard22 / 23 akan terhubung ke RackCard23 pada jaringan 10.1.4.x. Ini karena saya tidak ingin RackCards22 / 23 meninggalkan jaringan mereka untuk menyinkronkan waktu dan karena itu mereplikasi sistem yang digunakan terakhir.

Sejauh ini saya telah berhasil mendapatkan semua yang seharusnya dengan menyinkronkan Moon untuk menyinkronkan dengan benar (termasuk RackCard23).

Tetapi saya mengalami kesulitan mendapatkan RackCard22 dan 23 untuk melakukan sinkronisasi dari 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

Ini adalah output dari ntptrace:

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

Seperti yang Anda lihat mesin melaporkan dirinya sebagai server strata 16, meskipun telah disinkronkan ke server "strata 1" (Bulan):

[root@RackCard23 awd]# /usr/sbin/ntpdate -d 10.1.3.10
21 Jun 13:55:09 ntpdate[19410]: ntpdate [email protected] 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

Konfigurasi klien (RackCard21 / 22) terlihat seperti ini:

[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

Dan ntptrace memberikan ini:

[root@RackCard21]# /usr/sbin/ntpdate -d 10.1.4.23
21 Jun 14:04:34 ntpdate[14381]: ntpdate [email protected] 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

Jadi tidak dapat menemukan server yang cocok karena server yang saya coba gunakan melaporkan bahwa itu adalah server strata 16 (yang saya percaya berarti tidak tersinkronisasi). Ini terlepas dari kenyataan bahwa itu disinkronkan.

Jadi saya perlu entah bagaimana membuat RackCard23 lapisan yang lebih tinggi (Idealnya, lapisan 2). Bagaimana cara saya melakukan itu?

Bantuan apa pun sangat kami hargai karena saya telah berusaha agar ini berfungsi selama berhari-hari sekarang!

EDIT:

Hai Christopher,

Saya telah me-restart ntpd, ya;)

Semua kotak linux menjalankan CentOS 5.4.

Ini adalah output dari perintah yang Anda sarankan. Pertama dari server:

[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

Dan kemudian dari klien:

[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
fwgx
sumber
Jika Anda tidak memiliki koneksi internet apa sumber waktu Anda, apakah saya melewatkannya di suatu tempat?
dbasnett
Sumber waktu tidak terlalu penting, kami tidak mengejar waktu yang akurat 100%. Yang kami inginkan adalah bahwa semua mesin dalam sinkronisasi satu sama lain, bahkan jika itu berarti waktu mereka 10+ menit dari waktu yang sebenarnya. Jadi kami menggunakan mesin acak di jaringan sebagai sumber waktu master - yaitu hanya jam internal. Yang kita tahu dan terima tidak bisa diandalkan, tetapi selama hal-hal disinkronkan itu tidak masalah bagi kita. Dalam sistem yang dikerahkan nyata, kami akan menyinkronkan ke sumber waktu pada sistem lain yang tidak dapat kami kontrol, yang mungkin atau mungkin tidak lebih akurat.
fwgx

Jawaban:

5

Seperti yang disebutkan Chris, strata 16 menunjukkan server belum benar-benar disinkronkan dengan server. Hanya untuk memastikan, Anda me-restart layanan ntp, kan? ( service ntpd restart) Saya tidak mencoba menyindir Anda ketinggalan hal-hal yang mudah, tetapi saya selalu melakukannya!

Bisakah Anda memposting output beberapa perintah lagi untuk membantu mendiagnosis?

ntpq -pdi klien & server. Harus menunjukkan server apa yang telah dikonfigurasi, serta statistik untuk server tersebut.
ntpdc -c monlistdi server. Harus menunjukkan klien terhubung.

Juga, karena Anda tidak menyebutkan OS, saya menjalankan dengan perintah gaya RHEL. Beritahu saya jika Anda punya sesuatu yang berbeda.

Sunting setelah info lebih lanjut
OK, melihat output Anda, inilah masalah Anda: Anda tidak memiliki server strata 1. Bahkan, "Bulan" menggunakan jam lokal itu. Ini melaporkan dirinya sebagai server strata 16. Untuk referensi Anda, server Stratum1 akan memiliki GPS lokal atau jam atom. Apakah Anda memiliki salah satunya? Jika tidak, Moon perlu menyinkronkan jamnya dengan server NOT LAIN. Jika tidak memiliki akses jaringan, Anda harus memalsukan stratumnya. (Ini mengharuskan Anda untuk tidak terlalu peduli tentang waktu 'benar'. Yang tidak Anda lakukan, tetapi siapa pun yang membaca ini harus mencatat itu.)

Pada Bulan, tambahkan baris berikut ke file ntp.conf Anda: fudge 127.127.1.0 stratum 10. Ini akan membuatnya melaporkan jam lokalnya sebagai strata 10. Yang akan membuat semua server lain menggunakannya selama strata 16 lokal mereka.

--Christopher Karel

Christopher Karel
sumber
menambahkan hasil ke posting pertanyaan utama.
fwgx
setuju dengan Christopher. banyak kesalahpahaman tentang Strata ntp.org/ntpfaq/NTP-s-algo.htm
dbasnett
3

Mungkin berada di luar topik, server Stratum 2 lokal memerlukan koneksi ke server Stratum 1 dan dalam jaringan Anda yang terisolasi, Anda tidak memilikinya.

Anda bisa mendapatkan modul GPS murah dan Raspberry Pi, komputer papan tunggal dengan konsumsi daya minimal dan kemampuan antarmuka yang luas. Kaitkan modul GPS Anda ke Raspberry Pi dan gabungkan Pi ke jaringan Anda, dengan perangkat lunak yang tepat, itu bisa menjadi server Stratum 1 NTP Anda yang menjadi server Stratum 2 Anda, atau karena Anda memilikinya di dalam jaringan Anda setiap komputer, sinkronkan waktu dengan.


sumber
2

NTPd akan menetapkan strata sendiri sesuai dengan:

  1. Jika penyimpangan jam lokal belum dinilai, atur strata ke 16. Proses ini memakan waktu sekitar 15 menit pada server normal, setelah itu dilanjutkan ke langkah berikutnya.
  2. Terhubung ke semua server waktu yang dikonfigurasi, nilai mana yang dapat diandalkan (dan karenanya lebih disukai), atur strata lokal ke strata server terendah yang dapat diandalkan plus satu. Jadi, jika server terpercaya terendah yang ditemukan adalah 1, maka lokal akan 2.

(Ini tidak harus urutan acara, tetapi urutan di mana mereka diproses untuk keperluan pengaturan strata lokal.)
(Juga, strata 16 tidak selalu berarti itu tidak disinkronkan).

Chris S
sumber
1
Mungkinkah karena Moon adalah mesin Windows XP Pro x64 yang menggunakan layanan NTP W32Time default yang sebenarnya adalah Simple NTP (SNTP), sehingga RackCard23 tidak melihatnya sebagai server NTP yang tepat, sehingga tidak akan pernah mengatur strata untuk yang lain dari 16?
fwgx
Doh, saya tidak melihat ini sebelum mengedit posting saya. Ini sangat mungkin. Adakah alasan untuk tidak menggunakan klien ntp yang tepat di bagian atas hierarki Anda? (Baik berbasis Windows, atau berbasis Unix)
Christopher Karel
2

Sebagai tambahan, saya akan memasukkan beberapa analisis dari output ntpq Anda. Hanya untuk membantu pemecahan masalah generik di masa depan, untuk Anda dan orang lain.

Pertama, dari server Anda:

[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

Kolom pertama menunjukkan dua server yang dikonfigurasi oleh mesin ini untuk disinkronkan. Yang perlu dicatat adalah kurangnya *atau +yang akan menunjukkan rekan yang disinkronkan, atau kandidat sekunder. Ini berarti server Anda tidak akan menggunakan entri-entri di sini, tetapi paling tidak memeriksa mereka.

Kolom tiga, "st", menunjukkan strata server tersebut. Dalam hal ini, itu menunjukkan bahwa kedua mesin tersebut menggunakan jam lokal mereka. (strata default 16) Tiga kolom terakhir akan menunjukkan seberapa jauh kedua jam itu. Baik dalam nilai "detik perbedaan jam", atau latensi antara kedua mesin, hingga perbedaan dalam latensi itu. Di sini, angka yang lebih tinggi lebih buruk.

Alasan untuk entri yang tidak disinkronkan seperti ini dapat bergantung pada beberapa faktor: Jika offset dalam jam terlalu banyak, maka ntp bahkan tidak akan mencoba, karena itu akan memperkenalkan lompatan yang terlalu besar di waktu setempat. Jika jitter menjadi buruk, klien akan melakukan sinkronisasi, sampai semuanya stabil. (Ini biasanya sementara, namun, terulang kembali) Secara bergantian, seperti dalam kasus Anda, jika server yang dikonfigurasi memiliki nilai strata yang sama atau lebih tinggi, menunjukkan mereka kurang dapat diandalkan sebagai sumber waktu, maka klien tidak akan menggunakannya.

--Christopher Karel

Christopher Karel
sumber