NTP

Linux.fista
Siirry navigaatioon Siirry hakuun

Tietokoneen kello ei yleensä pysy kovin hyvin ajassa ja ajan asettaminen tarkasti luotettavasta lähteestä itse voi olla hankalaa. Eräs ratkaisu tähän on käyttää Internetistä löytyviä aikapalvelimia NTP-protokollan kautta. Tässä artikkelissa kerrotaan NTP-protokollaa käyttävän ntpd-taustaprosessin asentamisesta ja käyttämisestä sekä ntpdate-ohjelmasta.

Yleistä[muokkaa]

Unix-koneet käyttävät aikaa monesssa yhteydessä ja väärin käyvä kello voi aikaansaada erinäisiä kummallisuuksia. Myös kellon asettaminen, varsinkin taaksepäin, sekoittaa joitakin ohjelmia. Koneessa kannattaa siis olla jokin ohjelma, joka huolehtii kellon pitämisestä ajassa. Internetiin kytketyssä koneessa asia on helppo hoitaa hyvin.

Ntpdate asettaa kellon aikaan halutun aikapalvelimen mukaan. Ntpdaten käyttämä NTP-protokolla mahdollistaa kellon tarkan synkronoinnin aikapalvelimelta. Ntpdatessa on kuitenkin se huono puoli, että se ei säädä tietokoneen kellon käyntinopeutta. Kellon saa asetettua aikaan, mutta sitten se ryömii itsekseen taas pois ajasta. Toisaalta Ntpdaten käyttö on yksinkertaisempaa.

Ntpd pitää yhteyttä aikapalvelimiin ja säätää kellon käyntinopeutta "jatkuvasti". Yksi hyvä puoli verrattuna esimerkiksi cronissa ajettavaan ntpdate komentoon on se, ettei kellonaika muutu hyppäyksittäin aina synkronoitaessa. Linux sisältää kellonsäätömekanismin, jota ntpd käyttää. Kun tietokoneen kellon käyntinopeus on mitattu, kello pysyy ajassa vaikka Internet-yhteys välillä katkeaisikin.

Aikapalvelimien yhteydessä mainitaan usein stratum-arvo. Stratum kertoo, miten kaukana atomikellosta tai muusta tarkasta ajanlähteestä kyseinen palvelin on. Stratum 0 on itse kello tai laite, joka ylläpitää aikaa tai saa sen radiolähetyksistä, esimerkiksi GPS-signaalista. Stratum 1 on aikapalvelin, joka on suoraan kytkettynä em. kelloon. Stratum 2 on stratum 1 -palvelimelta ajan saava palvelin jne.

Ntpd voidaan asettaa tarkkailemaan useita aikapalvelimia, joista se käyttää aina parhaaksi toteamaansa mm. verkkoliikenteen viiveiden perusteella. Yksityiskäyttäjien tulisi välttää kuormittamasta stratum 1 -palvelimia, joten kannattaa valita joitakin stratum 2- tai stratum 3 -palvelimia ntpd:lle seurattaviksi. Esimerkiksi yliopistot ja jotkin operaattorit ylläpitävät aikapalvelimia.

Ntpdate[muokkaa]

Ntpdate löytyy yleensä jakelun paketinhallinnasta nimellä ntpdate. Tämän paketin asentamisen jälkeen kellon voi asettaa aikaan komennolla

ntpdate aikapalvelin

Esimerkiksi kellonaika päivitettäisiin funetin aikapalvelimelta seuraavasti:

# ntpdate ntp1.funet.fi
3 Oct 16:36:42 ntpdate[3637]: adjust time server 193.166.5.177 offset -0.006747 sec

Ntpdate tulostaa käytetyn aikapalvelimen osoitteen ja tiedon siitä, paljonko kellonaikaa jouduttiin siirtämään (tässä vain muutamia millisekunteja).

Ntpd:n tämä toiminnallisuus sisältyy nykyään ohjelmaan ntpd, eri valitsimilla, ja ntpdate-ohjelmasta ollaan luopumassa.

Ntpd[muokkaa]

Asennus ja konfigurointi[muokkaa]

Ntp-ohjelmisto löytyy esimerkiksi NTP-projektin kotisivuilta, mutta se löytyy myös käytännössä kaikkien jakeluiden paketinhallinnasta (etsi paketteja ntp, ntpd ja ntpdate).

Seuraavaksi pitää muokata ntp.conf-asetustiedostoa, joka luultavimmin löytyy /etc-hakemistosta (voit etsiä sitä komennolla locate ntp.conf / locate ntpd.conf). Jakelusta riippuen tiedostossa voi jo olla joitain asetuksia, mutta tarkista ainakin aikapalvelimet. Otetaan käyttöön pool.ntp.org-palvelimet:

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

HUOM! Ntpd kuuntelee paitsi aikapalvelimia, se myös saattaa ottaa vastaan yhteyksiä mistä tahansa. Kannattaa siis varmistaa, että vain omalta koneelta on mahdollista päästä antamaan komentoja käynnissä olevalle ntpd:lle varmistamalla, että asetustiedostosta löytyy rivit:

restrict default nopeer noquery notrap nomodify
restrict 127.0.0.1

Lisäksi asetustiedostossa voi olla asetettuna esimerkiksi loki- ja drift-tiedostojen paikat, mutta niihin ei tarvitse koskea:

logfile /var/log/ntpd.log
driftfile /etc/ntp.drift

Käyttö[muokkaa]

Edellä tehtyjen toimenpiteiden jälkeen ntpd:n pitäisi olla valmis käynnistettäväksi. Ntpd-palvelun käynnistäminen on jakelukohtainen toimenpide, ja lisäksi jotkin jakelut voivat vaatia lisäasetuksia. Käynnistäminen onnistuu yleensä seuraavasti:

# systemctl start ntp

tai

# service ntp start

tai

# ntpd

Kun ntpd-palvelu on ollut käynnissä jonkin aikaa, voi tilanteen tarkistaa ntpq -p -komennolla:

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp3.tdc.fi     .PPS.            1 u  124   64  376  247.901   -9.736 580.067
+ntp.viidakko.ne 62.237.86.234    2 u   52   64  377  249.327   19.665  37.129
+cl-849.hel-01.f 62.237.86.238    2 u   26   64  377  139.049    6.629 229.462
-vonku.hankala.f 193.79.237.14    2 u   22   64  377  219.853    9.170 625.716

Tulosteessa tähti palvelimen nimen edessä tarkoittaa tällä hetkellä pääpalvelimeksi valittua aikapalvelinta, plus tarkoittaa kandidaattia ja miinus syystä tai toisesta hylättyä palvelinta. Reference id:n jälkeen tulee palvelimen stratum-arvo st, tyyppi t (local, unicast, multicast tai broadcast), miten kauan sitten edellinen NTP-paketti vastaanotettiin (when) ja mikä on kyselyväli (poll) sekunneissa. Viive (delay), aikaero (offset) ja hajonta (jitter) ovat millisekunneissa.

Mahdollisia ongelmia[muokkaa]

  • Jos ntpd ei suostu käynnistymään, vaan valittaa siitä, että koneesi kello on liian kaukana oikeasta ajasta, voit asettaa kellon käsin suurin piirtein oikeaan aikaan date-komennolla tai pakottaa ntpd:n asettamaan ajan komennolla
ntpd -q -g

Tämä vastaa suurin piirtein sitä, mitä komento ntpdate tekee. Ntpdate-ohjelma on vanhentunut ja se on poistumassa ohjelmistosta. Huomaa, että varsinkin ajan muuttaminen taaksepäin voi sekoittaa monia ohjelmia.

  • Mikäli ntp.conf-tiedostoon tekemäsi asetukset mystisesti katoavat ja käytät DHCP:tä, voi syynä olla se, että DHCP-asiakasohjelma saa DHCP-palvelimelta jotkin asetukset ja ylikirjoittaa ntp.conf:n. Tämän voi luultavasti kaikissa DHCP-asiakasohjelmissa myös kieltää.

Katso myös[muokkaa]

Aiheesta muualla[muokkaa]