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

Írta: Sutter, Greg.

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. fejezet - A FreeBSD rendszermag testreszabásaben 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. szakasz - A hálózati kártyák beállításaban 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 - Alkalmazások telepítése: csomagok és portok 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. fejezet - A FreeBSD rendszermag testreszabásaben 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";1
option domain-name-servers 192.168.4.100;2
option subnet-mask 255.255.255.0;3

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

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

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

1

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.

2

Ez a beállítás adja meg a kliensek által használt névfeloldó szerverek vesszővel elválasztott felsorolását.

3

A kliensekhez tartozó hálózati maszk.

4

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

5

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.

6

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

7

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.

8

A kliensek felé elküldött alapértelmezett átjáró címe.

9

A gép hardveres MAC-címe (így a DHCP szerver képes felismerni a kérés küldőjét).

10

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.

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