Időszinkron Debian Etch alatt NTP segítségével

Rengeteg oka van annak, miért érdemes a kiszolgálók óráit szinkronizálni valamilyen time szerverhez. Levelezés, titkosított kapcsolatok, naplók elemzése, mind-mind megköveteli a pontos időt a szervereken. Ebben segít az NTP (Network Time Protocol), mely csomagkapcsolt adathálózatokon keresztüli időszinkronizálást valósít meg.

Network Time Protocol

A jelenlegi NTP szabvány az NTP version 3, mely az RFC 1305 definiál. Az NTP version 4 jelenleg is fejlődik, változik és még nincs lefektetve RFC-ben. A Simple NTP (SNTP) version 4 az RFC 2030 dokumentumban van leírva.
Nagyon nem érdemes elmerülni a protokoll rejtelmeiben, viszont akit érdekel további információkat talál róla a megfelelő RFC-ben, valamint az NTP honlapján.
Azok a szerverek, melyek az interneten lévő többi eszköz részére nyújtanak pontos időt, többféle forrásból is kaphatják a saját idejüket. A legpontosabb, az egyetemek, kutatólaborok által üzemeltetett atomórák által szolgáltatott idő. Nyilván ezekhez csak viszonylag kevés NTP szerver férhet hozzá, viszont több más egyszerűbb eszköz is van, mely pontos időt szolgáltathat az NTP szervereknek. Az egyik megoldás, mely rohamosan terjed manapság, egy GPS (Global Positioning System) eszköz, a másik pedig a DCF77 rádiós óra. Ez utóbbi kettő is legalább ezred másodperc nagyságrendű pontosságot képes nyújtani.
Az NTP ügyfelek ezekhez az NTP kiszolgálókhoz szinkronizálhatók, mégpedig egyszerre többhöz, hogy nagyobb pontosságot és megbízhatóságot érjenek el.

A szükséges szoftver komponensek telepítése

Debian Etch alatt az ntpdate és ntp csomagok használhatók ezen feladat elvégzésére.
A szokásos egyszerűséggel installálhatjuk a szükséges csomagokat:

apt-get install ntp ntpdate

ntpdate

Legfontosabb feladat, hogy a rendszer óráját felfutás után szinkronizáljuk. Az ntpdate parancs használható erre a célra. Az Etch úgy oldja meg ezt a problémát, hogy lefuttatja az ntpdate parancsot, amikor egy hálózati interfészt felhoz. A /etc/network/if-up.d/ntpdate script fogja szinkronizálni a rendszer óráját a konfigurációs fájlban megadott NTP kiszolgálóhoz.
A konfiguráció a /etc/defaults/ntpdate fájlban található:

NTPDATE_USE_NTP_CONF=yes
NTPSERVERS="0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org"
NTPOPTIONS="-u -v -s"

Az NTPDATE_USE_NTP_CONF beállítás lehetővé teszi, hogy az ntpdate parancs az ntp daemon konfigurációs fájljából vegye az NTP szerver nevét. Ha ez false-ra van állítva, akkor az NTPSERVERS konfigurációs beállítás lesz az érvényes.
Az ntpdate parancsot bármikor meghívhatjuk, a rendszer óra beállítása végett, akár egy cron bejegyzést is lehet létrehozni, amely naponta frissíti a rendszer óráját. Sokkal kifinomultabb azonban - állandó internet kapcsolattal rendelkező rendszereknek elsősorban ez ajánlott - ha az ntp daemont állítjuk be, mely folyamatosan figyeli és pontosítja az időt a rendszeren.

ntp

Az ntp szerver konfigurációs állománya az /etc/ntp.conf fájl. Ebben megadható saját NTP kiszolgáló is. A Debian default beállítás a debian.pool.ntp.org. Érdemes magyar szervereket is beállítani, melyek közelebb vannak a rendszerünkhöz. Ilyen lehet az ubul.kfki.hu NTP szerver.
Az NTP kiszolgálók a konfigurációs fájlban:

server 148.6.0.1
server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst

A kiszolgáló újraindítása után kell egy kis idő a szinkronizáláshoz. Az NTP elég lassan állítja be a pontos időt, így kell egy kis türelem az eredményhez. A későbbiek folytán az ntptrace parancsot használva ellenőrizhetjük az NTP daemon működését:

ns1[stefan]$ ntptrace
localhost.localdomain: stratum 4, offset -0.000025, synch distance 0.088803
ns1.netmasters.hu: stratum 3, offset -0.000069, synch distance 0.075222
trillian.net.astrum.ch: stratum 2, offset 0.000947, synch distance 0.035045
ntps1-1.cs.tu-berlin.de: stratum 1, offset -0.000012, synch distance 0.001029, refid 'PPS'

Ezzel a paranccsal nyomonkövethetjük, hogy rendszerünk mely szervereken keresztül kapja az órajeleket.
Használhatjuk még az ntpdc segédprogramot is különböző információk megszerzésére. Az ntpdc használható interaktív és parancssoros módban is. Például a rendszerünk órája és a távoli kiszolgáló órájának különbsége:

ns1[root]# ntpdc -c loopinfo
offset: 0.000132 s
frequency: -84.905 ppm
poll adjust: 27
watchdog timer: 497 s

De ugyanezt megtehetjük interaktív módban is:

ns1[root]# ntpdc
ntpdc> loopinfo
offset: 0.000634 s
frequency: 99.539 ppm
poll adjust: 30
watchdog timer: 2363 s