NTP seadistamine Ubuntus
Autor
Nimi: Martin Leppik
Rühm: A21
Aasta: 2013 kevad
Sissejuhatus
NTP on UDP/IP protokoll aja süntroniseerimiseks üle võrgu. Toimib see nii, et klient teeb päringu serverile, et hetkelist kellaaega teada saada ning kasutab saadud vastust oma kella seadmiseks. Selle lihtsa seletuse taga on tegelikult küllaltki palju keerukust (hierarhiline mudel), millest tuleb juttu hiljem.[1] Network Time Protocol sai alguse 1985. aastal ning on üks vanemaid hetkel kasutatavatest Interneti protokollidest.[2]
Hierarhiline mudel
Kasutatakse hierarhilist mudelit, kus serverid on jagatud kihtidesse. Igal kihil on oma number, mida nimetatakse stratumiteks (Stratum 0-3). [3]. Mida suurem number, seda suurem viivitus võrreldes stratum 0 ehk etalonserveriga. [4] Olenevalt NTP protokolli versioonist, toetatakse kuni 256 kihti, kuid 16 esimest on rakendatud.
- Stratum 0 seade
Kas aatom-, GPS- või raadiokell. Need seadmed ei ole otse ühendatud võrku, vaid on seotud mõne arvutiga (näiteks spetsiaalse ühendusliidese kaudu).
- Stratum 1 [6]
Need ongi arvutid, millega on ühenduses stratum 0 seadmed. Stratum 2 kihi jaoks käituvad nad serveritena. Võivad saada aja ka teiselt sama kihi ajaserverilt.
- Stratum 2
Ajaserver, mis on ühenduses stratum 1 serveriga võrgu kaudu. Stratum 2 saab oma aja NTP päringuga startum 1 või 2 serverilt.
- Stratum 3
Töötab samal põhimõttel nagu startum 2 ajaserver, mis tähendab, et saab oma aja ühe kihi võrra kõrgemalt ning on serveriks ühe kihi võrra madalamale serverile.
Igas võrgus soovitatakse hoida oma ajaserverit, millelt saavad kella kõik võrgu liikmed. [7]
Turvalisus
- Ühtse aja hoidmine on oluline teiste teenuste turvalisuse tagamiseks.
- NTP tagab selle, et logifailide kellajad oleksid erinevate süsteemides samad.
- Regulaarselt vaadatakse üle protokolli lähtekoodi muudatused.
- NTP serveri turvamiseks kasutatakse pääsunimekirja ja autentimist
- Pääsunimekiri on IP ja võrgumaskide ning lubade baasil.
- Autentimine toimub sümmeetriliste võtmete abil (sama võti serveril ja kliendil). [8]
Paigldamine
Paigaldame ajaserveri tarkvara
sudo apt-get install ntp |
Manuaali lugemiseks
man ntp.conf |
Konfiguratsioonifaili redigeerimine (võid ka kasutada oma lemmikud tekstiredaktorit):
nano /etc/ntp.conf |
Seadistamine
1) Ava uuesti ntp.conf
nano /etc/ntp.conf |
2)Serveri ntp.conf sisu näide ja seletus[9]
#Kogume infot riistvaralise kella ujumise kohta ja kasutame teenuse stardil esmase allikana driftfile /var/lib/ntp/ntp.drift #Määrame serverid - Eesti soovitatavad ajaserverid: http://www.pool.ntp.org/zone/ee #Soovitatav on kasuta eesti ajaservereid, kuna need on täpsemad. Siin on üks näide. server ntp.eenet.ee #Paneme viimaseks serveriks localhosti - kui net on maas siis ei lähe ntp kinni server 127.0.0.1 #Vaikepääsu reeglid IPv4 ja IPv4 jaoks restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery #Pääsureegleid saab seada per ip/võrk restrict 192.168.56.0 mask 255.255.255.0 nomodify notrap |
Abistavad lingid konfigureerimiseks:
- http://www.ubuntugeek.com/network-time-protocol-ntp-server-and-clients-setup-in-ubuntu.html
- http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch24_:_The_NTP_Server#.UaJ_CZy0MnM
3) Pääsukontroll ehk restrict ridade seletus
- restrict address [ mask netmask ] [ flag ] [ ... ]
- restrict default - määrab vaikeseaded
- järgmised restrict määrangud on lubavad, kui nad ei konkreetselt ei keela
- restrict 192.168.13.0 mask 255.255.255.0 lubab 192.168.13 võrgul muuta ja pärida seadeid
Lipud:
- ignore - ignoreerime pakette ja päringuid sellest võrgust
- kod - kiss-of-death pakett saadetakse, kui lipp limited on seatud ja klient eksib discard korralduses esitatud seadete vastu
- limited - keelab liiga tihti päringuid teinud kliendid (ei arvestata ntpq ja ntpdc päringud)
- notrap - keelab andmast ntp 6 režiimi kontrollteate lõksuteenust sobivatale hostidele. Lõksuteenus (trap service) on ntpdq kontrollteadete prtokolli allsüsteem, mis on mõeldud kasutamiseks kaughalduse sündmuste logimise programmidele.
- nomodify - keelab ntpq ja ntpdc päringud, mis üritavad muuta serveri olekut (näiteks ajamuutmine). Päringud, mis tagastavad infot, on lubatud.
- nopeer - keelab paketid, mille tulemusena võiks tekkida uus assotsiatsioon.
- noquery - ignoreerib NTP 6 ja 7 režiimi pakette (informatsiooni ja konfiguratsiooni pärinugud) allikast. Ei mõjuta ajateenust. [10]
Abistav link:
Kliendi seadistus
2)Kliendi ntp.conf sisu näide ja seletus[11]
server 192.168.56.200 |
Kui teed ntp.conf failis muudatusi, siis jäta meelde, et tuleb teha ntp teenusele taaskäivitus.
Toimi nii:
service ntp restart |
NTP over DHCP
DHCP võimaldab automaatselt jagada klientidele NTP serverit. Siin on juhend, kuidas seda tööle saada:
1) Kasutatav DHCP server peab olema konfigureeritud jagama NTP servereid (konfis on selle jaoks valik).
2) Seadista oma dhclient pärima NTP servereid (vaikimisi ta ei tee seda). Selle tegemiseks lisa ntp-serverid päringu (request) reale siin: /etc/dhcp3/dhclient.conf.
3) Loo /etc/ntp.conf fail kõikide sätetega, mida soovid kasutada. Sellest failist tehakse /etc/ntp.conf.dhcp nimeline konfifail ega kirjutada üle.
4) Sinu ntpd peab olema määratud, et ta kasutaks /etc/ntp.conf.dhcp konfifaili, kui see on olemas. See on tavaliselt saavutatud ntp init skriptis (näiteks /etc/init.d/ntp).[12]
Testimine
Enne testimist tee läbi kaks juhendit.
Juhend 1: Kuidas keelata VirtualBoxi'l guest OS kellaaja sünkroniseerimine host OS vastu.[13]
Kuna VirtualBox sünkroniseerib "pisikese" aja tagant oma kella sinu operatsioonisüsteemi vastu, siis järgmisteks testideks on see soovituslik ära keelata.
1) Ava Terminal
2) Sisesta käsk
VBoxManage setextradata "Soovitud Masina Nimi" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "1" |
3) Kui soovid ühel hetkel, et siiski sünkroniseeriks, siis toimi samamoodi, aga käsk, mida sisestama pead on
VBoxManage setextradata "Soovitud Masina Nimi" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "0" |
Juhend 2: NTP sünkroniseerimise kiirendamine: [14]
Kui NTP server käima tõmmata, võib minna tüütult palju aega, et meie server sünkroniseeriks end mõne konfis oleva referents-serveri vastu.
NTP deemoni konfifail /etc/ntp.conf toetab võtmesõna iburst, mis lisatakse vajadusel server ridade lõppu, näiteks:
server 0.pool.ntp.org iburst |
Võtmesõna iburst ütleb, et kui antud server on kättesaamatu, siis saadetakse välja 8 paketist koosnev pakettide "purse", vaikimisi 2-sekundiliste vahedega. Mõte selles, et näiteks ebastabiilse võrgu korral, kui esimesele paketile vastust ei saada, üritataks väikese vahega uuesti, mitte ei oodataks, kuni pollimise intervall täis tiksub. Vaikimisi minimaalne pollimise intervall nimelt on 64 sekundit.
Kui kombineerida võtmesõnu burst, iburst, minpoll ja maxpoll, saab sünkroniseerimise sagedust märkimisväärselt tõsta, kuid neid võtmesõnu tuleb eriti avalike serverite vastu sünkroniseerides kasutada ettevaatlikult, sest need tekitavad tavapärasest palju tihedamat NTP liiklust. Samas iburst üksinda peaks mõjuma ainult siis, kui võrk parasjagu kättesaamatu on.
NTP testimiseks toimi nii:
Kuupäeva vaatamine
date |
Riistvaralise kella vaatamine
hwclock -r |
1) Pane riistvaralisele kellale väga vale aeg
hwclock --set --date="9/22/99 12:00:00" |
2) Kopeeri riistvaraline aeg süsteemseks ajaks
hwclock --hctosys |
3) Vaata, kas süsteemne kell muutus erinevaks?
date |
4) Kuna süsteemne kell on liiga vale, siis NTP server ise seda õigeks ei muuda.
Toimi nii:
service ntp stop |
5) Järgmisena tee läbi kogu protsess (4 punkt jäta vahele), aga muuda kellaeg näiteks 30 sekundit valeks ning vaata, kas kellaeg läheb õigeks.
Tööriistad
ntpdate
Kasutatakse kella ja kuupäeva seadmiseks:
1. alglaadimisel enne ntp käivitamist
2. kella seadmiseks, kui aeg on ntp jaoks liiga vale
3. vahel tehakse cron abil aja seadmist (ei soovitata)
4. kui süsteemi aeg vajab seadmist üle poole sekundi, siis seatakse uus aeg koheselt [15]
ntpq -pn
- Kliendi näide:
remote refid st t when poll reach delay offset jitter ============================================================================== *192.168.56.200 193.40.133.142 2 u 12 64 377 0.207 -94.946 24.069 127.0.0.1 .STEP. 16 l - 1024 0 0.000 0.000 0.000
Seletus:
Kuna tegemist on kliendiga, siis valitud on ntp.conf failis märgitud server, mille vastu sünkroniseeritakse.
- Serveri näide:
remote refid st t when poll reach delay offset jitter ============================================================================== *193.40.133.142 .GPS. 1 u 31 64 377 7.040 -0.804 0.464 +131.188.3.220 .GPS. 1 u 27 64 377 29.641 -0.176 0.333 -5.39.184.2 83.98.201.134 3 u 45 64 377 34.465 -0.643 0.214 +178.79.160.57 131.188.3.221 2 u 27 64 377 36.414 -0.404 0.263 127.0.0.1 .INIT. 16 l - 1024 0 0.000 0.000 0.000
Seletus:
On näha, et kasutusel on nimeserver ip-ga 193.40.133.142 ja asub stratum 1 kihil.
ntpq -p
- Kliendi näide:
remote refid st t when poll reach delay offset jitter ============================================================================== *ns.ubuntu.infra 193.40.133.142 2 u 47 64 377 0.229 18.736 69.581 ip6-localhost .STEP. 16 l - 1024 0 0.000 0.000 0.000
Kontroll:
Kui sa näed oma serverit valituna, siis klient on õigesti seadistatud.
- Serveri näide:
remote refid st t when poll reach delay offset jitter ============================================================================== *ntp.eenet.ee .GPS. 1 u 27 64 377 6.560 -0.871 0.504 +ntp0.rrze.uni-e .GPS. 1 u 24 64 377 29.660 -0.207 0.339 -5.39.184.2 83.98.201.134 3 u 40 64 377 34.532 -0.835 0.417 +www.bhay.org 131.188.3.221 2 u 23 64 377 36.493 -0.172 0.455 localhost .INIT. 16 l - 1024 0 0.000 0.000 0.000
Kontroll:
Vaata, kas käsu väljundis on näha eelnevalt määratud ntp server.
Parameetrite seletus:
remote:
* = praegune ajaallikas
# = allikas valitud, kuid vahemaa ületab maksimaalse väärtuse
o = allikas valitud ja Pulse Per Second (PPS) kasutusel
+ = allikas valitud ja kaasatud lõplikus hulgas
x = allikal vale kell
. = allikas valitud kandidaatide nimekirja lõpust
- = allikas ära visatud klaster algoritmi poolt
blank = allikas ära visatud kõrge stratumi tõttu
refid:
Ajaserverid
stratum:
Stratumi kihi number
t - (types available):
l = lokaalne etalonkell (local, näiteks GPS, WWVB)
u = unicast (kõige levinum)
m = multicast
b = broadcast
- = netaddr
when:
mõõdunud aeg sekundites viimasest vastusest
poll:
oleku kontrollimise intervall sekundites allika jaoks
reach:
näitab, kas allika kättesaamine oli edukas või mitte. Kood 377 tähendab, et kõik katsed olid edukad.
delay:
näitab aega sekundites, mis kulub alates päringust kuni vastuse saamiseni
offset:
näitab ajavahet millisekundites kliendi serveri ja allika vahel.
disp/jitter:
näitab erinevust sekundites kahe näidisaja vahel. [16]
Kasutatud materjalid
- http://enos.itcollege.ee/~mernits/skriptimine/bash/src/juurteenused-ntp.html#9
- https://help.ubuntu.com/community/UbuntuTime
- http://www.endruntechnologies.com/stratum1.htm
- http://tech.kulish.com/2007/10/30/ntp-ntpq-output-explained/
- http://nlug.ml1.co.uk/2012/01/ntpq-p-output/831
- https://wiki.itcollege.ee/index.php/NTP_Ubuntus