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. 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.
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:
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):
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 - Alkalmazások telepítése: csomagok
és portok 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. 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.
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:
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 | |
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:
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):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.