DHCP
a (→Szerver telepítése: vajon miért volt link az, hogy "Kitérő"?) |
|||
(2 szerkesztő 17 közbeeső változata nincs mutatva) | |||
1. sor: | 1. sor: | ||
+ | Írta: Téchy Zoltán, 2007. márciusában |
||
+ | |||
==DHCP== |
==DHCP== |
||
− | A Dynamic Host Configuration Protocol elsősorban arra szolgál, hogy hostok egyedi címeket kaphassanak a hálózaton. Pillanatnyi levegővétel után el lehet azon merengeni, hogy jelen esetben a 'host' mi minden is érthető: érthetünk alatta egy PC-t, IP-telefont, Access Pointot stb. Egyre kevésbé lepődünk meg a különféle hálózati interfészekkel végrehajtott mutatványokon, és így egyre hálátlanabb feladat lenne ékes anyanyelvünkön mindent lefedő kifejezést találni. |
+ | A Dynamic Host Configuration Protocol elsősorban arra szolgál, hogy hostok egyedi címeket kaphassanak a hálózaton. Pillanatnyi levegővétel után el lehet azon merengeni, hogy jelen esetben a 'host' elnevezés alatt mi minden is érthető: érthetünk alatta egy PC-t, IP-telefont, Access Pointot stb. Egyre kevésbé lepődünk meg a különféle hálózati interfészekkel végrehajtott mutatványokon, és így egyre hálátlanabb feladat lenne ékes anyanyelvünkön mindent lefedő kifejezést találni. |
Gyakorlati jelentősége úgyis inkább az egyediségnek van: a kézi konfiguráció a hostok számának növekedésével egyre körülményesebbé, a hibák elkerülésének a szempontjából pedig egyre bizonytalanabbá válik. |
Gyakorlati jelentősége úgyis inkább az egyediségnek van: a kézi konfiguráció a hostok számának növekedésével egyre körülményesebbé, a hibák elkerülésének a szempontjából pedig egyre bizonytalanabbá válik. |
||
12. sor: | 14. sor: | ||
===A működés elve=== |
===A működés elve=== |
||
− | A DHCP broadcast-alapú protokoll, |
+ | A DHCP broadcast-alapú protokoll, leegyszerűsítve úgy működik, hogy a host "belekiabál" (=broadcast) a hálózatba, hogy címet kér. A DHCP szerver feladata az ilyen kérésekre figyelni, és IP-címet, továbbá -nem kötelező, de praktikusan mindig használt- opciókat ajánlani a hosztnak. |
+ | |||
+ | A címek kiosztása csak bizonyos ideig érvényes, ezt az időt a szerver(t konfiguráló személy) határozza meg. Ha az ún "dhcp lease" érvényessége lejárt, akkor a kliensnek el kell dobnia az IP-címét, és újat kell igényelnie. |
||
===A három fontos szereplő: szerver, kliens(ek), relay agent=== |
===A három fontos szereplő: szerver, kliens(ek), relay agent=== |
||
+ | |||
+ | A DHCP szervert a ''dhcp'' csomag tartalmazza. Azért felel, hogy a DHCP kliensek kéréseire figyeljen és a konfigurációnak (erről lesz még szó) megfelelően kiszolgálja azokat. |
||
+ | |||
+ | Kliensből többféle közül válogathatunk: dhcpcd, pump, udhcpc, dhclient. Amennyiben nincs semmi speciális igényünk, akkor válasszuk a dhcpcd-t, esetleg a pump-ot. |
||
+ | |||
+ | Magyarázatot a relay agent igényelhet. Fontos tudni, hogy a DHCP broadcast-alapú protokoll, következésképp a DHCP szerver csak egy broadcast domainen belül képes a kéréseket kiszolgálni. Broadcast domainek a hálózatnak azok a részei, ahol érvényesek a broadcast üzenetek. Broadcast üzeneteket routerek nem továbbítanak; egyszerűen összekötött switchek viszont broadcast domaineket fognak alkotni. |
||
+ | (Kitérő: a hálózatok annál hatékonyabban működnek, minél kisebbek a broadcast domainek. Egyre népszerűbb sportág a LAN-okat VLAN szegmensekre szegmentálni -ha kell, ha nem-. Fontos tudni, hogy a VLAN-ok külön broadcast domaineket alkotnak.) |
||
+ | |||
+ | Térjünk vissza a relay agent magyarázatára. A hálózatunk nagyon könnyen állhat több különálló broadcast domainből, például távoli fiókirodák vagy VLAN-okra szegmentált helyi hálózat esetén általában ez a helyzet. (Kivéve, ha L2TP vagy "tap" drivert használó VPN megoldást használunk. Ez általában nem cél.) |
||
+ | Az egyes broadcast domainekbe telepíthetünk külön DHCP szervereket, vagy alkalmazhatjuk a "dhcp relay" néven ismert technikát: a relay agent azért felel, hogy a DHCP kéréseket unicastként továbbítsa a -számára ismert- DHCP szerver felé. A szerver az agentnek fog válaszolni (címet, opciókat ajánlani), aki a kérést elindító hostnak továbbadja a választ. A DHCP relaying elegánsabb megoldás, mint külön DHCP szervereket alkalmazni; központilag adminisztrálható lesz a címek kiosztása, a hálózatüzemeltetők is nyugodtabbak (az egy -fogalmi- hálózaton elhelyezett második DHCP szerver sokakban babonás félelmeket kelt), a hálózati aktív eszközök "dhcp relay" vagy "ip helper" néven szoktak relay agentet tartalmazni. |
||
+ | A ''dhcp'' csomag is tartalmaz egy relay agentet, ennek neve dhcrelay. |
||
===Szerver telepítése=== |
===Szerver telepítése=== |
||
+ | |||
+ | A szerver telepítésére kérjük meg a csomagkezelőt: Debianon ez az <pre> apt-get install dhcp3-server </pre> parancs kiadásával történik, Gentoo alatt az <pre> emerge dhcp </pre> jár hasonló eredménnyel. Fontosabb tudnivaló, hogy a lease-eket tartalmazó file-t kézzel kell létrehoznunk, ne felejtsük el! |
||
+ | |||
+ | <pre> |
||
+ | touch /var/lib/dhcp/dhcpd.leases |
||
+ | </pre> |
||
+ | |||
+ | A szerver telepítésével végeztünk is, két lépés maradt hátra: konfigurálnunk kell azt (ehhez rövid bevezetést a következő fejezet tartalmaz), továbbá érdemes megoldani, hogy a szerver (ettől a ponttól nevezzük is nevén: '''dhcpd''', a.k.a. dhcp daemon) automatikusan fusson a szerver-PC indításakor. Ezt Gentoo-specifikusan az <pre> rc-update add dhcpd default </pre> paranccsal érhetjük el. |
||
+ | |||
+ | ''Kitérő: a Gentoo Linux init-rendszere nagyon egyszerűen kezelhető a fentebb leírt rc-update parancs segítségével. Ha ennél kicsit kifinomultabbat szeretnénk (például daemontoolst), akkor sem bonyolult a dolgunk: '' |
||
+ | <pre> |
||
+ | emerge daemontools |
||
+ | rc-update add svscan boot |
||
+ | </pre> |
||
+ | ''Innentől ha azt szeretnénk, hogy egy adott szolgáltatást a daemontools felügyeljen, akkor átadhatjuk annak.'' |
||
===Példa-konfiguráció=== |
===Példa-konfiguráció=== |
||
+ | |||
+ | A konfiguráció szerkesztése az /etc/dhcp/dhcpd.conf fileban történik. Egyszerűbb, mint gondolnánk; a következőkben alapesetekre foguk példát látni. |
||
+ | |||
+ | <pre> |
||
+ | |||
+ | # dhcpd.conf |
||
+ | # |
||
+ | # option definitions common to all supported networks... |
||
+ | # option domain-name "example.org"; |
||
+ | # option domain-name-servers ns1.example.org, ns2.example.org; |
||
+ | |||
+ | |||
+ | |||
+ | ddns-update-style none; |
||
+ | default-lease-time 600; |
||
+ | max-lease-time 7200; |
||
+ | |||
+ | # If this DHCP server is the official DHCP server for the local |
||
+ | # network, the authoritative directive should be uncommented. |
||
+ | authoritative; |
||
+ | |||
+ | # Use this to send dhcp log messages to a different log file (you also |
||
+ | # have to hack syslog.conf to complete the redirection). |
||
+ | log-facility local7; |
||
+ | |||
+ | #### Eddig tartott a globalis konfiguracio |
||
+ | |||
+ | </pre> |
||
+ | |||
+ | A különböző kiosztandó tartományokra vonatkozó információkat a ''subnet'' felkiáltással kezdve, fűzzük hozzá ugyanehhez a filehoz. |
||
+ | |||
+ | <pre> |
||
+ | # Subnet for AP 2620's. |
||
+ | |||
+ | subnet 26.20.1.0 netmask 255.255.255.0 { |
||
+ | host AP1 {hardware ethernet 00:0F:BB:09:10:91; |
||
+ | fixed-address 26.20.1.1; } |
||
+ | host AP2 {hardware ethernet 00:0F:BB:09:10:92; |
||
+ | fixed-address 26.20.1.2; } |
||
+ | # host T_NB {hardware ethernet 00:A0:D1:29:23:39; |
||
+ | # fixed-address 26.20.1.3; } |
||
+ | |||
+ | range 26.20.1.100 26.20.1.150; |
||
+ | option routers 26.20.1.254; |
||
+ | option slp-directory-agent true 10.1.1.4; |
||
+ | } |
||
+ | |||
+ | </pre> |
||
+ | |||
+ | Mi is történt itt? Kijelöltük a 26.20.1.0/24 alhálózatot (innen osztunk címeket), majd ebben definiáltunk három hostot, akiknek fixen akarunk címeket osztani, a MAC-címük alapján. Ebből a harmadik ki van kommentezve. |
||
+ | Ezen felül kijelöltük (a ''range'' felkiáltással) egy tartományt a 26.20.1.100-tól 26.20.1.150-ig, ahová nagy szeretettel várjuk a további hostokat. |
||
+ | Látunk példát két opció használatára is: routers alatt adhatjuk át a default gateway IP-címét (de egynél többet is megadhatunk). Az SLP directory agent opció esetén általánosan is látjuk egy opció felvételének menetét: |
||
+ | |||
+ | Az ''option'' után kötőjelekkel leírjuk az opció nevét. Ezt követik az opciónak megfelelő értékek, amik lehetnek flagek (true/false), boolean értékek (ismét true/false), stringek, IP-címek, számok (uint). Erről szerencsére elég jól érthető man oldalt találunk: |
||
+ | |||
+ | <pre> |
||
+ | man dhcp-options |
||
+ | </pre> |
||
+ | |||
+ | Érdemes megnézni, meglepő mennyiségben állnak rendelkezésre opciók. Megkérhetünk vele hostot, hogy váltson router üzemmódba, felvetethetünk statikus route-okat, smtp és pop szerverek címeit adhatjuk át stb. |
||
+ | |||
+ | A következőkben három kijelölt subnetet láthatunk (amiből az egyik ki van kapcsolva). Általános esetben ennél részletesebb konfigurációra nincs is szükség. |
||
+ | |||
+ | <pre> |
||
+ | ## Subnet for optiPoint telephones |
||
+ | # |
||
+ | #subnet 15.1.1.0 netmask 255.255.255.0 { |
||
+ | # range 15.1.1.1 15.1.1.253; |
||
+ | # option routers 15.1.1.254; |
||
+ | #} |
||
+ | |||
+ | |||
+ | # Subnet wireless experiments |
||
+ | subnet 192.168.3.0 netmask 255.255.255.0 { |
||
+ | range 192.168.3.1 192.168.3.250; |
||
+ | option routers 192.168.3.254; |
||
+ | option domain-name-servers 192.168.5.1; |
||
+ | } |
||
+ | |||
+ | |||
+ | # Home, sweet home |
||
+ | subnet 192.168.5.0 netmask 255.255.255.0 { |
||
+ | range 192.168.5.1 192.168.5.250; |
||
+ | option routers 192.168.5.254; |
||
+ | } |
||
+ | |||
+ | </pre> |
||
===Biztonság=== |
===Biztonság=== |
||
+ | |||
+ | '''DHCP spoofing''' |
||
+ | |||
+ | Mindenképpen tartsuk észben, hogy a DHCP szerver egyszerűen használható eszköz és gyakorlatilag egyedül képes a hostok interfészeit L3 szinten konfigurálni. Így egy címet kérő hostnak nyugodtan lehet olyat mondani, hogy a -normálisan használt- x.x.x.0 hálózat helyett ő legyen csak az x.x.'''y'''.0 hálózatban, a default gateway pedig majd a gonosz támadó PC-je lesz. Esetleg a DNS szerver is. |
||
+ | Erre point'n click eszköz is létezik, ilyen például az ettercap. Nagyon kellemetlen lehet. |
A lap jelenlegi, 2012. december 21., 12:17-kori változata
Írta: Téchy Zoltán, 2007. márciusában
Tartalomjegyzék[elrejtés] |
[szerkesztés] 1 DHCP
A Dynamic Host Configuration Protocol elsősorban arra szolgál, hogy hostok egyedi címeket kaphassanak a hálózaton. Pillanatnyi levegővétel után el lehet azon merengeni, hogy jelen esetben a 'host' elnevezés alatt mi minden is érthető: érthetünk alatta egy PC-t, IP-telefont, Access Pointot stb. Egyre kevésbé lepődünk meg a különféle hálózati interfészekkel végrehajtott mutatványokon, és így egyre hálátlanabb feladat lenne ékes anyanyelvünkön mindent lefedő kifejezést találni. Gyakorlati jelentősége úgyis inkább az egyediségnek van: a kézi konfiguráció a hostok számának növekedésével egyre körülményesebbé, a hibák elkerülésének a szempontjából pedig egyre bizonytalanabbá válik.
A protokoll lehetővé teszi, hogy ún. opciók segítségével további információkat is közöljünk a hostokkal; a használhatóság nem kis részben innen fakad. Opciók lehetnek az általában elvárt default gateway, névfeloldáshoz használandó DNS szerver IP-címei; érdemes tudni, hogy a lista meglepően hosszú, és például arra is "megkérhetünk" hostot, hogy az ip forwarding bekapcsolásával kezdjen el routerként üzemelni.
[szerkesztés] 1.1 A felhasználás leggyakoribb módja
Legegyszerűbb esetben annyit szoktunk egy DHCP szervertől elvárni, hogy IP-címet, default gateway IP-címét, DNS szerver IP címét legyen képes átadni egy hostnak. Ha precízek akarunk lenni, akkor tartsuk észben: a DHCP kliensnek, amit a host futtat.
[szerkesztés] 1.2 A működés elve
A DHCP broadcast-alapú protokoll, leegyszerűsítve úgy működik, hogy a host "belekiabál" (=broadcast) a hálózatba, hogy címet kér. A DHCP szerver feladata az ilyen kérésekre figyelni, és IP-címet, továbbá -nem kötelező, de praktikusan mindig használt- opciókat ajánlani a hosztnak.
A címek kiosztása csak bizonyos ideig érvényes, ezt az időt a szerver(t konfiguráló személy) határozza meg. Ha az ún "dhcp lease" érvényessége lejárt, akkor a kliensnek el kell dobnia az IP-címét, és újat kell igényelnie.
[szerkesztés] 1.3 A három fontos szereplő: szerver, kliens(ek), relay agent
A DHCP szervert a dhcp csomag tartalmazza. Azért felel, hogy a DHCP kliensek kéréseire figyeljen és a konfigurációnak (erről lesz még szó) megfelelően kiszolgálja azokat.
Kliensből többféle közül válogathatunk: dhcpcd, pump, udhcpc, dhclient. Amennyiben nincs semmi speciális igényünk, akkor válasszuk a dhcpcd-t, esetleg a pump-ot.
Magyarázatot a relay agent igényelhet. Fontos tudni, hogy a DHCP broadcast-alapú protokoll, következésképp a DHCP szerver csak egy broadcast domainen belül képes a kéréseket kiszolgálni. Broadcast domainek a hálózatnak azok a részei, ahol érvényesek a broadcast üzenetek. Broadcast üzeneteket routerek nem továbbítanak; egyszerűen összekötött switchek viszont broadcast domaineket fognak alkotni. (Kitérő: a hálózatok annál hatékonyabban működnek, minél kisebbek a broadcast domainek. Egyre népszerűbb sportág a LAN-okat VLAN szegmensekre szegmentálni -ha kell, ha nem-. Fontos tudni, hogy a VLAN-ok külön broadcast domaineket alkotnak.)
Térjünk vissza a relay agent magyarázatára. A hálózatunk nagyon könnyen állhat több különálló broadcast domainből, például távoli fiókirodák vagy VLAN-okra szegmentált helyi hálózat esetén általában ez a helyzet. (Kivéve, ha L2TP vagy "tap" drivert használó VPN megoldást használunk. Ez általában nem cél.) Az egyes broadcast domainekbe telepíthetünk külön DHCP szervereket, vagy alkalmazhatjuk a "dhcp relay" néven ismert technikát: a relay agent azért felel, hogy a DHCP kéréseket unicastként továbbítsa a -számára ismert- DHCP szerver felé. A szerver az agentnek fog válaszolni (címet, opciókat ajánlani), aki a kérést elindító hostnak továbbadja a választ. A DHCP relaying elegánsabb megoldás, mint külön DHCP szervereket alkalmazni; központilag adminisztrálható lesz a címek kiosztása, a hálózatüzemeltetők is nyugodtabbak (az egy -fogalmi- hálózaton elhelyezett második DHCP szerver sokakban babonás félelmeket kelt), a hálózati aktív eszközök "dhcp relay" vagy "ip helper" néven szoktak relay agentet tartalmazni. A dhcp csomag is tartalmaz egy relay agentet, ennek neve dhcrelay.
[szerkesztés] 1.4 Szerver telepítése
A szerver telepítésére kérjük meg a csomagkezelőt: Debianon ez azapt-get install dhcp3-serverparancs kiadásával történik, Gentoo alatt az
emerge dhcpjár hasonló eredménnyel. Fontosabb tudnivaló, hogy a lease-eket tartalmazó file-t kézzel kell létrehoznunk, ne felejtsük el!
touch /var/lib/dhcp/dhcpd.leasesA szerver telepítésével végeztünk is, két lépés maradt hátra: konfigurálnunk kell azt (ehhez rövid bevezetést a következő fejezet tartalmaz), továbbá érdemes megoldani, hogy a szerver (ettől a ponttól nevezzük is nevén: dhcpd, a.k.a. dhcp daemon) automatikusan fusson a szerver-PC indításakor. Ezt Gentoo-specifikusan az
rc-update add dhcpd defaultparanccsal érhetjük el.
Kitérő: a Gentoo Linux init-rendszere nagyon egyszerűen kezelhető a fentebb leírt rc-update parancs segítségével. Ha ennél kicsit kifinomultabbat szeretnénk (például daemontoolst), akkor sem bonyolult a dolgunk:
emerge daemontools rc-update add svscan boot
Innentől ha azt szeretnénk, hogy egy adott szolgáltatást a daemontools felügyeljen, akkor átadhatjuk annak.
[szerkesztés] 1.5 Példa-konfiguráció
A konfiguráció szerkesztése az /etc/dhcp/dhcpd.conf fileban történik. Egyszerűbb, mint gondolnánk; a következőkben alapesetekre foguk példát látni.
# dhcpd.conf # # option definitions common to all supported networks... # option domain-name "example.org"; # option domain-name-servers ns1.example.org, ns2.example.org; ddns-update-style none; default-lease-time 600; max-lease-time 7200; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; #### Eddig tartott a globalis konfiguracio
A különböző kiosztandó tartományokra vonatkozó információkat a subnet felkiáltással kezdve, fűzzük hozzá ugyanehhez a filehoz.
# Subnet for AP 2620's. subnet 26.20.1.0 netmask 255.255.255.0 { host AP1 {hardware ethernet 00:0F:BB:09:10:91; fixed-address 26.20.1.1; } host AP2 {hardware ethernet 00:0F:BB:09:10:92; fixed-address 26.20.1.2; } # host T_NB {hardware ethernet 00:A0:D1:29:23:39; # fixed-address 26.20.1.3; } range 26.20.1.100 26.20.1.150; option routers 26.20.1.254; option slp-directory-agent true 10.1.1.4; }
Mi is történt itt? Kijelöltük a 26.20.1.0/24 alhálózatot (innen osztunk címeket), majd ebben definiáltunk három hostot, akiknek fixen akarunk címeket osztani, a MAC-címük alapján. Ebből a harmadik ki van kommentezve. Ezen felül kijelöltük (a range felkiáltással) egy tartományt a 26.20.1.100-tól 26.20.1.150-ig, ahová nagy szeretettel várjuk a további hostokat. Látunk példát két opció használatára is: routers alatt adhatjuk át a default gateway IP-címét (de egynél többet is megadhatunk). Az SLP directory agent opció esetén általánosan is látjuk egy opció felvételének menetét:
Az option után kötőjelekkel leírjuk az opció nevét. Ezt követik az opciónak megfelelő értékek, amik lehetnek flagek (true/false), boolean értékek (ismét true/false), stringek, IP-címek, számok (uint). Erről szerencsére elég jól érthető man oldalt találunk:
man dhcp-options
Érdemes megnézni, meglepő mennyiségben állnak rendelkezésre opciók. Megkérhetünk vele hostot, hogy váltson router üzemmódba, felvetethetünk statikus route-okat, smtp és pop szerverek címeit adhatjuk át stb.
A következőkben három kijelölt subnetet láthatunk (amiből az egyik ki van kapcsolva). Általános esetben ennél részletesebb konfigurációra nincs is szükség.
## Subnet for optiPoint telephones # #subnet 15.1.1.0 netmask 255.255.255.0 { # range 15.1.1.1 15.1.1.253; # option routers 15.1.1.254; #} # Subnet wireless experiments subnet 192.168.3.0 netmask 255.255.255.0 { range 192.168.3.1 192.168.3.250; option routers 192.168.3.254; option domain-name-servers 192.168.5.1; } # Home, sweet home subnet 192.168.5.0 netmask 255.255.255.0 { range 192.168.5.1 192.168.5.250; option routers 192.168.5.254; }
[szerkesztés] 1.6 Biztonság
DHCP spoofing
Mindenképpen tartsuk észben, hogy a DHCP szerver egyszerűen használható eszköz és gyakorlatilag egyedül képes a hostok interfészeit L3 szinten konfigurálni. Így egy címet kérő hostnak nyugodtan lehet olyat mondani, hogy a -normálisan használt- x.x.x.0 hálózat helyett ő legyen csak az x.x.y.0 hálózatban, a default gateway pedig majd a gonosz támadó PC-je lesz. Esetleg a DNS szerver is. Erre point'n click eszköz is létezik, ilyen például az ettercap. Nagyon kellemetlen lehet.