FreeBSD kézikönyv
Előző | Fejezet 29. Hálózati szerverek | Következő

# 29.5. A hálózat automatikus beállítása (DHCP)

Írta: Greg Sutter.

## 29.5.1. Mi az a DHCP?

A Dinamikus állomáskonfigurációs protokoll, avagy Dynamic Host Configuration Protocol (DHCP) annak eszközeit írja le, hogy egy rendszer miként tud csatlakozni egy hálózathoz és miként tudja azon belül megszerezni a kommunikációhoz szükséges információkat. A FreeBSD 6.0 előtti változatai az ISC (Internet Systems Consortium, vagyis az internetes rendszerkonzorcium) által kidolgozott DHCP kliens (dhclient(8)) implementációját tartalmazzák. A későbbi verziókban pedig az OpenBSD 3.7 verziójából átvett `dhclient` paranccsal dolgozhatunk. Ebben a szakaszban a `dhclient` parancsra vonatkozó összes információ egyaránt érvényes az ISC és az OpenBSD által fejlesztett DHCP kliensekre. A DHCP szerver az ISC-től származik.

## 29.5.2. Mivel foglalkozik ez a szakasz

Ebben a szakaszban az ISC és az OpenBSD DHCP klienseinek kliens- és szerver oldali komponsenseit mutatjuk be. A kliens oldali program neve a `dhclient`, amely a FreeBSD részeként érkezik, és a szerver oldali elem pedig a `net/isc-dhcp31-server` porton keresztül érhető el. A lentebb említett hivatkozások mellett a témában még a dhclient(8), dhcp-options(5) és a dhclient.conf(5) man adhatnak bővebb felvilágosítást a témában.

## 29.5.3. Ahogyan működik

Amikor a `dhclient`, vagyis a DHCP kliens elindul egy kliensgépen, akkor a hálózaton üzenetszórással próbálja meg elkérni a konfigurációjához szükséges adatokat. Alapértelmezés szerint ezek a kérések a 68-as UDP porton keresztül mennek. A szerver ezekre a 67-es UDP porton válaszol, ahol visszaad a kliensnek egy IP-címet és a hálózat használatához szükséges további információkat, mint például a hálózati maszkot, az alapértelmezett átjáró és a névfeloldásért felelős szerverek címét. Az összes ilyen jellegű adat egy DHCP “bérlet” (lease) formájában érkezik meg, amely csak egy adott ideig érvényes (ezt a DHCP szerver karbantartója állítja be). Így a hálózaton a kliens nélküli IP-címeket egy idő után automatikusan visszanyerjük.

A DHCP kliensek rengeteg információt képes elkérni a szervertől. Ezek teljes listáját a dhcp-options(5) man oldalán olvashatjuk el.

## 29.5.4. Használat a FreeBSD-n belül

A FreeBSD teljes egészében tartalmazza az ISC vagy az OpenBSD DHCP kliensét, a `dhclient` programot (attól függően, hogy a FreeBSD melyik változatát használjuk). A DHCP kliensek támogatása a telepítőben és az alaprendszerben is megtalálható, és ezzel mentesülünk minden konkrét hálózati beállítás alól a DHCP szervereket alkalmazó hálózatokon. A `dhclient` a FreeBSD 3.2 változata óta megtalálható a rendszerben.

DHCP használatát a sysinstall is lehetővé teszi. Amikor egy hálózati felületet a sysinstall programon belül állítunk be, akkor a második kérdés mindig ez szokott lenni: “Do you want to try DHCP configuration of the interface?” (“Megpróbáljuk DHCP használatával beállítani a felületet?”) Ha erre igennel válaszolunk, akkor azzal lényegében a `dhclient` parancsot indítjuk el, és ha mindez sikerrel zárul, akkor szinte magától kitöltődik az összes hálózati beállításunk.

A DHCP használatához két dolgot kell beállítanunk a rendszerünkön:

- Gondoskodjunk róla, hogy a `bpf` eszköz része a rendszermagunknak. Ha még nem lenne benne, akkor a rendszermag beállításait tartalmazó állományba vegyük fel a `device bpf` sort és fordítsuk újra a rendszermagot. A rendszermagok fordításáról a 8 fejezetben tudhatunk meg többet.

  A `bpf` eszköz alapból megtalálható a `GENERIC` rendszermagokban, így ha ezt használjuk, akkor nem kell saját verziót készítenünk a DHCP használatához.

  > Megjegyzés: Azok számára viszont, akik biztonsági szempontból aggódnak a rendszerük miatt, meg kell említenünk, hogy a `bpf` egyben az az eszköz, amely a csomagok lehallgatását is lehetővé teszi (habár az ilyeneket `root` felhasználóként lehet csak elindítani). A `bpf` kell a DHCP használatához, azonban ha nagyon fontos nekünk a rendszerünk biztonsága, akkor a `bpf` eszközt érdemes kivennünk a rendszermagból, ha még pillanatnyilag nem használunk ilyet.

- Az `/etc/rc.conf` állományunkat az alábbiak szerint kell módosítani:

      ifconfig_fxp0="DHCP"

  > Megjegyzés: Az `fxp0` eszközt ne felejtsük el kicserélni arra a felületre, amelyet automatikusan akarunk beállítani. Ennek mikéntje a 11.8 Szakaszban olvasható.

  Ha a `dhclient` a rendszerünkben máshol található, vagy egyszerűen csak további beállításokat akarunk átadni a `dhclient` parancsnak, akkor adjuk meg a következőt is (változtassuk meg igényeink szerint):

      dhclient_program="/sbin/dhclient"
      dhclient_flags=""

A DHCP szerver, a dhcpd a `net/isc-dhcp31-server` port részeként érhető el. Az a port tartalmazza az ISC DHCP szerverét és a hozzá tartozó dokumentációt.

## 29.5.5. Állományok

- `/etc/dhclient.conf`

  A `dhclient` működéséhez szükség lesz egy konfigurációs állományra, aminek a neve `/etc/dhclient.conf`. Ez az állomány általában csak megjegyzéseket tartalmaz, mivel az alapértelmezett értékek többnyire megfelelőek. Ezt a konfigurációs állományt a dhclient.conf(5) man oldal írja le.

- `/sbin/dhclient`

  A `dhclient` statikusan linkelt és az `/sbin` könyvtárban található. A dhclient(8) man oldal tud róla részletesebb felvilágosítást adni.

- `/sbin/dhclient-script`

  A `dhclient-script` a FreeBSD-ben levő DHCP kliens konfigurációs szkriptje. Működését a dhclient-script(8) man oldal írja le, de a felhasználók részéről semmilyen módosítást nem igényel.

- `/var/db/dhclient.leases`

  A DHCP kliens az érvényes bérleteket tartja nyilván ezekben az állományban és naplóként használja. A dhclient.leases(5) man oldal ezt valamivel bővebben kifejti.

## 29.5.6. További olvasnivalók

A DHCP protokoll működését az RFC 2131 mutatja be. A témához kapcsolódóan itt tudunk még leírásokat találni.

## 29.5.7. A DHCP szerverek telepítése és beállítása

### 29.5.7.1. Miről szól ez a szakasz

Ebben a szakaszban arról olvashatunk, hogy miként kell egy FreeBSD típusú rendszert DHCP szervernek beállítani, ha az ISC (internetes rendszerkonzorcium) DHCP szerverét használjuk.

Ez a szerver nem része a FreeBSD-nek, ezért a szolgáltatás elindításához először fel kell raknunk a `net/isc-dhcp31-server` portot. A Portgyűjtemény használatára vonatkozóan a 4 fejezet lehet segítségünkre.

### 29.5.7.2. A DHCP szerver telepítése

Ha a FreeBSD rendszerünket DHCP szerverként akarjuk beállítani, akkor ehhez elsőként a bpf(4) eszköz jelenlétét kell biztosítani a rendszermagban. Ehhez vegyük fel a `device bpf` sort a rendszermagunk beállításait tartalmazó állományba, majd fordítsuk újra a rendszermagot. A rendszermag lefordításáról a 8 fejezetben olvashatunk.

A `bpf` eszköz a FreeBSD-hez alapból adott `GENERIC` rendszermag része, ezért a DHCP használatához nem kell feltétlenül újat fordítanunk.

> Megjegyzés: A biztonsági szempontok miatt aggódó felhasználók részére megjegyezzük, hogy a `bpf` eszköz egyben a csomagok lehallgatását is lehetővé teszi (habár az ilyen témájú programok futtatásához megfelelő jogokra is szükség van). A `bpf` használata kötelező a DHCP működtetéséhez, de ha nagyon kényesek vagyunk a biztonságot illetően, akkor minden olyan esetben, amikor nem használjuk ki ezt a lehetőséget, távolítsuk el a rendszermagból.

A következő lépésben át kell szerkesztenünk a mintaként mellékelt `dhcpd.conf` állományt, amelyet a `net/isc-dhcp31-server` port rakott fel. Ez alapértelmezés szerint a `/usr/local/etc/dhcpd.conf.sample` néven található meg, és mielőtt bármit is változtatnánk rajta, másoljuk le `/usr/local/etc/dhcpd.conf` néven.

### 29.5.7.3. A DHCP szerver beállítása

A `dhcpd.conf` az alhálózatokat illetve a gépeket érintő deklarációkat tartalmazza, és talán a legkönnyebben a következő példa alapján mutatható be:

    option domain-name "minta.com";
    option domain-name-servers 192.168.4.100;
    option subnet-mask 255.255.255.0;

    default-lease-time 3600;
    max-lease-time 86400;
    ddns-update-style none;

    subnet 192.168.4.0 netmask 255.255.255.0 {
      range 192.168.4.129 192.168.4.254;
      option routers 192.168.4.1;
    }

    host mailhost {
      hardware ethernet 02:03:04:05:06:07;
      fixed-address levelezes.minta.com;
    }

  Ez a beállítás adja meg a kliensek számára az alapértelmezett keresési tartományt (search domain). A resolv.conf(5) tud ezzel kapcsolatban részletesebb információkat adni.
  Ez a beállítás adja meg a kliensek által használt névfeloldó szerverek vesszővel elválasztott felsorolását.
  A kliensekhez tartozó hálózati maszk.
  A kliens egy adott időre kérhet bérleti jogot, egyébként a szerver dönt a bérlet lejárati idejéről (másodpercekben).
  Ez az a maximális idő, amennyire a szerver hajlandó bérbe adni IP-címet. A kliens ugyan hosszabb időre is kérheti és meg is kapja, de legfeljebb csak `max-lease-time` másodpercig lesz érvényes.
  Ez a beállítás határozza meg, hogy a DHCP szervernek frissítse-e a névoldási információkat a bérlések elfogadásánál vagy visszamondásánál. Az ISC implementációjánál ez a beállítás kötelező.
  Ezzel adjuk meg milyen tartományból tudunk IP-címeket kiosztani a kliensek számára. A kezdő címet is beleértve, innen fogunk kiutalni egyet a klienseknek.
  A kliensek felé elküldött alapértelmezett átjáró címe.
  A gép hardveres MAC-címe (így a DHCP szerver képes felismerni a kérés küldőjét).
  Ennek megadásával a gépek mindig ugyanazt az IP-címet kapják. Itt már megadhatunk egy hálózati nevet, mivel a bérlethez tartozó információk visszaküldése előtt maga a DHCP szerver fogja feloldani a gép nevét.

Miután befejeztük a `dhcpd.conf` módosítását, a DHCP szerver az `/etc/rc.conf` állományban tudjuk engedélyezni, vagyis tegyük bele a következőt:

    dhcpd_enable="YES"
    dhcpd_ifaces="dc0"

A `dc0` felület nevét helyettesítsük annak a felületnek (vagy whitespace karakterekkel elválasztott felületeknek) a nevével, amelyen keresztül a DHCP szerver várni fogja a kliensek kéréseit.

Ezután a következő parancs kiadásával indítsuk el a szervert:

    # /usr/local/etc/rc.d/isc-dhcpd start

Amikor a jövőben valamit változtatunk a konfigurációs állományon, akkor ezzel kapcsolatban fontos megemlíteni, hogy ha csak egy `SIGHUP` jelzést küldünk a dhcpd démonnak, akkor az a többi démontól eltérően önmagában még nem eredményezi a konfigurációs adatok újraolvasását. Helyette a `SIGTERM` jelzéssel kell leállítani a programot, majd újraindítani a fenti paranccsal.

### 29.5.7.4. Állományok

- `/usr/local/sbin/dhcpd`

  A dhcpd statikusan linkelt és a `/usr/local/sbin` könyvtárban található. A porttal együtt felkerülő dhcpd(8) man oldal ad részletesebb útmutatást dhcpd használatáról.

- `/usr/local/etc/dhcpd.conf`

  Mielőtt a dhcpd megkezdhetné működését, egy konfigurációs állományra is szükségünk lesz, amely a `/usr/local/etc/dhcpd.conf`. Ez az állomány tartalmazza az összes olyan információt, ami kell a kliensek megfelelő kiszolgálásához valamint a szerver működéséhez. Ez a konfigurációs állomány porthoz tartozó dhcpd.conf(5) man oldalon kerül ismertetésre.

- `/var/db/dhcpd.leases`

  A DHCP szerver ebben az állományba tartja nyilván a kiadott bérleteket, egy napló formájában. A porthoz kapcsolódó dhcpd.leases(5) man oldalon erről többet is megtudhatunk.

- `/usr/local/sbin/dhcrelay`

  A dhcrelay állománynak olyan komolyabb környezetekben van szerepe, ahol a DHCP szerver a kliensektől érkező kéréseket egy másik hálózaton található DHCP szerverhez továbbítja. Ha szükség lenne erre a lehetőségre, akkor telepítsük fel a `net/isc-dhcp31-relay` portot. A porthoz tartozó dhcrelay(8) man oldal ennek részleteit taglalja.

Előző | Tartalom | Következő
Hálózati információs rendszer (NIS/YP) | Fel | Névfeloldás (DNS)

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.