Idővel a számítógép órája hajlamos elmászni. A hálózati idő protokoll (Network Time Protocol, NTP) az egyik módja az óránk pontosan tartásának.
Rengeteg internetes szolgáltatás elvárja vagy éppen előnyben részesíti a számítógép órájának pontosságát. Például egy webszervertől megkérdezhetik, hogy egy állományt adott ideje módosítottak-e. A helyi hálózatban az egyazon állományszerveren megosztott állományok ellentmondásmentes dátumozása érdekében szinte elengedhetetlen az órák szinkronizálása. Az olyan szolgáltatások, mint a cron(8) is komolyan építkeznek a pontosan járó rendszerórára, amikor egy adott pillanatban kell lefuttatniuk parancsokat.
A FreeBSD alapból az ntpd(8) NTP szervert tartalmazza, amellyel más NTP szerverek segítségével tudjuk beállítani gépünk óráját, vagy éppen idővel kapcsolatos információkat szolgáltatni másoknak.
Az óránk egyeztetéséhez egy vagy több NTP szerverre lesz szükségünk. Előfordulhat, hogy a hálózati rendszergazdánk vagy az internet-szolgáltatónk már beállított egy ilyen szervert erre a célra. Ezzel kapcsolatban olvassuk el a megfelelő leírásokat. A nyilvánosan elérhető NTP szerverekről készült egy lista, ahonnan könnyedén ki tudjuk keresni a számunkra leginkább megfelelő (hozzánk legközelebbi) szervert. Ne hagyjuk figyelmen kívül a szerverre vonatkozó házirendet és kérjünk engedélyt a használatához, amennyiben ez szükséges.
Több, egymással közvetlen kapcsolatban nem álló NTP szerver választásával járunk jól, ha netalán az egyikük váratlanul elérhetetlenné vagy az órája pontatlanná válna. Az ntpd(8) a visszakapott válaszokat intelligensen használja fel, mivel esetükben a megbízható szervereket részesíti előnyben.
Ha a számítógépünk indításakor akarjuk egyeztetni az óránkat, akkor erre az ntpdate(8) nevű programot használhatjuk. Ez olyan asztali gépek számára megfelelő választás, amelyeket gyakran indítanak újra és csak időnként kell szinkronizálnunk. A legtöbb gépnek viszont az ntpd(8) használatára van szüksége.
Az ntpdate(8) elindítása olyan esetekben is hasznos, ahol az ntpd(8) is fut. Az ntpd(8) az órát fokozatosan állítja, ellenben az ntpdate(8) az eltérés mértékétől és irányától függetlenül egyszerűen átállítja a gép óráját a pontos időre.
Az ntpdate(8) elindítását
úgy tudjuk engedélyezni a rendszer
indításakor, ha az
/etc/rc.conf
állományba
berakjuk az ntpdate_enable="YES"
sort.
Emellett még ntpdate_flags
változóban meg kell adnunk az alkalmazott
beállítások mellett azokat a szervereket,
amelyekkel szinkronizálni akarunk.
Az NTP az /etc/ntp.conf
állományon keresztül
állítható, amelyek
felépítését az ntp.conf(5)
man oldal tárgyalja. Íme erre egy egyszerű
példa:
server ntplocal.minta.com prefer server timeserver.minta.org server ntp2a.minta.net driftfile /var/db/ntp.drift
A server
beállítás
adja meg az egyeztetéshez használt szervereket,
soronként egyet. Ha egy szerver mellett szerepel
még a prefer
paraméter is,
ahogy azt a példában a ntplocal.minta.com
mellett
láthattuk, akkor a többivel szemben azt a szervert
fogjuk előnyben részesíteni. Az így
kiemelt szervertől érkező választ
abban az esetben viszont eldobjuk, hogy a többi
szervertől kapott válasz jelentős
mértékben eltér tőle. Minden
más esetben a ő válasza lesz a
mérvadó. A prefer
paramétert általában olyan NTP
szerverekhez használják, amelyek
közismerten nagy pontosságúak, tehát
például külön erre a célra
szánt felügyeleti eszközt is
tartalmaznak.
A driftfile
beállítással azt az
állományt adjuk meg, amiben a rendszeróra
frekvencia eltolódásait tároljuk. Az
ntpd(8) program ezzel ellensúlyozza automatikusan
az óra természetes
elmászását, ezáltal
lehetővé téve, hogy egy viszonylag pontos
időt kapjuk még abban az esetben is, amikor egy
kis időre külső időforrások
nélkül maradnánk.
A driftfile
beállítással egyben azt az
állományt jelöljük ki, amely az NTP
szervertől kapott korábbi válaszokat
tárolja. Ez az NTP működéséhez
szükséges belső adatokat tartalmaz,
ezért semmilyen más programnak nem szabad
módosítania.
Alapértelmezés szerint az NTP
szerverünket bárki képes elérni az
interneten. Az /etc/ntp.conf
állományban szereplő
restrict
beállítás
segítségével azonban meg tudjuk mondani,
milyen gépek érhetik el a
szerverünket.
Ha az NTP szerverünk felé mindenféle
próbálkozást el akarunk utasítani,
akkor az /etc/ntp.conf
állományba a következő sort kell
felvennünk:
restrict default ignore
Ezzel egyben azonban a helyi beállításainkban szereplő szerverek elérését is megakadályozzuk. Ha külső NTP szerverekkel is szeretnénk szinkronizálni, akkor itt is engedélyezünk kell ezeket. Erről bővebben lásd az ntp.conf(5) man oldalon.
Ha csak a belső hálózatunkban levő gépek számára szeretnénk elérhetővé tenni az órák egyeztetését, de sem a szerver állapotának módosítását nem engedélyezzük, sem pedig azt, hogy a vele egyenrangú szerverekkel szinkronizáljon, akkor az iménti helyett a
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
sort írjuk bele, ahol a 192.168.1.0
a belső
hálózatunk IP-címe és a 255.255.255.0
a
hozzá tartozó hálózati
maszk.
Az /etc/ntp.conf
több
restrict
típusú
beállítást is tartalmazhat. Ennek
részleteiről az ntp.conf(5) man oldalon, az
Access Control Support
című
szakaszban olvashatunk.
Úgy tudjuk az NTP szervert elindítani a
rendszerünkkel együtt, ha az
/etc/rc.conf
állományban
szerepeltetjük az ntpd_enable="YES"
sort. Ha az ntpd(8) számára további
beállításokat is át akarunk adni,
akkor az /etc/rc.conf
állományban adjuk meg az
ntpd_flags
paramétert.
Ha a gépünk újraindítása
nélkül akarjuk elindítani a szerver, akkor az
ntpd
parancsot adjuk ki az
/etc/rc.conf
állományban a
ntpd_flags
változóhoz megadott
paraméterekkel. Mint például:
#
ntpd -p /var/run/ntpd.pid
Az ntpd(8) program megfelelő
működéséhez nem szükséges
állandó internet kapcsolat. Ha azonban
igény szerinti tárcsázással
építjünk fel ideiglenes kapcsolatot, akkor
érdemes letiltani az NTP forgalmát, nehogy
feleslegesen aktiválja vagy tartsa életben a
vonalat. Ha PPP típusú kapcsolatunk van, akkor az
/etc/ppp/ppp.conf
állományban
a filter
direktívával tudjuk
ezt leszabályozni. Például:
set filter dial 0 deny udp src eq 123 # Nem engedjük az NTP által küldött adatoknak, hogy tárcsázást # kezdeményezzenek: set filter dial 1 permit 0 0 set filter alive 0 deny udp src eq 123 # Nem engedjük az NTP adatainak, hogy fenntartsák a kapcsolatot: set filter alive 1 deny udp dst eq 123 set filter alive 2 permit 0/0 0/0
Mindenezekről részletesebb
felvilágosítást a ppp(8) man oldal
PACKET FILTERING
című
szakaszában és a
/usr/share/examples/ppp/
könyvtárban található
példákban kaphatunk.
Egyes internet-szolgáltatók blokkolják az alacsonyabb portokat, ezáltal az NTP nem használható, mivel a válaszok nem fogják elérni a gépünket.
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.