Discrepanță server NTP de 1 oră. Un exemplu de configurare a unui server NTP local pentru a lucra cu dispozitive NetPing


Sincronizarea timpului este o sarcină importantă, deși nu mulți oameni s-au gândit la asta. Ei bine, ce e în neregulă cu trecerea timpului pe un server? Știați că multe probleme de ceas afectează protocoalele legate de criptografie? Din acest motiv, în Active Directory, diferențele de ceas mai mari de 5 minute vor cauza probleme de autentificare Kerberos.

Niveluri orare. Strate.

Pentru a înțelege dispozitivul NTP, trebuie să cunoașteți conceptul straturi sau strat. Surse de timp autorizate, cum ar fi sateliți GPS, ceasuri atomice cu cesiu, unde radio WWVB - toate acestea stratul 0. Sunt autoritari pe baza faptului că au o modalitate de a menține o cronometrare foarte precisă. Puteți folosi, desigur, un ceas obișnuit cu quartz, dar știind că este ușor să pierdeți 15 secunde cu ele într-o lună, este mai bine să nu le folosiți ca măsură a timpului. Stratul 0 Acesta este momentul în care o secundă nu se pierde în 300.000 de ani!

Calculatoare de la care direct (nu prin rețea!) iau timp stratul 0- Asta stratul 1. Deoarece există întotdeauna întârzieri din cauza transmisiei semnalului și costurilor pentru setarea orei, calculatoarelor stratul 1 nu la fel de precis ca stratul 0, dar în viata reala diferența ajunge la câteva microsecunde (1 μs = 10 -6 s), ceea ce este o abatere complet acceptabilă.

Următorul nivel de computere care iau timp prin rețea stratul 1- acesta este... ruliu de tobe... intriga... stratul 2! Din nou din cauza diverselor întârzieri (întârzieri de rețea cu siguranță), stratul 2 putin in urma stratul 1 si cu siguranta de la stratul 0. În practică, aceasta este o diferență de la câteva microsecunde (1 µs = 10 -6 s) la câteva milisecunde (1 ms = 10 -3 s). Mulți oameni doresc să nu se sincronizeze mai departe cu stratul stratul 2.

După cum reiese din diagramă, stratul 4 ia timp de la un superior stratul 3. stratul 5 la stratul 4și așa mai departe. stratul 16 este considerat cel mai de jos strat și timpul se numără acolo nesincronizat.

Pentru a sincroniza ora folosind NTP, trebuie mai întâi să setați manual ora. Nu trebuie să existe o diferență de mai mult de 1000 de secunde între ora dvs. exactă și ceasul dvs. Dacă serverul de timp pe care îl utilizați stă mai mult de 1000 de milisecunde (1 secundă), acesta va fi exclus din listă și alții vor fi utilizați în schimb. Acest mecanism vă permite să filtrați sursele de timp proaste.

Client de timp.

În fișierul /etc/ntp.conf, liniile Server sunt importante pentru client. Pot fi mai multe dintre ele - până la 10 bucăți!

Cât de adăugat? Vă rugăm să rețineți:

  • Dacă aveți un singur server (server cu o linie), atunci dacă acest server începe să mintă, atunci îl veți urmări orbește. Dacă timpul lui expiră cu 5 secunde și alergi după el.
  • Dacă sunt adăugate 2 servere (2 linii de server), atunci NTP le va marca pe ambele ca tickere false. Dacă unul dintre ei minte, atunci NTP nu poate înțelege cine minte, deoarece nu există cvorum.
  • Dacă sunt adăugate 3 sau mai multe servere de timp, atunci poate fi identificat un mincinos tickere false. Dacă există 5 sau 6 servere de timp, atunci puteți găsi 2 mincinoși tickere false. Dacă există 7 sau 8 servere, atunci 3 tickere false. Dacă există 9 și 10 servere, atunci 4 tickere false.

Proiectul NTP Pool.

Există un proiect numit NTP Pool la care adresa pool.ntp.org/zone/ru/ puteți găsi servere de timp recomandate utilizatorilor ruși.

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

Sistemele de operare precum Debian și Ubuntu oferă utilizatorilor propriile servere de timp.

server 0.debian.pool.ntp.org
server 1.debian.pool.ntp.org
server 2.debian.pool.ntp.org
server3.debian.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

Dacă apelați la dvs computer Linux care folosește NTP, comanda ntpq -pn

Refișare de la distanță atunci când întârzierea sondajului de compensare ========================================== ============================================ +93.180.6.3 77.37.134.150 2 u 62 1024 377 53.658 -0.877 1.174 +85.21.78.23 193.190.230.65 2 u 1027 1024 377 54.651 0.167 1.518.913 * 1.581.913 .24 2 u 940 377 52.796 -0.143 1.001 +91.206.16.3 194.190.168.1 2 u 258 1024 377 93.882 -0.680 2.196 -91.189.94.4 193.79.237.14 2 u 596 1024 377 100.219 1.562 1.482

Ce spun numele coloanelor:

  • telecomanda- servere la distanță cu care sincronizați ora.
  • refid- strat superior pentru acest server.
  • Sf- nivelul stratului. De la 0 (nu este disponibil pentru noi) la 16 (nu este de dorit pentru noi). Ideal - 2.
  • t- tipul conexiunii. " u" - unicast sau manycast, " b" - difuzare sau multidifuzare, " l" ceas de referință local, " s" - nod simetric, " O" - server manycast, " B" - server de difuzare, " M" - server multicast.
  • când- timpul când ultima dată ne-a raspuns serverul. Parametrul afișează numărul în secunde, dar poate afișa în minute dacă numărul este cu m sau în ore dacă h.
  • sondaj- frecvența de sondare. Minim 16 secunde, maxim 32 de ore. Numărul trebuie să fie 2n. De obicei, acest parametru afișează fie 64 de secunde, fie 1024.
  • ajunge- 8 biți ai unui octet care indică starea comunicării cu un server de timp la distanță: reușit sau eșuat. Dacă biții sunt setați, atunci este succes, altfel este un eșec. Valoarea 377 este binară 0000 0000 1111 1111.
  • întârziere- valoarea în milisecunde arată timpul dintre trimiterea și primirea unui răspuns (timpul dus-întors - RTT).
  • offset- decalajul în milisecunde între dvs. și serverele de timp. Poate fi un număr pozitiv sau negativ.
  • frământare- indicând valoarea absolută în milisecunde abaterea standard compensarea ta.

Există un simbol înaintea adresei IP a serverului NTP - acesta este cod de numărare. Specie cod de numărare:

  • " " - aruncat ca invalid. De exemplu, nu există nicio legătură cu el sau este offline, este de un rang prea înalt și nu servește oameni ca tine.
  • "x"- respins de algoritmul de intersecție. Algoritmul de intersecție pregătește o listă de parteneri candidați care pot deveni surse de sincronizare și calculează un interval de încredere pentru fiecare dintre aceștia.
  • "." - aruncat din cauza preaplinării mesei.
  • "-" - eliminate de algoritmul cluster. Algoritmul de grupare sortează lista de candidați după nivel și coduri de distanță de sincronizare.
  • "+" - serverul este pornit de „algoritmul de combinare”. Acest server este un candidat excelent dacă serverul actual de timp începe să vă defecteze.
  • "#" - serverul este un excelent server de timp alternativ. Serverul cu # poate fi văzut numai dacă aveți mai mult de 10 intrări de server în /etc/ntp.conf
  • "*" - serverul de timp curent. Citirile sale sunt folosite pentru a vă sincroniza ceasul.
  • "o"- Server Puls pe secundă (PPS). Acest lucru înseamnă de obicei că serverul de timp în cauză utilizează surse de timp, cum ar fi sateliții GPS și alte semnale de timp precise. Dacă este desenat O, atunci alte tipuri de cod de numărare nu vor mai fi afișate.

În câmp refid poate avea următoarele valori:

  • Adresă IP - adresa serverului de timp la distanță.
  • .ACST.- Server NTP manycast.
  • .ACTS.- Automated Computer Time Service de la Institutul Național American de Standarde și Tehnologie.
  • .AUTH - eroare de autentificare.
  • .AUTO - eroare în secvențele Autokey.
  • .BCST.- Server de difuzare NTP.
  • .CHU.- Receptor radio cu unde scurte de la postul CHU din Ottawa, Ontario, Canada.
  • .CRYPT - Eroare de protocol Autokey.
  • .DCFx.- Receptor radio LF de la postul DCF77 din Mainflingen, Germania.
  • .DENY.- Acces refuzat.
  • .GAL.- Receptor satelit european Galileo.
  • .GOES.- Receptor American Geostationary Operational Environmental Satellite.
  • .GPS.- Receptor American Global Positioning System.
  • .HBG.- Receptor radio LF de la postul HBG din Prangins, Elveția.
  • .INIT.- Asocierea peer a fost inițializată.
  • .IRIG.- Inter Range Instrumentation Group cod de timp.
  • .JJY.- Receptor radio LF de la stația JJY din Muntele Otakadoya, lângă Fukushima sau Muntele Hagane de pe insula Kyushu, Japonia.
  • .LFx.- Receptor radio LF obișnuit.
  • .LOCL - ceas gazdă local.
  • .LORC.- Receptor radio LF de la Long Range Navigation (LORAN-C).
  • .MCST.- Server multicast NTP.
  • .MSF.- Stația de radio Anthorn lângă Anthorn, Cumbria.
  • .NIST.- Institutul Naţional American de Standarde şi Tehnologie.
  • .PPS.- Ceas puls pe secundă.
  • .PTB.- Physikalisch-Technische Bundesanstalt din Brunswick și Berlin, Germania.
  • .RATE - Pragul de sondare NTP a fost depășit.
  • .STEP - schimbați pasul NTP. Părtinire offset mai puțin de 1000 de milisecunde, dar mai mult de 125 de milisecunde.
  • .TDF.- Receptor radio LF de la postul TéléDiffusion de France din Allouis, Franța.
  • .TIME.- Timp de asociere NTP.
  • .USNO.- Observatorul Naval al Statelor Unite.
  • .WWV.- Receptor radio HF de la postul WWV din Fort Collins, Colorado, Statele Unite.
  • .WWVB.- Receptor radio LF de la postul WWVB din Fort Collins, Colorado, Statele Unite.
  • .WWVH.- Receptor radio HF de la postul WWVH din Kekaha, pe insula Kauai din Hawaii, Statele Unite.

În primul rând, scăpați de ideea cum să obțineți timp de la stratul 1, ei spun că sunt cel mai aproape de ora exactă. Sunt mai aproape de cea mai precisă oră de pe planetă, dar ei înșiși sunt supraîncărcați și au întârzieri mari RTT pentru serverele obișnuite. Mai bine găsește unul normal stratul 2și nu-ți face griji pentru asta. Nu uitați că vorbim despre microsecunde și milisecunde, adică viata obisnuita- destul.

În al doilea rând, rețineți că conectarea la cel mai apropiat server de timp nu este întotdeauna ideală. Ceea ce este mai important nu este proximitatea teritorială, ci nivelul stratului. Proiectul NTP Pool publică o listă de servere numai de nivel stratul 1Şi stratul 2și este mai bine să luați până la 10 servere de timp din această listă, ceea ce va fi grozav.

În al treilea rând, dacă ești un simplu utilizator-client acasă, atunci serverele recomandate pentru tine în sistemul tău de operare vor fi o opțiune ideală care nu necesită mișcări inutile.

Pentru birouri mari, cea mai buna varianta Ne vom ridica propriul server de timp pentru computerele de serviciu. Acest server va primi ora exacta de la serverele de timp de pe Internet și să-l furnizeze computerelor locale. Pe serverele Debian și Ubuntu, pur și simplu decomentați linia

Restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap

în fișierul de configurare al demonului ntpd - /etc/ntp.conf

Utilizatorii din rețeaua 192.168/16 vor putea lua citiri precise ale ceasului de pe serverul dvs. Pentru serverele interne bazate pe Linux care nu sunt servere de timp și sunt angajate în propriile sarcini, în loc să ruleze demonul ntpd în modul client, este suficient să îl specificați în fișierul /etc/cron.daily/syncntpd. Este recomandat să citiți diferențele dintre ntpdate și ntp și să decideți singur.
#!/bin/sh
/usr/sbin/ntpdate IP.address.of.your.server > /dev/null 2>&1
iesirea 0

iar o dată pe zi, datorită comenzii ntpdate, se va efectua sincronizarea orei. Pentru a evita neînțelegerile, nu fi leneș înainte de a implementa un server de timp și de a sincroniza totul prin protocolul NTP - setați manual ora corectă pe toate serverele și stațiile de lucru disponibile pentru dvs. Dacă timpul dvs. nesincronizat este prea diferit de cel corect, puteți ajunge la o mulțime de probleme inutile la început.

În al patrulea rând, NTP nu are nimic de-a face cu ce țară și ce fus orar sunt utilizate și cu modul în care are loc trecerea la ora de vară și de iarnă și dacă o astfel de tranziție se face într-o anumită țară. Această responsabilitate revine sistemului de operare, pe care trebuie să-l actualizați dacă apar modificări în ceasornicarie din țară. Pe sistemele Debian și Ubuntu, pachetul tzdata este responsabil pentru acest lucru și trebuie să fie actualizat.

În al cincilea rând, este mai bine să nu rulați serverul NTP pe un sistem foarte încărcat.

Bună ziua, invitați și cititori obișnuiți. Trec treptat de la elementele de bază la un studiu mai aprofundat despre Linux. Astăzi vreau să iau în considerare funcţionarea protocolului ntp, precum și setarea server de timp pe Linux(server ntp). Deci, să începem cu teoria.

Protocolul NTP

Network Time Protocol (NTP) - protocol de rețea pentru a sincroniza ceasul intern al computerului folosind rețele cu latență variabilă (a se citi „lățimea”/calitatea canalului).

NTP este folosit pentru munca sa Protocolul UDP și portul 123.

Versiunea actuală a protocolului - NTP 4. NTP folosește un sistem ierarhic "niveluri orare"(se mai numesc Strat). Nivelul 0 (sau Stratul 0)- acestea sunt de obicei dispozitive care sunt ceasuri atomice (moleculare, cuantice), ceasuri GPS sau ceasuri radio. Aceste dispozitive nu sunt de obicei publicate pe World Wide Web, ci sunt conectate direct la Servere de timp de nivel 1 prin protocolul RS-232 (indicat prin săgeți galbene în ilustrație). Nivelul 1 sincronizat cu ceasul de înaltă precizie nivelul 0, funcționează de obicei ca surse pentru servere nivelul 2. Nivelul 2 sincronizat cu una dintre mașini nivelul 1, iar sincronizarea cu servere de nivelul dvs. este, de asemenea, posibilă. Nivelul 3 functioneaza asemanator celui de-al doilea. De obicei, serverele de nivelul doi și mai jos sunt publicate în rețea. Protocolul NTP suportă până la 256 de niveluri. De asemenea, aș dori să remarc că serverele de nivel 1 și 2, și uneori chiar 3, nu sunt întotdeauna deschise accesului public. Uneori, pentru a vă sincroniza cu ele, trebuie să trimiteți o solicitare prin e-mail administratorilor de domeniu.

De ce există o restricție privind accesul la servere? Odată cu trecerea la fiecare nivel, eroarea relativă la serverul primar crește ușor, dar numărul total de servere crește si prin urmare .

Atribuirea unui server NTP în rețeaua locală

De ce am putea avea nevoie de un server NTP? De exemplu, există servicii în sisteme de operare, care poate depinde de ora sincronizată. Cel mai proeminent exemplu de astfel de servicii este protocolul de autentificare Kerberos. Pentru ca acesta să funcționeze, este necesar ca pe computerele accesate folosind acest protocol, ora sistemului să difere cu cel mult 5 minute. În plus, ora exactă pe toate computerele facilitează analiza jurnalelor de securitate atunci când se investighează incidentele de securitate. retea locala.

Moduri de operare server/client NTP

Client/server

Acest mod este de departe cel mai des folosit pe Internet. Schema de lucru este clasică. Clientul trimite o cerere, la care serverul trimite un răspuns într-un interval de timp. Clientul este configurat folosind directiva server din fișierul de configurare, unde este specificat numele DNS al serverului de timp.

Mod activ/pasiv simetric

Acest mod este utilizat dacă se realizează sincronizarea oră între un număr mare mașini egale. Pe lângă faptul că fiecare mașină se sincronizează cu o sursă externă, se sincronizează și cu vecinii săi (peers), acționând ca client și server de timp pentru aceștia. Deci, chiar dacă o mașină „pierde” o sursă externă, va putea în continuare să obțină ora exactă de la vecinii săi. Vecinii pot lucra în două moduri – activ și pasiv. Lucrând în modul activ, mașina în sine își transmite timpul către toate mașinile învecinate listate în secțiunea peers din fișierul de configurare ntp.conf. Dacă vecinii nu sunt indicați în această secțiune, atunci mașina este considerată a funcționa în modul pasiv. Pentru a preveni ca un atacator să compromită alte mașini prin prezentarea drept sursă activă, trebuie utilizată autentificarea.

Modul de difuzare

Acest mod este recomandat să fie utilizat în cazurile în care un număr mic de servere sunt în serviciu număr mare clientii. Când operează în acest mod, serverul trimite periodic pachete folosind adresa de difuzare a subrețelei. Un client configurat să se sincronizeze în acest mod primește pachetul de difuzare al serverului și se sincronizează cu serverul. O caracteristică a acestui mod este că timpul este livrat într-o subrețea (limitând pachetele de difuzare). În plus, autentificarea trebuie utilizată pentru a proteja împotriva atacatorilor.

Modul multicast

Acest mod este în multe privințe similar cu difuzarea. Diferența este că adresele multicast ale rețelelor de clasă D din spațiul de adrese IP sunt folosite pentru a livra pachete. Pentru clienți și servere, este specificată adresa grupului de multicast, pe care o folosesc pentru sincronizarea orei. Acest lucru face posibilă sincronizarea grupurilor de mașini situate pe diferite subrețele, cu condiția ca routerele care le conectează să accepte protocolul IGMP și să fie configurate să transmită trafic multicast.

Modul Manycast

Acest mod este o inovație în cea de-a patra versiune a protocolului NTP. Implică clientul să caute servere manycast printre vecinii săi de rețea, să primească mostre de timp de la fiecare dintre ele (folosind criptografia) și să selecteze, pe baza acestor date, cele trei „mai bune” servere manycast cu care clientul se va sincroniza. Dacă unul dintre servere eșuează, clientul își actualizează automat lista.

Pentru a transmite mostre de timp, clienții și serverele care operează în modul multicast folosesc adrese de grup multicast (rețele de clasa D). Clienții și serverele care folosesc aceeași adresă formează aceeași asociere. Numărul de asocieri este determinat de numărul de adrese multicast utilizate.

Timpul în Linux

Vă voi spune pe scurt ce oră există în Linux și cum să o setați. În Linux, ca și în alte sisteme de operare, există de 2 ori. Primul - hardware , numit uneori Ceas în timp real, prescurtat ( RTC) (alias ceasul BIOS) sunt de obicei asociate cu un cristal de cuarț oscilant care are o precizie de câteva secunde pe zi. Precizia depinde de diverse fluctuații, cum ar fi temperatura ambiantă. Al doilea ceas este intern ceasul programului , care apar continuu, inclusiv in timpul intreruperilor in functionarea sistemului. Acestea sunt supuse variațiilor din cauza încărcării mari a sistemului și a latenței întreruperii. Cu toate acestea, sistemul citește de obicei ceasul hardware la pornire și apoi îl folosește.

Data și ora sistemului de operare setat la pornire pe baza valorii ceas hardware, precum și setări de fus orar. Setările de fus orar sunt preluate din fișier /etc/localtime. Acest fișier este un link (dar mai adesea o copie) a unuia dintre fișierele din structura de directoare /usr/share/zoneinfo/.

Ceasurile hardware Linux pot stoca ora în format UTC(analog cu GMT) sau ora teritorială actuală. Recomandare generală la ce oră să setați (?) este după cum urmează: dacă pe computer sunt instalate mai multe sisteme de operare și unul dintre ele este Windows, atunci trebuie să utilizați ora curentă (deoarece Windows ia timpul din BIOS/CMOS și îl consideră local ). Dacă sunt folosite numai sisteme de operare ale familiei UNIX, atunci este recomandabil să stocați ora în BIOS în format UTC.

Odată ce sistemul de operare pornește, ceasul sistemului de operare și ceasul BIOS-ului sunt complet independente. Nucleul sistemului sincronizează ceasul sistemului cu ceasul hardware la fiecare 11 secunde.

După un timp, poate exista o diferență de câteva secunde între ceasul hardware și cel software. Ce ceasuri păstrează ora corectă? Nici una, nici alta până nu-l punem la punct sincronizare de timp.

Nota:

Nucleul Linux stochează și calculează întotdeauna timpul ca număr de secunde de la miezul nopții 1 ianuarie 1970 an, indiferent dacă ceasul este setat la ora locală sau universală. Conversia la ora locală se face în timpul procesului de solicitare.

Deoarece numărul de secunde de la 1 ianuarie 1970 UTC este stocat ca un întreg semnat pe 32 de biți (acest lucru este valabil pe sistemele Linux/Intel), ceasul tău va înceta să funcționeze cândva în 2038. Linux nu are o problemă cu anul 2000, dar are o problemă cu anul 2038. Din fericire, până atunci toate sistemele Linux vor rula pe sisteme pe 64 de biți. Un număr întreg pe 64 de biți va conține ceasul nostru până la aproximativ 292271 de milioane.

Server NTP Linux

Introducere

Există multe implementări pentru sincronizarea timpului pentru sistemul de operare Linux. Cele mai cunoscute sunt Xntpd (NTP versiunea 3), ntpd (NTP versiunea 4), Crony și ClockSpeed. În exemplul nostru vom folosi serverul ntpd.

Daemonul ntpd este atât un server de timp cât și un client, în funcție de setările fișierului de configurare /etc/ntpd.conf (uneori /etc/ntp.conf), demonul poate „primi” timp de la servere la distanță și „distribuie” timp pentru alte gazde.

General circuit de sincronizare a timpului pe rețeaua locală este după cum urmează: trebuie să aveți 1 sau 2 servere cu acces la rețeaua globală, care vor primi timp de la Internet. Toate computerele din rețeaua locală sunt sincronizate cu serverele specificate care primesc timp de pe Internet.

Instalarea ntpd

De fapt, instalarea demonului se rezumă la instalarea următoarelor pachete: ntp(pachetul care include demonul însuși), ntpdate(utilitatea pentru sincronizarea manuală a orei este depășită), ntp-doc(documentația pachetului), în unele distribuții va trebui să instalați același lucru ntp-utils(utilități de diagnostic), în unele sunt incluse în pachetul ntp. Am descris cum se instalează programe pe Linux în. După instalarea pachetului, în majoritatea distribuțiilor, demonul va fi deja configurat ca client ntp (de exemplu, acesta a fost cazul în Debian). În consecință, principalele fișiere de configurare au fost create automat: /etc/ntp.conf și /var/lib/ntp/ntp.drift și demonul a fost lansat automat.

Înainte de a configura demonul cu care să se sincronizeze lumea exterioară Aș sugera să setați data curentă a sistemului la o valoare cât mai apropiată de timp real posibil. Setarea datei în Linux produs de comanda: data MMDDhhmmCCYY.ss, unde MM - luna, DD - ziua lunii, hh - ore, mm - minute, CCYY - 4 cifre ale anului, ss - secunde. În același timp, valorile CCYY.ss nu este necesar să se indice.

După cum puteți vedea, comanda specificată va seta data și ora curentă la 27 decembrie 2010, 20:06:30. comanda data fără parametri, afișați ora curentă a sistemului. Această comandă are o mulțime de parametri, care pot fi găsiți în data man.

De asemenea, este necesar să configurați corect ceasul hardware și fusul orar. După cum sa menționat mai sus, fusul orar este configurat prin copierea fișierului de zonă necesar din director /usr/share/zoneinfo/ a dosar /etc/localtime:

Ntp-server:~# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Hardware Am setat ceasul la UTC:

# cat /etc/sysconfig/clock | grep UTC # UTC=true indică faptul că ceasul este setat la UTC; UTC=true ntp2-server:~# cat /etc/default/rcS | grep UTC UTC=da

Primul exemplu specifică un fișier de configurare care definește utilizarea UTC pentru RH, al doilea pentru distribuțiile Deb.

Pe lângă setarea setărilor pentru a utiliza ora UTC, trebuie să specificați timp hardware. (în cele mai multe cazuri acest lucru nu este necesar, deoarece ora de sistem specificată este inevitabil sincronizată cu hardware-ul, de către kernel). Dar totuși, dacă ai dorința să o faci... comanda hwclock citește și setează ceasul hardware pe baza parametrilor trecuți acestuia. Opțiunile disponibile sunt descrise în pagina de manual a comenzii. Iată câteva exemple de utilizare a hwclock:

Ntp-server# hwclock # citește ora de la ceasul hardware ntp-server# hwclock --systohc --utc # setează ora ceasului hardware la # UTC pe baza orei sistemului ntp-server# hwclock --systohc # setează ora ceasului hardware # la local ora bazată pe ora sistemului ntp-server# hwclock --set --date "22 Mar 2002 13:17" # setează ora ceasului hardware # la șirul specificat

O altă opțiune pentru modificarea orei din ceasul hardware este accesarea BIOS-ului atunci când sistemul pornește. Deoarece ora sistemului de operare este independentă de ceasul hardware, orice modificare a BIOS-ului va fi luată în considerare la următoarea pornire.

Acum că avem totul pregătit și instalat, să trecem la setare.

Gestionarea demonului ntpd

Controla demonul ntpd nu este diferit de controlul oricăror alți demoni. Porniți sau reporniți serviciul ntpd:

#/etc/init.d/ntp start #/etc/init.d/ntp restart

Stop:

#/etc/init.d/ntp stop

#/bin/kill `cat /var/run/ntpd.pid`

Daemonul are următorii parametri de lansare:

P - fișier PID,
-g - permite tranziția la mare salt
-c - fișier de configurare
-q - forță sincronizarea manuală

Configurarea serverului ntpd

În primul rând, vă sfătuiesc să modificați parametrii de lansare a demonului în următorul fișier de configurare:

Ntp-server:~# cat /etc/default/ntp NTPD_OPTS="-g"

# cat /etc/sysconfig/ntpd # Parametrii pentru demonul NTP. # Vezi ntpd(8) pentru mai multe detalii. .... # Specifică parametri suplimentari pentru ntpd. NTPD_ARGS="-g"

Acest parametru vă va permite să sincronizați ceasul, chiar dacă există o diferență de timp foarte mare.

Deci, după cum am spus, informațiile de configurare demonul ntpd este în dosar /etc/ntp.conf. Sintaxa fișierului este standard, ca în multe alte configurații: liniile goale și liniile care încep cu caracterul „#” sunt ignorate. Iată un exemplu simplu:

Ntp-server:~# cat /etc/ntp.conf server ntplocal.example.com prefer server timeserver.example.org server ntp2a.example.net driftfile /var/db/ntp.drift

Parametru server specifică ce servere vor fi folosite pentru sincronizare, câte unul pe fiecare linie. Dacă serverul este specificat cu argument prefera, Cum ntplocal.example.com, atunci acest server are preferință față de celelalte. Răspunsul de la serverul preferat va fi eliminat dacă diferă semnificativ de răspunsurile altor servere, în caz contrar va fi folosit fără a ține cont de alte răspunsuri. Argument prefera Utilizat în mod obișnuit pentru serverele NTP despre care se știe că sunt foarte precise, cum ar fi cele care utilizează echipamente dedicate de timp de precizie.

Parametru driftfile specifică fișierul care este utilizat pentru a stoca offset-ul ceasului de sistem. Din câte am înțeles, acest fișier stochează permanent o valoare, care se formează pe baza analizei ajustărilor de timp trecute, iar dacă sursele externe de timp devin indisponibile, atunci ajustarea timpului are loc în funcție de valoarea din fișier. derivă. Nu trebuie modificat prin alte procese. Și înainte de a specifica acest fișier în configurație, fișierul trebuie creat.

În mod implicit, serverul NTP va fi accesibil tuturor gazdelor de pe Internet. Parametru restrângeîn dosar /etc/ntp.conf vă permite să controlați ce mașini pot accesa serverul dvs. Dacă doriți împiedicați toate mașinile să vă acceseze serverul NTP, adăugați următoarea linie la fișier /etc/ntp.conf:

restrictioneaza implicit ignora

Dacă doriți permite sincronizează-ți ceasul numai cu serverul tău mașinile din rețeaua dvs, Dar interzice ei configura serverul sau fiți participanți egali la sincronizarea timpului, apoi în loc de cele de mai sus, adăugați linia:

restrictioneaza 192.168.1.0 masca 255.255.255.0 nomodify notrap

unde 192.168.1.0 este adresa IP a rețelei dvs. și 255.255.255.0 este masca de rețea. /etc/ntp.conf poate conține mai multe directive de restricție.

Pentru o funcționare corectă și mai precisă a demonului, este recomandabil să selectați servere de nivel - din stratul 2 (puteți, desigur, stratul1, dar va trebui să pierdeți timpul căutând un astfel de server) și din stratul selectat. 2 cele la care există o „distanță” minimă. De obicei, astfel de servere pot fi furnizate de ISP-ul dumneavoastră. Numărul de servere selectate este de dorit - mai mult de 2 sau 3 decât mai multe subiecte mai bine, dar în limite rezonabile. Dacă vă este prea lene să alegeți cele mai bune servere, atunci puteți lua lista de servere deschise de nivelul doi de aici: http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers.

Selectarea unei liste de servere NTP de referință

Mergem la adresa specificată (http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers) și selectăm o listă de servere inițiale. Din această listă selectăm servere care îndeplinesc cerințele noastre analizând rezultatul comenzii ntpdate. La executarea comenzii, se folosește următoarea sintaxă:

ntpdate parametri servers_separated by_space

Pentru a ne asigura că interogarea noastră nu aduce modificări sistemului, trebuie să folosim parametrul -q, care specifică utilizarea interogării fără a face modificări. De asemenea, este posibil să utilizați comutatorul -d, indicând că comanda va fi executată în modul de depanare, cu ieșirea Informații suplimentare, fără a face modificări reale (cu această cheie se afișează o grămadă de alte gunoaie :), de care avem nevoie în acest moment nu este necesar). Alți parametri pot fi găsiți în man 8 ntpdate. Din linkul specificat, am selectat toate serverele Open Access situate în Rusia (RU) + cel furnizat de furnizor și am rulat comanda, sa dovedit cam așa:

Ntp-server:~# ntpdate -q ntp2.ntp-servers.net ntp1.vniiftri.ru ntp2.vniiftri.ru ntp4.vniiftri.ru ntp0.ntp-servers.net ntp1.ntp-servers.net ntp3.vniiftri.ru ntp.corbina.net server 88.147.255.85, stratul 1, offset 0.006494, întârziere 0.09918 server 62.117.76.142, strat 1, offset 0.002552, întârziere 0.06920 0.06920 server 0.06920, offset 0.62.11 1 47, întârziere 0.06918 server 62.117.76.140, stratul 1, offset 0.004823, întârziere 0.07350 server 88.147.254.228, stratul 1, offset -0.002355, întârziere 0.12030 server 88.147.254.229, stratul 1, întârziere 92.12.005 server -12.007 .76.13 8, stratul 1, offset 0.005331, întârziere 0.07401 server 195.14 .40.141, stratul 2, offset 0.002846, întârziere 0.07188 13 ian 19:14:09 ntpdate: ajustați ora serverului 62.117.76.141 offset 0.003147 sec

În exemplu, serverele noastre au emis cu succes nivelul stratum1, ceea ce este o veste bună (cu excepția serverului furnizorului), offset este diferența de timp cu acest server în secunde, întârzierea este întârzierea sincronizării în secunde. De obicei, b DESPRE O precizie mai mare se obține atunci când se utilizează servere care au o latență scăzută în transmiterea pachetelor prin rețea. Pentru a identifica acest lucru, puteți utiliza . În consecință, mai întâi selectându-i pe cei cu timp de răspuns mai mic și dintre ei pe cei cu mai puține hopuri. Pentru a nu pierde timpul, voi folosi toate serverele specificate și le voi introduce în fișierul de configurare. În total, știind toate cele de mai sus, voi descrie fișierul rezultat /etc/ntp.conf:

Ntp-server:~# cat /etc/ntp.conf # Servere de rețea locală (comentate, neutilizate - există un server în rețea) #server 192.168.0.2 #server 192.168.0.5 # Server de internet server ntp2.ntp- servers.net server ntp1.vniiftri.ru server ntp2.vniiftri.ru server ntp4.vniiftri.ru server ntp0.ntp-servers.net server ntp1.ntp-servers.net server ntp3.vniiftri.ru server ntp.corbina.net # Fișierele serverului driftfile /var/lib/ntp/ntp.drift fișier de jurnal /var/log/ntpstats # restricționarea accesului la server: # implicit ignorăm totul restricționează implicit ignore # localhost fără parametri - asta înseamnă că totul este permis. Parametrii se aplică numai interdicțiilor. restricționează 127.0.0.1 # În continuare sunt descrise serverele cu care ne sincronizăm în rețeaua locală. # Le permitem totul, cu excepția capcanelor și solicitărilor către noi restricționați 192.168.0.2 noquery notrap restrict 192.168.0.5 noquery notrap # pentru local, permitem și totul, cu excepția capcanelor și modificărilor restrict 192.168.0.1 mask 255.255.255.0 nomodify # permit notrap time surse nomodify acces: restricționează ntp2.ntp-servers.net restricționează ntp1.vniiftri.ru restricționează ntp2.vniiftri.ru restricționează ntp4.vniiftri.ru restricționează ntp0.ntp-servers.net restricționează ntp1.ntp-servers.net restricționează ntp3.vniiftri.ru restricționează ntp.corbina.net # și acesta este un hack care stabilește nivelul de încredere al serverului (stratele) la sine egal cu 3 # pe scurt, cu cât nivelul este mai mare, cu atât numărul este mai mic. 0 este ceasul atomic, #1 este sincronizat cu acesta, 2 este cu primul și așa mai departe. server 127.127.1.1 fudge 127.127.1.1 stratul 3

Pentru o înțelegere și o configurare mai aprofundată a serverului, voi descrie câțiva parametri de configurare ntpd pe care nu i-am menționat::

  • activare/dezactivare auth/monitor/pll/pps/stats - pornire/oprire modul de operare:
    • auth- comunica cu vecinii nemenționați doar în modul de autentificare;
    • monitor- permite monitorizarea cererilor;
    • pll- permite setarea frecvenței ceasului local prin NTP;
    • statistici- permite colectarea de statistici;
  • statisticiloopstats- cu fiecare modificare a ceasului local, scrie o linie într-un fișier loopstats;
  • statisticipeerstats- fiecare comunicare cu un vecin este înregistrată într-un jurnal stocat într-un fișier peerstats;
  • statisticiceasuri- fiecare mesaj de la driverul de ceas local este scris într-un jurnal stocat într-un fișier ceasuri;
  • statsdir(nume_catalog_cu_statistici)- specifică numele directorului în care vor fi amplasate fișierele cu statistici server;
  • filegen - definește un algoritm pentru generarea numelor de fișiere, care constau în:
    • prefix- parte constantă a numelui fișierului, setată fie în timpul compilării, fie prin comenzi speciale de configurare;
    • nume de fișier- adăugat la prefix fără bară oblică, două puncte sunt interzise, ​​pot fi schimbate cu tasta de fișier;
    • sufix- generat în funcție de tip;
  • restrângeadresa numerică- stabilește restricții de acces: pachetele sunt sortate și mascate, adresa sursă este luată și comparată secvențial, este luat un steag din ultima comparație reușită acces:
    • fara steaguri- da acces;
    • ignora- ignora toate pachetele;
    • noquery- ignora pachetele NTP 6 si 7 (cerere si modificare stare);
    • nomodify- ignora pachetele NTP 6 si 7 (modificare de stare);
    • limitat- deservește doar un număr limitat de clienți dintr-o rețea dată;
    • nupa- servește gazda, dar nu se sincronizează cu ea;
  • clientlimitlimită- pentru steag limitat determină numărul maxim de clienți serviți (implicit 3);

Deci, avem ntpd-server, care se sincronizează cu lumea exterioară, vă permite să primiți timp pentru clienții din rețeaua locală 192.168.0.1 cu o mască de 255.255.255.0 și poate fi și sincronizat cu serverul local (dacă decomentați mai multe rânduri). Tot ce trebuie să facem este să setăm clienți și să învățăm cum să ne monitorizăm serverul.

Monitorizarea serverului ntpd și sincronizare

Odată ce ai totul setat. NTP va păstra ora sincronizată. Acest proces poate fi observat folosind comanda NTP Query (ntpq):

Ntp-server:~# ntpq -p remote refid st t atunci când sondaj atinge întârziere offset jitter =============================== ==================================================== ============ -n3 timp1.d6.hsd.PPS. 1 u 34 64 177 70.162 2.375 8.618 +ntp1.vniiftri.r .PPS. 1 u 33 64 177 43.479 -0.020 10.198 *ntp2.vniiftri.r .PPS. 1 u 6 64 177 43.616 -0.192 0.688 +ntp4.vniiftri.r .PPS. 1 u 4 64 177 43.623 0.440 0.546 -n1.time1.d6.hsd .PPS. 1 u 53 64 77 92.865 -11.358 38.346 -ns1.hsdn.org .GPS. 1 u 40 64 177 78.057 -3.292 35.083 -ntp3.vniiftri.r .PPS. 1 u 44 64 77 47.667 2.292 2.611 -scylla-l0.msk.c 192.43.244.18 2 u 62 64 77 41.565 -1.564 28.914

Această comandă cu comutatorul -p tipărește la ieșirea standard o listă de surse de timp cu caracteristicile lor (parametrii de comandă rămași sunt în man ntpq). Semnificația fiecărei coloane este următoarea:

Numele serverului NTP la distanță. Dacă specificați comutatorul -n, veți obține adrese IP ale serverului în loc de nume.

Indică de unde își primește timpul fiecare server în prezent. Acesta ar putea fi un nume de gazdă sau ceva de genul .GPS., indicând sursa Sistemului de poziționare globală.

Stratul (nivelul) este un număr de la 1 la 16 care indică acuratețea serverului. Unul înseamnă acuratețe maximă, 16 înseamnă că serverul este indisponibil. Nivelul tău va fi egal cu nivelul celui mai puțin precis server la distanță plus 1.

Interval între sondaje (în secunde). Valoarea se va schimba între ratele minime și maxime de sondare. La început, intervalul va fi mic, astfel încât sincronizarea să aibă loc rapid. Odată ce ceasurile sunt sincronizate, intervalul începe să crească pentru a reduce traficul și încărcarea pe serverele de timp populare.

O reprezentare octală a unei matrice de 8 biți care reflectă rezultatele ultimelor opt încercări de conectare la server. Bitul este setat dacă serverul la distanță a răspuns.

Timpul (în secunde) necesar pentru a primi un răspuns la întrebarea „Cât este ceasul?”

Cel mai important domeniu. Diferența dintre ora serverului local și la distanță. Pe măsură ce sincronizarea progresează, această valoare ar trebui să scadă (mai aproape de zero), indicând faptul că ceasul mașinii locale devine mai precis.

Dispersia (Jitter) este o măsură a abaterilor statistice de la valoarea offset (câmpul offset) pe mai multe perechi reușite cerere-răspuns. O valoare de dispersie mai mică este de preferat, deoarece permite o sincronizare a timpului mai precisă.

Semnificația caracterelor înaintea numelor de server

x - sursă falsă conform algoritmului de intersecție;
. - exclus de pe lista candidaților din cauza distanței lungi;
- - eliminat din lista de candidați prin algoritmul de clustering;
+ - incluse în lista finală de candidați;
# - selectat pentru sincronizare, dar există 6 cei mai buni candidați;
* - selectat pentru sincronizare;
o - selectat pentru sincronizare, dar este folosit PPS;
spațiu - un nivel prea mare, o buclă sau o eroare evidentă;

serviciu ntpd„inteligent” și ea însăși elimină sursele de timp care sunt prea în afara limitelor rațiunii. La ceva timp după pornire, ntpd va selecta cele mai fiabile surse de date și se va sincroniza cu acestea. Lista serverelor NTP de referință pe care le prezentăm este revizuită în mod regulat de către serviciu.

Puteți verifica posibilitatea de sincronizare local pe server cu comanda:

Ntp-server:~# ntpdate -q localhost server 127.0.0.1, stratul 2, offset -0.000053, întârziere 0.02573 server::1, stratul 2, offset -0.000048, întârziere 0.02571 14 ian. ::1 offset -0,000048 sec

Din rezultatul comenzii este clar că serverul nostru a atins deja nivelul stratului 2. Va dura ceva timp pentru a ajunge la acest nivel. Poate că în primele 10-15 minute nivelul serverului va fi mai ridicat.

Funcționarea corectă a serverului ntp poate fi apreciată și din jurnalele demonului ntpd:

Ntp-server:~# cat /var/log/ntpstats/ntp 13 ian 20:13:16 ntpd: Ascultare pe interfața #5 eth0, fe80::a00:27ff:fec1:8059#123 Activat 13 ian 20:13: 16 ntpd: Ascultare pe interfața #6 eth0, 192.168.0.8#123 Activat 14 ian 14:31:00 ntpd: sincronizat cu 62.117.76.142, stratul 1 14 ian 14:31:10 ntpd 14:31:10 10 ian. :31:10 ntpd: modificarea stării de sincronizare a orei nucleului 0001 14 ian 14:34:31 ntpd: sincronizat cu 88.147.255.85, stratul 1 14 ianuarie 14:36:04 ntpd: sincronizat cu 62.117.255.85, 4 ian. 04:36 ntpd: sincronizat cu 62.117.76.142, stratul 1 14 ian 15:10:58 ntpd: sincronizat cu 62.117.76.140, stratul 1 14 ianuarie 15:17:54 ntpd: nu 14 ian. : sincronizat cu 62.117.76.140, stratul 1 14 ian 15:32:14 ntpd: resetare timp +13.139105 s

Configurarea netfilter (iptables) pentru un server NTP

După ce ați configurat serverul, ar fi o idee bună să-l protejați. Știm că serverul rulează pe portul 123/udp, iar cererile sunt trimise și de la portul 123/udp. După citirea articolului și familiarizarea cu cele practice, puteți crea reguli pentru filtrarea traficului de rețea:

Ntp ~ # iptables-save # reguli iptables tipice pentru DNS *filter:INPUT DROP :FORWARD DROP :OUTPUT DROP -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP # permite accesul la rețeaua locală la serverul NTP: -A INPUT -s 192.168.1.1/24 -d 192.168.1.1/32 -p udp -m udp --dport 123 -m conntrack - -ctstate NOU -j ACCEPT -A IEȘIRE -o lo -j ACCEPT -A IEȘIRE -p icmp -j ACCEPT -A IEȘIRE -p udp -m udp --sport 32768:61000 -j ACCEPT -A IEȘIRE -p tcp - m tcp --sport 32768:61000 -j ACCEPT -A IEȘIRE -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # permite accesul serverului NTP pentru a face cereri de ieșire -A OUTPUT -p udp -m udp --sport 123 -- dport 123 -m conntrack --ctstate NEW -j ACCEPT COMMIT

Acesta este un exemplu tipic! Pentru a seta regulile iptables pentru a se potrivi sarcinilor și configurației rețelei, trebuie să înțelegeți cum funcționează netfilter în Linux citind articolele de mai sus.

Configurarea mașinilor client

Pentru a sincroniza ora pe mașinile UNIX rețeaua locală, este recomandabil să folosiți utilitarul ntpdate, rulându-l de mai multe ori pe zi, de exemplu la fiecare oră. Pentru a face acest lucru, trebuie să adăugați următoarea linie:

0 * * * * /usr/sbin/ntpdate -s

Comutatorul -s direcționează ieșirea comenzii. Dacă mașinile client au câțiva megaocteți suplimentari de RAM, atunci puteți rula demonul ntpd, la fel ca pe server cu următoarea configurație:

Server restricționează implicit ignoră restricționează noquery notrap restrict 127.0.0.1 nomodify notrap

Cred că totul este clar în această configurație: sursa de timp (serverul) este serverul ntpd local, interziceți accesul tuturor, permiteți doar serverul ntpd local.

De asemenea, pe clienți este necesar să specificați corect în ce format să stocați ora și să selectați fusul orar corect.

Pentru a configura clientul Windows NTP, trebuie să rulați următoarele comenzi în consolă:

C:\>net time /setsntp: Comanda a fost finalizată cu succes. C:\>net stop w32time Serviciul Windows Time se oprește. Serviciul Windows Time a fost oprit cu succes. C:\>net start w32time Serviciul Windows Time pornește. Serviciul Windows Time a fost pornit cu succes. C:\>net time /querysntp Valoarea curentă SNTP este: Comanda a fost finalizată cu succes.

Concluzie

Ei bine, asta e! Volumul articolului s-a dovedit a fi enorm... nici nu mă așteptam. Permiteți-mi să rezum cele de mai sus. În acest articol, sper că ne-a devenit clar ce este și cum funcționează un server NTP. A învățat cum să configurați serverul și clienții pe mașinile UNIX și Windows. În câteva cuvinte, structura sincronizării orei într-o rețea locală este următoarea: Există 1,2 sau mai multe servere de timp în rețeaua locală, își sincronizează timpul cu surse externe din rețeaua globală. Setările serverului și clientului se bazează pe fișierele /etc/ntp.conf (fișierul principal de configurare al demonului ntpd), /etc/localtime (fișierul de fus orar curent), precum și /etc/sysconfig/ntp (pentru RH ) și /etc/default /ntp (pentru Deb) - fișiere cu parametri de lansare a demonului. Pentru un server ntp local, fișierul de configurare specifică servere externe pentru obținerea timpului și permite accesul acestor servere folosind parametrul restrict, precum și pentru computerele din rețea locală, se specifică sursa de timp - servere locale din rețeaua locală; și accesul este, de asemenea, interzis tuturor, cu excepția sursei de timp din rețeaua locală. Toate. Vă mulțumim tuturor pentru atenție! Voi fi bucuros să comentez!

  • (arhiva articolelor) descrie cum să conectați GPS-ul la server pentru a vă organiza propriul server de oră exactă la nivel Stratum1.
  • descrie cum se configurează autorizarea pe un server ntp.

MSK-IX NTP Server este un server de timp public acceptat de MSK-IX. Serverul de timp exact este conceput pentru a sincroniza ceasurile interne ale computerelor și echipamentelor de rețea (servere, routere, smartphone-uri etc.) cu o sursă de referință folosind protocolul NTP.

Serverul MSK-IX NTP se referă la cel mai înalt nivel precizie (Stratum One Time Servers) într-un sistem ierarhic de niveluri de timp. Semnalul de la sistemele globale de navigație prin satelit GLONASS (prioritate) și GPS este utilizat ca semnal temporal de referință.

MSK-IX NTP Server este implementat ca o grupare de servere situate în Moscova, Sankt Petersburg, Ekaterinburg și Novosibirsk. Utilizarea tehnologiei de rețea anycast asigură fiabilitate ridicată și răspuns rapid al sistemului în toată țara.

Serverele MSK-IX sunt de asemenea incluse în pool-ul internațional de servere NTP POOL.NTP.ORG, utilizate pe scară largă în setările sistemului de operare.

Cum să începeți să utilizați serviciul NTP Server?

Utilizați următorii parametri când vă configurați hardware-ul:

Numele serverului ntp.msk-ix.ru
adresa IPv4 194.190.168.1
adresa IPv6 2001:6d0:ffd4::1

Cum se stabilește peering-ul cu rețeaua de servere MSK-IX NTP?

Pentru a scurta ruta rețelei la serverul MSK-IX NTP, utilizați serviciul Route Server sau stabiliți peering direct cu rețeaua MSK-IX DNS Cloud. Interacțiunea peer-to-peer se stabilește pe baza unei cereri suplimentare în cadrul contractului de conectare la MSK-IX fără plată suplimentară.

Toată lumea este deja obișnuită cu serviciul de sincronizare a timpului NTP - este activat implicit sau ușor activat pentru cele mai populare sisteme de operare. Cu toate acestea, ce precizie se obține? Ce tipuri de servere de timp exacte există și cu care pot lucra simplii muritori? Care sunt capcanele și cum să alegeți serverele de timp „potrivite”?

Tipuri de servere

Serverele vin în Stratul 1 și 2, 3 (rar mai mare).

Stratul 1- primiți ora exactă direct de la o sursă de timp exactă: ceasuri atomice (de exemplu time-a.nist.gov, precizie - trilioane de secundă) sau receptor GPS (ntpx.imvp.ru precizie - miliarde de secundă). Există servere care primesc ora exactă prin intermediul rețelei celulare CDMA (milioane de secundă). Când lucrați cu ntpd, puteți afla tipul de server folosind comanda ntpq -np: „PPS” înseamnă GPS, „ACTS” înseamnă conexiune directă la ceasul atomic (există și alte statistici valoroase - ping, ping jitter, server rangul (1 ,2...)).

„Simpli” muritorilor le este strict interzis să acceseze serverele Stratum-1, deoarece sarcina lor este deja foarte mare (și multe servere Stratum-1 nu au deloc acces public). Se crede că vă puteți conecta la serverele Stratum-1 sau puteți solicita acces la ele dacă rulați un server NTP care deservește cel puțin 100 de clienți. Lista completă serverele pot fi văzute aici: support.ntp.org/bin/view/Servers/StratumOneTimeServers. Desigur, este recomandabil să vă conectați la serverele din țara dvs.

Stratul 2- primiți ora exactă de la serverele Stratum-1. Cu configurarea și selectarea corectă a serverelor sursă de timp exactă, eroarea este mai mică de 1 ms. De obicei, toată lumea se poate conecta, dar multe servere mor în mod regulat din cauza încărcării (de exemplu, time.windows.com). www.pool.ntp.org menține liste round-robin de servere publice Stratum-2 NTP. Acest lucru asigură echilibrarea sarcinii și sunt aproape întotdeauna disponibile. Vă puteți conecta la aceste servere la adresele 0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org și 3.ru.pool.ntp.org (aceasta este pentru Rusia, selectată aleatoriu dintr-o listă de ~50 de servere).

Stratul 3- primiți timp de la serverele Stratum-2 etc.

Precizie practică

Stratul-1
Acesta este un grafic al diferenței dintre ora sistemului și timpul primit de la serverele Stratum-1 (canonical.com - serverul Stratum-2, pentru comparație).
*.nist.gov - situat în SUA, din cauza ping-ului „înalt” apar uneori „explozii” teribile. Eroarea de la serverele rusești Stratum-1 se încadrează de obicei în +- 1 ms.

Stratul-2
Aceasta este diferența cu serverele Stratum-2: 4 din pool-ul rusesc, 1 din pool-ul european, serverul de timp Ubuntu implicit (europium.canonical.com) și același *.nist.gov:


Serverele care vă atrag imediat atenția sunt cele cu o eroare constantă de până la 20 ms.

Relua

PS. Apropo, în mod implicit în Ubuntu, sincronizarea orei are loc o singură dată când sistemul pornește. Dacă timpul de funcționare este de aproximativ șase luni, timpul se poate epuiza foarte mult. Instalați ntpd - ajustează timpul în mod constant și „liniștit” (fără smucituri bruște, „untând” încetinirea/accelerarea timpului). În Windows, sincronizarea are loc o dată pe zi pe săptămână într-un „salt”, ceea ce poate cauza dificultăți la procesarea jurnalelor dacă există o diferență mare.

Tovarăși!

Dați un număr mare de servere NTP publice în Rusia! Mai ales Stratum-1 (în general avem probleme cu ele, 2-3 bucăți pentru întreaga exURSS). Apropo, ora exactă poate fi luată de la Glonass, cine se va angaja să lanseze primul server alimentat de Glonass?

Există multe servicii în sistemele de operare a căror funcționare normală depinde de precizia ceasului sistemului. Dacă serverul nu este setat la ora corectă, acest lucru poate cauza diverse probleme.

De exemplu, o rețea locală necesită sincronizarea ceasurilor mașinilor care partajează fișiere - altfel va fi imposibil să setați corect orele de modificare a fișierelor. Acest lucru, la rândul său, poate provoca conflicte de versiuni sau suprascrierea datelor importante.

Dacă serverul nu este setat la ora exactă, vor apărea probleme cu joburile Cron - nu este clar când vor rula. Va fi foarte dificil să analizați jurnalele de evenimente ale sistemului pentru a diagnostica cauzele defecțiunilor și defecțiunilor...

As putea continua mult timp...

Pentru a evita toate problemele descrise, trebuie să configurați sincronizarea ceasului sistemului. În Linux, NTP (Network Time Protocol) este folosit pentru aceasta. În acest articol vom vorbi în detaliu despre cum să instalați și să configurați NTP pe server. Să începem cu o mică introducere teoretică.

Cum funcționează NTP

Protocolul NTP se bazează pe o structură ierarhică a serverelor de timp, în care se disting diferite niveluri (strate). Nivelul 0 include ceasuri de referință (ceasuri atomice sau ceasuri GPS). La nivelul zero, serverele NTP nu funcționează.

Serverele NTP de nivel 1, care sunt surse pentru serverele de nivel 2, sunt sincronizate cu ceasul de referință. Serverele de nivel 2 sunt sincronizate cu serverele de nivel 1, dar se pot sincroniza și între ele. Serverele de la nivelul 3 și mai jos funcționează într-un mod similar. În total, sunt acceptate până la 256 de niveluri.

Structura ierarhică a protocolului NTP este caracterizată de toleranță la erori și redundanță. În cazul erorilor de conectare cu serverele din amonte, serverele de rezervă preiau procesul de sincronizare. Redundanța asigură disponibilitatea constantă a serverelor NTP. Prin sincronizarea cu mai multe servere, NTP utilizează date din toate sursele pentru a calcula cea mai precisă oră.

Instalarea și configurarea unui server NTP

Cel mai faimos și răspândit software de sincronizare a timpului este demonul ntpd. În funcție de setările specificate în fișierul de configurare (acest lucru va fi discutat mai jos), acesta poate acționa atât ca server, cât și ca client (adică poate atât să primească timp de la gazde la distanță, cât și să îl distribuie altor gazde). Mai jos vom descrie în detaliu cum să instalați și să configurați acest demon pe OC Ubuntu.

Instalare

Programul NTP este inclus în kiturile de distribuție ale majorității sistemelor Linux moderne și este instalat folosind un manager de pachete standard:

$ sudo apt-get install ntp

Setări

Odată ce instalarea este finalizată, deschideți fișierul /etc/ntp.conf într-un editor de text. Stochează toate setările programului. Să le privim mai detaliat.

Opțiuni de înregistrare

Prima linie a fișierului de configurare arată astfel:

Driftfile /var/lib/ntp/ntp.drift

Specifică un fișier pentru stocarea informațiilor privind frecvența decalajului de timp. Acest fișier stochează valoarea rezultată din ajustările anterioare de timp. Dacă serverele externe NTP devin indisponibile dintr-un motiv sau altul, valoarea va fi preluată de la acesta.

Fișier jurnal /var/log/ntp.log

Lista de servere pentru sincronizare

Fișierul de configurare specifică lista serverelor NTP cu care se va efectua sincronizarea. Implicit arată astfel:

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

Fiecare linie înseamnă un grup de servere care vor raporta ora corectă serverului nostru. Puteți crește acuratețea sincronizării folosind opțiunea iburst (indică că nu unul, ci mai multe pachete trebuie trimise la server pentru sincronizare):

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

De asemenea, puteți specifica serverul preferat folosind opțiunea de preferință:

Server 0.ubuntu.pool.ntp.org iburst prefer

Serverele NTP sunt împrăștiate în toată lumea (de exemplu, iată o listă a serverelor NTP publice disponibile). Pentru a asigura o setare mai precisă a ceasului sistemului, se recomandă sincronizarea numai cu serverele ntp din regiunea în care se află serverul nostru geografic. Pentru a face acest lucru, în fișierul de configurare /etc/ntp.conf trebuie să specificați subdomeniul regional pentru pool.ntp.org în adresele serverului:

  • Asia - asia.pool.ntp.org;
  • Europa - europe.pool.ntp org;
  • Africa - africa.pool.ntp.org;
  • America de Nord - north-america.pool.ntp.org;
  • America de Sud - south-america.pool.ntp.org;
  • Oceania - oceania.pool.ntp.org.

De asemenea, puteți specifica subdomenii pentru țări individuale (pentru mai multe detalii, consultați). Există și un subdomeniu pentru Rusia - ru.pool.ntp.org

Backup exact pentru serverul de timp

Un server NTP care este deconectat de la Internet dintr-un anumit motiv poate transmite datele de ceas de sistem pentru sincronizare. Pentru a face acest lucru, trebuie să adăugați următoarea linie la fișierul de configurare:

Server 127.127.1.0

Restricții

Recent, cazurile de utilizare a serverelor NTP pentru amplificarea traficului în atacurile DDoS au devenit mai frecvente (pentru mai multe detalii, vezi, de exemplu,). Pentru a preveni ca serverul nostru să devină victima unui abuz, ar fi util să stabilim restricții de acces pentru clienții externi. În mod implicit, următoarele restricții sunt setate în fișierul /etc/ntp.conf:

Restrict −4 default kod notrap nomodify nopeer noquery restrict −6 default kod notrap nomodify nopeer noquery

Opțiunile nomodify, notrap, nopeer și noquery împiedică clienții terți să modifice ceva pe server. Parametrul kod (abreviere pentru kiss of death) oferă protecție suplimentară: un client care trimite prea multe solicitări va primi mai întâi un așa-numit pachet kod (avertisment de refuz de serviciu) și apoi va fi deconectat de la server.

Pentru ca mașinile din rețeaua locală să se poată sincroniza cu serverul NTP, adăugați următoarea linie la fișierul de configurare:

Restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

Pentru gazda locală, puteți configura accesul la serverul NTP fără restricții:

Restricționați 127.127.1.0

Verificarea sincronizării

După ce toate modificările necesare au fost făcute în fișierul de configurare și salvate, reporniți serverul NTP:

$service restart ntp

Apoi rulați următoarea comandă:

$ntpq -pn

Rezultatele sale vor fi prezentate sub forma unui tabel:

Refișare de la distanță atunci când întârzierea sondajului de compensare ========================================== ============================ *62.76.96.4 130.173.91.58 2 u 207 256 37 10.985 -215.79 256.992 +85.21.87. 22.41 2 u 193 256 37 32.623 -207.70 259.121 +31.131.249.27 89.175.22.41 2 u 198 256 3 7 0.621 -216.981.90 216.917 .166.20 2 u 193 256 37 32.028 - 207.41 259.863 +91.189.94.4 193.79.237.14 2 u 192 256 37 50.573 -206.62 259.542

Tabelul indică următorii parametri:

  • remote — adresa exactă a serverului de timp (această coloană afișează serverele din lista din fișierul de configurare);
  • refid — server de nivel superior (cel de la care serverul din coloana anterioară primește sincronizare);
  • st — nivel de server (strat);
  • t — tip peer (u-unicast, m-multicast);
  • când — ora ultimei sincronizări;
  • poll — timpul în secunde în care demonul NTP se sincronizează cu peer-ul;
  • reach — starea disponibilității serverului; după opt încercări de sincronizare reușite, valoarea acestui parametru devine 377;
  • delay — timpul de întârziere pentru răspunsul de la server;
  • offset — diferența de timp dintre serverul nostru și serverul de sincronizare; valoare pozitivă acest parametru înseamnă că ceasul nostru este rapid, negativ înseamnă că rămâne în urmă;
  • jitter — decalaj de timp pe serverul de la distanță.

Următoarele simboluri pot fi indicate în stânga adresei serverului:

  • * server selectat pentru sincronizare;
  • + server potrivit pentru actualizare (cu care te poți sincroniza);
  • — sincronizarea cu serverul nu este recomandată;
  • serverul x este indisponibil.

Puteți verifica dacă serverul din listă este potrivit pentru sincronizare folosind comanda:

Ntpdate -q server хх.ххх.ххх.ххх, stratul 2, offset −0.127936, întârziere 0.02600 7 iulie 14:30:23 ntpdate: ajustați serverul de timp хх.ххх.ххх.ххх.х16 sec.

Din rezultatul de mai sus este clar că serverul este potrivit pentru sincronizare, nivelul său este 2, offset-ul este de 0,127936 ms, latența este de 0,026 ms.

De asemenea, puteți afla cum a avut loc sincronizarea (cu succes sau cu erori) din jurnalele:

7 iulie 15:17:17 ntpd: sincronizat cu 91.198.10.4, stratum=2 7 iulie 15:17:17 ntpd: sincronizarea orei nucleului dezactivată 0041 7 iulie 15:17:21 ntpd: sincronizarea orei nucleului activată 0041

Setarea datei și orei locale

Folosind comanda ntpdate, puteți seta data și ora locală pe server, trimițând o solicitare corespunzătoare către serverul NTP.



Publicații pe această temă