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.
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.
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.
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.
/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.
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.
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.
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.
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; }
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.
/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): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.