29.10. Az órák egyeztetése az NTP használatával
Vissza | 29. fejezet - Hálózati szerverek | Előre

## 29.10. Az órák egyeztetése az NTP használatával

Készítette: Hukins, Tom.

### 29.10.1. Áttekintés

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.

### 29.10.2. A megfelelő NTP szerverek kiválasztása

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.

### 29.10.3. A gépünk beállítása

#### 29.10.3.1. Alapvető beállítások

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.

#### 29.10.3.2. Általános beállítások

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.

#### 29.10.3.3. A szerverünk elérésének szabályozása

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

### Megjegyzés:

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.

### 29.10.4. Az NTP futtatása

Ú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

### 29.10.5. Az ntpd használati időleges internet csatlakozással

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.

### Megjegyzés:

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.

### 29.10.6. További olvasnivalók

Az NTP szerver dokumentációja HTML formátumban a `/usr/share/doc/ntp/` könyvtárban található.

Vissza | Fel | Előre
29.9. Állomány- és nyomtatási szolgáltatások Microsoft® Windows® kliensek számára (Samba) | Főoldal | 29.11. Távoli gépek naplózása `syslogd` használatával

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>.