A szerző nem feltétlenül ért egyet a dokumentum teljes tartalmával. Használd a saját felelősségedre az összes elképzelést, példát és a dokumentum egyéb tartalmát. Mivel ez a dokumentum egy újabb kiadása, előfordulhatnak benne hibák és pontatlanságok, amelyek esetleg kárt tehetnek a rendszeredben. Ezen figyelmeztetés után olvasd tovább, és bár nagyon sajnálatos, mindezekért semmilyen felelősséget nem vállalok.
Azt is tartsd észben, hogy ez NEM hivatalos információ. A dokumentum legnagyobb része feltételezés, amelyre az emberek munkájuk során jutottak. Az információkat saját felelősségedre használd.
A dokumentum új változata megtalálható a következő helyen:
http://www.oswg.org/oswg-nightly/DHCP.html
A DHCP mini-HOGYAN következő fordításai érhetők el:
Az engedélyt ezennel minden olyan személynek megadom, aki szeretné lefordítani ezt a dokumentumot a saját nyelvére. Mindössze azt kérem, hogy készíts egy hivatkozást erre a dokumentumra, valamint tudasd velem a fordításod URL címét, hogy itt közölhessem azt.
Szívesen fogadok visszajelzést ezzel a dokumentummal kapcsolatban. A beadványaitok és észrevételeitek nélkül ez a dokumentum nem létezne. Szóval kiegészítéseiteket, megjegyzéseiteket és kritikátokat küldjétek a <[email protected]> címre.
Ez a dokumentum a Paul Makeev által készített eredeti változat módosítása.
A következő emberek működtek közre ezen mini-HOGYAN elkészítésében:
Heiko Schlittermann
Jonathan Smith
Dan Khabaza
Hal Sadofsky
Henrik Stoerner
Paul Rossington
és még sokan mások
Eme dokumentum szerzői jogait (c) 1998 Vladimir Vuksan birtokolja, a dokumentum az OpenContent License (OPL) feltételei szerint terjeszthető. A licenc teljes szövegét megtalálod a következő honlapon:
A magyar fordítást Szíjjártó László készítette (2002.07.17). A lektorálást Kilián Magdolna végezte el (2003.01.22). Bármilyen fordítással kapcsolatos észrevételt a [email protected] címre küldjetek. A dokumentum legfrissebb változata megtalálható a Magyar Linux Dokumentációs Projekt honlapján.
Egy dinamikus, számítógépek beállítására szolgáló (Dinamic Host Configuration) protokoll. A kliensek legfontosabb hálózati beállításainak vezérlésére szolgál, a szerver segítségével. A DHCP visszafelé kompatibilis a BOOTP protokollal. További információért olvasd el az RFC 2131 (a régi RFC 1541) és más dokumentumokat. (Például a doksi végén található Internetes Források fejezetet). Ezen kívül ajánlatos elolvasni a http://web.syr.edu/~jmwobus/comfaqs/dhcp.faq.html honlapot.
Ez a mini-HOGYAN mind a DHCP _SERVER_ démonnal, mind a DHCP _KLIENS_ démonnal foglalkozik. A legtöbb felhasználónak a kliens démonra van szüksége, amit a munkaállomások használnak arra, hogy a szervertől lekérjék a hálózati információkat. A szerver démont a rendszergazdák használják, hogy ezeket az információkat közzétegyék a hálózaton belül, ezért ha hétköznapi felhasználó vagy, akkor csak a _KLIENS_ démonra van szükséged.
Jelenleg három különböző DHCP kliens létezik Linuxra: a dhcpcd, a pump és a dhclient. Ez a mini-HOGYAN elsősorban a dhcpcd démonnal foglalkozik.
A Linux összeállításodtól függően lehet, hogy le kell töltened a DHCP kliens-démont. Ha a forrásból le is akarod fordítani, akkor a csomag neve dhcpcd lesz , és az aktuális verzió az 1.3.18 XXX. A csomag karbantartója Sergei Viznyuk <[email protected]> , és manapság a legtöbb Linux összeállításban bináris - lefordított - változatban is hozzáférhető.
A dhcpcd forráskódját a következő helyekről töltheted le:
ftp://ftp.phystech.com/pub/ (elsődleges lelőhely)
Majd kövesd az alábbi útmutatást.
A DHCPcd program legutolsó változatát letöltheted egy Metalab tükörszerverről vagy a következő helyekről:
Töltsd le a dhcpcd.tar.gz legutolsó változatát.
Csomagold ki
tar -zxvf dhcpcd-1.3.18pl1.tar.gz
Lépj be a létrejött könyvtárba és fordítsd le
cd dhcpcd-1.3.18pl1
make
Ezek után telepítsd (a következő parancsot rendszergazdaként futtasd)
make install
Ez a parancs létrehozza a /etc/dhcpc könyvtárat, ahol a démon az információit tárolja, a dhcpcd bináris fájl pedig a /usr/sbin könyvtárba kerül.
Ahhoz, hogy a rendszer a induláskor a DHCP szolgáltatást elindítsa, gépeld be:
cd /etc/rc.d
mv rc.inet1 rc.inet1.OLD
Ez a régi beállítószkriptet átnevezi rc.inet1.OLD-ra. Ezek után el kell készítened az új rc.inet1 szkriptet. A következő kódrészletre van szükség:
#!/bin/sh # # rc.inet1 Ez a shell szkript indítja az alapértelmezett INET rendszert. HOSTNAME=`cat /etc/HOSTNAME` #Ez talán nem szükséges, de én mindig #benne hagyom. # A loopback eszköz beállítása. /sbin/ifconfig lo 127.0.0.1 /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo # HA ETHERNET KAPCSOLATOD VAN, használd a következő sorokat az eth0 # eszköz beállítására. Ha csak a loopback-et vagy SLIP-et használsz, # ne hagyd meg a fájl további sorait. /usr/sbin/dhcpcd |
Mentsd el és indítsd újra a gépet.
Amikor kész vagy, ugorj az utolsó lépésre.
A RedHat 6+ alatt a DHCPcd beállítása nagyon egyszerű. A grafikus felületen indítsd el a Control Panelt (ha nincs menüben, akkor X terminálról a control-panel paranccsal, majd:.
Válaszd ki a "Network Configuration" menüpontot
Kattints az "Interfaces"-re
Kattints az "Add"-ra
Válaszd ki az "Ethernet"-et
Az "Edit Ethernet/Bus Interface" alatt válaszd ki az "Activate interface at boot time" lehetőséget, valamint a "DHCP"-t, mint "Interface configuration protocol"-t
Figyelem: a RedHat 6.x verziók az alapértelmezettként nem a dhcpcd démont, hanem a pump kliens programot tartalmazzák. A telepítő CD tartalmazza a dhcpcd csomagot, ezért ha nincs szerencséd a pump programmal, próbáld a dhcpcd programot. Miután telepítetted (pl. rpm -i dhcpcd-1.3.17pl2-1.i386.rpm), néhány változtatást kell eszközölnöd.
Alexander Stevenson további megjegyzései <[email protected]>:
Nem volt szerencsém a DHCPcd démonnal. Ami végül bejött, az a RedHat 6.0 pump programja volt, ami gondolom a többi RedHat verzióban is benne van. A következő parancsot használtam:
pump -i eth0 -h hostname
Mindegy, hogy a "hostname" mi volt, de e nélkül a szerver nem fog válaszolni.
Ezek után megváltoztattam a /sbin/ifup szkriptemet, hogy tükrözze a változást; az alapértelmezett verzió nem tartalmazta a -h kapcsolót, ezért nem is működött nálam.
Alapvetően, ha a linuxconf-ot használod, és a csatoló "DHCP"-re való átállítása után az nem működik, próbáld ki, hogy a "-h hostname" kapcsolót hozzáadod a pump sorához a /sbin/ifup szkriptben. Az enyém így néz ki:
... if [ -n "$PUMP" ]; then echo -n "Determining IP information for $DEVICE..." if /sbin/pump -i $DEVICE -h hostname; then echo " done." else echo " failed." exit 1 fi else ... |
Egy másik, még elegánsabb módszert a hostname mező hozzáadásához Aad van der Klaauw ajánlott:
Most állítok be egy átjárót otthon, be kell állítanom a MAC address-t a '-h hostname' használata nélkül. Ezért elhatároztam, hogy *nem* változtatom meg a szkriptet, hanem a konfigurációs fájlt használom. Az /etc/sysconfig/network-scripts/ifcfg-eth0 fájlhoz hozzáadtam a következő sorokat:
DEVICE="eth0" MACADDR="00:11:22:33:44:55" DHCP_HOSTNAME="trigger_for_terayon" |
Ez túl fogja élni a frissítéseket, és szerintem ez egy "tiszta" módszer.
Ennyi az egész. Indítsd újra a gépet vagy add ki a /sbin/ifup eth0 parancsot.
A DHCPcd beállítása Redhat 5.0+ alatt nagyon könnyű. A grafikus felületen indítsd el a Control Panelt (ha nincs menüben, akkor X terminálról a control-panel paranccsal), majd:.
Válaszd ki a "Network Configuration" menüpontot
Kattints az "Interfaces" gombra
Válaszd ki az "Ethernet"-et
Az "Edit Ethernet/Bus Interface" alatt válaszd ki az "Activate interface at boot time" lehetőséget, valamint a "DHCP" -t, mint "Interface configuration protocol"-t.
Amikor kész vagy, ugorj az utolsó lépésre.
A DHCPcd csomagot tartalmazza a RedHat standard disztribúció mint RPM és megtalálhatód a disztribúciós cd-n az RPMS könyvtárban vagy letöltheted a következő csomagot:
ftp://ftp.redhat.com/pub/redhat/redhat-4.2/i386/RedHat/RPMS/dhcpcd-0.6-2.i386.rpm
Telepítsd a következő paranccsal: rpm -i dhcpcd-0.6-2.i386.rpm.
De a saját verziódat a következő lépésekkel is fordíthatod a Slackwarenél kiemelt sorokat követve...
A következő információt nothing szolgáltatta <[email protected]>.
Eltávolítottam az állandó IP-címemet és nevemet a /etc/resolv.conf könyvtárból. De ott hagytam a kereső sorban és a két névszerverem sorát is (valamiért a dhcpcd csomagom sose hozza létre az /etc/dhcpc/resolv.conf fájlt, így az állandó /etc/resolv.conf) fájlt kell használnom.
Az /etc/sysconfig/network fájlból eltávolítottam a HOSTNAME és GATEWAY bejegyzéseket. A többit hagytam ahogy volt (NETWORKING, DOMAINNAME, GATEWAYDEV).
Az /etc/sysconfig/network-scripts/ifcfg-eth0 fájlból eltávolítottam az IPADDR, NETMASK, NETWORK, és BROADCAST bejegyzéseket. A DEVICE és ONBOOT bejegyzéseket változatlanul hagytam. Megváltoztattam a BOOTPROTO sort BOOTPROTO=dhcp sorra.
Mentsd el a fájlt és indítsd újra a gépet.
Amikor kész vagy, ugorj az utolsó lépésre.
DHCPcd csomagot a Debianhoz a következő helyen találsz:
http://ftp.debian.org/debian/dists/slink/main/binary-i386/net/
Vagy kövesd a Slackware telepítésénél megadott utasításokat.
A deb csomag telepítéséhez használd a dpkg -i /where/ever/your/debian/packages/are/dhcpcd*deb parancsot.
Úgy néz ki, hogy semmilyen konfigurációra nem lesz szükség:
A dhcpcd csomag az indítószkriptjeit a Debian csomagjainál megszokott módon az /etc/init.d/csomag_neve könyvtárba telepíti, jelen esetben ez az /etc/init.d/dhcpcd, és ezt linkeli a különböző /etc/rc?.d/ könyvtárakhoz. | ||
--Írta: Heiko Schlittermann <[email protected]> |
Az /etc/rc?.d/ könyvtárak tartalma minden induláskor végrehajtódik.
Ha nem akarod újraindítani a gépet, akkor kézzel kell elindítanod a démont az /etc/init.d/dhcpcd start paranccsal.
Amikor végeztél, menj az utolsó lépésre.
A következő részt R. Shapiro írta:
Az "1999" (R5) kiadású LinuxPPC majdnem teljesen kompatibilis a RedHat 6-tal, egy kivétellel (lásd alább). Általánosságban a beállítás ugyanaz, mint a RedHat 6.x és Mandrake 6.x esetében.
A probléma az, hogy a RedHat 6 a pump klienst használja a DHCP-hez alapértelmezettként, ami viszont nem működik megbízhatóan a LinuxPPC alatt. A megoldáshoz telepítsd a legfrissebb Sergei Viznyuk-féle dhcpcd démont, és szerkeszd át az /sbin/ifup szkriptet, hogy a dhcpcd klienst használja a pump helyett.
Változtasd meg ezt:
if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then PUMP=true fi if [ -n "$PUMP" ]; then |
erre:
if [ "$BOOTPROTO" = bootp ]; then echo " done." else echo " failed." exit 1 fi elif [ "$BOOTPROTO" = dhcp ]; then echo -n "Determining IP information for $DEVICE..." if /sbin/dhcpcd -d $DEVICE ; then if [ -f /etc/dhcpc/dhcpcd-${DEVICE}.exe ]; then /etc/dhcpc/dhcpcd-${DEVICE}.exe fi |
valamint ennek megfelelően a ifdown szkriptben, ezt:
if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then .... fi |
erre:
if [ "$BOOTPROTO" = bootp ]; then fi if [ "$BOOTPROTO" = dhcp ]; then if [ -f /var/run/dhcpcd-${DEVICE}.pid ]; then kill `cat /var/run/dhcpcd-${DEVICE}.pid` rm -f /var/run/dhcpcd-${DEVICE}.pid fi fi |
Egy működő PPC rpm a dhcpcd-hez megtalálható a LinuxPPC 1999 CD-n; egy kissé későbbi rpm pedig a "contrib" könyvtárban a ftp://ftp.linuxppc.org/ címen. A forráskódot - amelyből ez a csomag készült - megtalálod a ftp://ftp.phystech.com/pub/dhcpcd-1.3.17-pl9.tar.gz helyen.
Miután a géped újraindult, a hálózati eszközödnek már működőképesnek kell lennie. Gépeld be: ifconfig.
Valami hasonlónak kell megjelennie a képernyőn:
lo Link encap:Local Loopback inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:302 errors:0 dropped:0 overruns:0 frame:0 TX packets:302 errors:0 dropped:0 overruns:0 carrier:0 coll:0 eth0 Link encap:Ethernet HWaddr 00:20:AF:EE:05:45 inet addr:24.128.53.102 Bcast:24.128.53.255 Mask:255.255.254.0 ^^^^^^^^^^^^^^^^^^^^^^^ UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:24783 errors:1 dropped:1 overruns:0 frame:1 TX packets:11598 errors:0 dropped:0 overruns:0 carrier:0 coll:96 Interrupt:10 Base address:0x300 |
Ha valamilyen normális számot látsz az inet addr mellett, akkor készen vagy. Ha azt látod: 0.0.0.0 , ne ess kétségbe, ez egy átmeneti beállítás, mielőtt a dhcpcd lekérné az IP címet. Ha néhány perc múlva is ezt látod, kérlek nézd meg a Hibaelhárítás fejezetet. A DHCPcd egy démon, és addig fut, míg a géped működik. Három óránként kapcsolatba lép a DHCP szerverrel, és próbálja megújítani az IP cím-kérést. Minden üzenetét a rendszernaplóban tárolja ( a Slakware-nél /var/adm/syslog, RedHat/OpenLinux esetén /var/log/syslog).
Még egy dolog. Meg kell adnod a névszervereidet is. Ezt kétféleképpen teheted meg; vagy megkérdezed a szolgáltatódat, hogy adja meg, és beírod az /etc/resolv.conf fájlba (pl. egy ilyen sort kell beírni: nameserver 1.2.3.4 - a ford.), vagy a DHCPcd fogja lekérni a szervertől a listát, és készít egy resolv.conf fájlt az /etc/dhcpc könyvtárban.
Én úgy döntöttem, hogy a DHCPcd resolv.conf fájlját használom:
Készíts biztonsági másolatot az /etc/resolv.conf fájlról: mv /etc/resolv.conf /etc/resolv.conf.OLD
Ha még nincs /etc/dhcpc könyvtárad, készíts egyet: mkdir /etc/dhcpc
Készíts egy hivatkozást (link) az /etc/dhcpc/resolv.conf fájlról az /etc/resolv.conf fájlra: ln -s /etc/dhcpc/resolv.conf /etc/resolv.conf
Ha ez nem működne, próbáld ki a következőket (a megoldást <[email protected]> ajánlotta Henrik Stoerner közreműködésével):
"Ezt az utolsó lépést csak azért csináltam , mert az én dhcpcd csomagom nem készítette el az /etc/dhcpc/resolv.conf fájlt. Az /etc/sysconfig/network-scripts/ifup fájlban a következőket módosítottam (nem szépségdíjas, de nekem működött):
elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then echo -n "Using DHCP for ${DEVICE}... " /sbin/dhcpcd -c /etc/sysconfig/network-scripts/ifdhcpc-done ${DEVICE} echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh if [ -f /var/run/dhcp-wait-${DEVICE}.pid ]; then ^^^^ echo "failed." exit 1 |
Ezt megváltoztattam erre:
elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then echo -n "Using DHCP for ${DEVICE}... " /sbin/dhcpcd echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ]; then ^^^^^^ echo "failed." exit 1 |
Jegyezd meg, hogy ott a ! (felkiáltójel) a következő sorban: if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ]; |
Most dőlj hátra és örülj :-).
A következő lépés(ek) nem szükségesek, de hasznosak lehetnek néhány felhasználó számára:
Ha csak néha van szükséged a dhcpcd démonra, indíthatod kézzel is a parancssorból (ehhez root jogokkal kell rendelkezned): /usr/sbin/dhcpcd.
Ha le kell állítanod a hálózatot, akkor pedig add ki a /usr/sbin/dhcpcd -k parancsot.
Ha követted a fenti lépéseket, és mégsem tudsz a hálózaton dolgozni, akkor íme néhány lehetséges megoldás:
Az induláskor a Linuxod teszteli a hálózati kártyát és valami hasonlót írhat ki:
eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 20 af ee 11 11, IRQ 10. 3c509.c:1.07 6/15/95 [email protected] |
Ha ilyen sor nincs az üzenetek között (később a dmesg parancs kiadásával is meg lehet nézni - a ford.), akkor a hálózati kártyádat nem ismerte fel az operációs rendszer. Ha hagyományos NE2000 kompatibilis kártyád van, akkor kapnod kell vele egy lemezt DOS programokkal, amelyekkel be tudod állítani a kártyát. Próbálkozz az IRQ-kal és a memóriacímekkel, amíg a Linux fel nem ismeri (általában az IRQ 9, 10, 12 jók).
Próbáld meg a dhcpcd démont a dhcpcd -r paranccsal futtatni.
Használd az ifconfig programot, hogy ellenőrizd a beállítások helyességét (adj néhány percet a beállítási folyamatnak, először azt fogja mondani, hogy Inet.addr=0.0.0.0)
Ha ez megoldja a problémát, akkor add hozzá az "-r" kapcsolót az indítófájlokhoz, a például /sbin/dhcpcd helyett legyen /sbin/dhcpcd -r.
RedHat alatt szerkeszd át az /etc/sysconfig/network-scripts/ifup szkriptet a következő módon:
IFNAME=$[ {DEVICE} \ "/sbin/dhcpcd -r -c /etc/"- etc etc. |
Valószínűleg RedHat-ot használsz, és nem követted rendesen a fenti instrukciókat :) A felkiáltójel hiányzik valamelyik utasításból. Nézd meg itt, hogyan kell jól beállítani.
Néhány visszajelzés szerint a gated (a gateway démon) összegubancolja az útválasztást a fenti problémával küzdő gépeken. Ellenőrizd, hogy fut-e a gated a ps -auxww | grep gate parancs futtatásával.
Ha fut, próbáld meg eltávolítani a RedHat csomagkezelőjével, vagy a megfelelő bejegyzés eltávolításával az /etc/rc.d/ könyvtárból.
Biztosnak kell lenned abban, hogy a 10BaseT aljzat (a "telefon" aljzat) a kártyádon aktiválva van. A legjobb módszer annak ellenőrzésére, hogy melyik csatlakozó lett beállítva induláskor például:
eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 20 af ee 11 11, IRQ 10. ^^^^^^^^^^^^ 3c509.c:1.07 6/15/95 [email protected] |
Kaptam visszajelzést laptopos felhasználóktól, akiknek ilyen problémájuk volt, és a PCMCIA segédprogramokkal lehetett összefüggésbe hozni (különösen az ifport-tal), amelyek a csatoló típusát 10Base2-re (thinnet) állítják. Neked biztosnak kell lenni abban, hogy 10BaseT-t használsz. Ha nem, állítsd át a kártyát, és indítsd újra a gépet.
Néhány rendszeren valamilyen gépnevet kell megadnod, mint a kérés részét. A dhcpcd démonnal ezt a dhcpcd -h foohost paranccsal tudod megtenni. Ez a gépnév valószínűleg megegyezik a hálózati belépéshez használt neveddel.
A kábelmodemek általában megjegyzik a kártya ethernet címét, így amikor új gépet csatlakoztatsz vagy kicseréled a hálókártyát, valahogy meg kell "tanítani" a kábelmodemet, hogy felismerje az új gépet/kártyát. Általában csak ki kell kapcsolni, majd vissza a modemet, míg a gép működik, vagy fel kell hívnod a szolgáltatót, és bejelenteni a hálókártya változását.
Lehetnek olyan tűzfal-szabályaid (ipfwadm, ipchains vagy iptables szabályok) amelyek letiltják a 67/68-as portokat, amelyeken a DHCP forgalmazza a beállítási információkat. Ellenőrizd alaposan a szabályokat.
Úgy néz ki, hogy a MediOne olyan dolgokat ad hozzá a DHCP-hez, amiknek nem kéne ott lenniük. Feltehetően ez már nem probléma, de ha gondokkal találkozol, ellenőrizd ezeket. Ha egy Windows NT szerencsés (?) felhasználója vagy, az Eseménynaplóban (Event Viewer) a következőt láthatod:
DHCP received an unknown option 067 of length 005. The raw option data is given below. 0000: 62 61 73 69 63 basic |
Ha ez probléma, látogass el az ftp://vanbuer.ddns.org/pub/ címre és töltsd le a bináris programot, vagy a forrást a változtatáshoz.
Ha sehogy sem sikerült a dhcpcd démonnal kapcsolatot létesítened, kipróbálhatod az ISC dhclient programot. A dhclient hozzáférhető az ISC által kiadott DHCP disztribúcióban, és mind kliens, mind szerverprogramot tartalmaz. Arról, hogy hogyan szerezheted meg és fordíthatod le a szervert, itt olvashatsz. Amikor kész vagy, kérlek térj vissza ide a kliens beállítását illetően.
a következő információkat Ted Lemon <[email protected]> a dhclient szerzőinek egyike adta közre. |
A DHCP kliens jelenlegi verziójához igazándiból nem kell dhclient.conf fájl. Csak meg kell hívni a programot, például: /sbin/dhclient.
Ez minden broadcast eszközt beállít. Ha ez nem működik, vagy csak egyetlen eszközt akarsz megadni, készíts egy /etc/dhclient.conf fájlt ezzel a tartalommal:
interface "eth0" { send dhcp-client-identifier 1:xx:xx:xx:xx:xx:xx; send dhcp-lease-time 86400; } |
Feltételeztük, hogy az ethernet eszköz neve eth0. Ha nem, változtasd meg. Ezen kívül írd át a xx:xx.xx.xx.xx.xx jeleket az eszköz ethernet címére. Ez a dhclient.conf nagyon hasonlóvá teszi a klienst egy Win95 klienshez.
Többféle DHCP szerver létezik a UN*X-szerű operációs rendszerekhez, mind pénzes, mind szabad felhasználású. Az egyik legnépszerűbb szabad szoftver a Paul Vixie/ISC- féle DHCPd. Jelenleg a legutolsó verzió a 2.0 (a legtöbb felhasználó számára javasolt), de a 3.0 is bétatesztelés alatt áll. Letöltheted a ftp://ftp.isc.org/isc/dhcp/ webhelyről.
Néhány Linux összeállítás tartalmazza a bináris dhcpd csomagot, ezért átugorhatod a következő részt, ha ezen a módon telepítetted.
Miután letöltötted, csomagold ki, majd lépj be a forráskönyvtárba. Itt add ki a ./configure parancsot.
Eltart egy kis ideig, amíg beállítja a dolgokat. Amikor kész, add ki a make, majd a make install parancsokat.
Miután kész a telepítés, add ki az ifconfig -a parancsot. Valami hasonlót kell látnod:
eth0 Link encap:10Mbps Ethernet HWaddr 00:C0:4F:D3:C4:62 inet addr:183.217.19.43 Bcast:183.217.19.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2875542 errors:0 dropped:0 overruns:0 TX packets:218647 errors:0 dropped:0 overruns:0 Interrupt:11 Base address:0x210 |
Ha nem látható a MULTICAST szó a kiírásban, újra kell fordítanod a kerneled, hogy benne legyen a támogatás. A legtöbb rendszeren azonban erre nincs szükség.
A következő lépés az útválasztás beállítása a 255.255.255.255 címre. Részlet a DHCPd README fájlból:
A válogatós DHCP kliensekkel (pl. Win95) való korrekt együttműködés érdekében a 255.255.255.255 címre is képesnek kell lennie csomagokat küldeni. Sajnos, a Linux ragaszkodik ahhoz, hogy a 255.255.255.255-öt a helyi broadcast címként állítsa be (itt ez 192.5.5.223). Ez a DHCP protokoll megsértése, és amíg a legtöbb DHCP kliens nem veszi észre a problémát, néhány (pl. az összes Microsoft kliens) igen. Az ilyen problémával küzdő kliensek nem "látják" a szervertől érkező "DHCPOFFER" üzeneteket.
Gépeld be: route add -host 255.255.255.255 dev eth0
Ha a "255.255.255.255: Unknown host" választ kapod, akkor próbáld meg a következő bejegyzést hozzáadni az /etc/hosts fájlhoz:
255.255.255.255 all-ones |
Aztán pedig:
route add -host all-ones dev eth0 |
vagy
route add 255.255.255.0 dev eth0 |
Itt természetesen az eth0 a hálózati eszköz neve, ha nálad más, változtasd meg.
Most konfigurálni kell a DHCPd démont. Ennek érdekében meg kell csinálnod, vagy módosítanod kell az /etc/dhcpd.conf fájlt. Van ehhez grafikus program is a KDE alatt ( http://www.kde.org/ ), amit kcmdhcpd-nek hívnak és nagyon hasonlít a Windows NT beállítóprogramjára. A KDE 2.0 kiadásakor benne lesz a csomagban vagy letölthető az ftp://ftp.us.kde.org/pub/kde/unstable/apps/network/ webhelyről.
Ha kézzel akarod konfigurálni a démont, akkor kövesd az alábbi utasításokat.
A legáltalánosabb esetben a címeket véletlenszerűen akarod kiosztani. Ez a következő beállításokkal elérhető:
# Sample /etc/dhcpd.conf # (add your comments here) default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.254; option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-name "mydomain.org"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.100; range 192.168.1.150 192.168.1.200; } |
Ez azt eredményezi, hogy a szerver a 192.168.1.10-192.168.1.100 vagy 192.168.1.150-192.168.1.200 tartományból fog IP címeket kiadni. 600 másodpercig biztosítja az IP címet, ha a kliens nem kér más időkeretet. Egyébként, a maximális (megengedett) "bérleti idő" 7200 mp. A szerver ezen kívül ajánlja, hogy a kliens a 255.255.255.0 alhálózati maszkot, a 192.168.1.255-ös broadcast címet, a 192.168.1.254-et, mint a router címét és a 192.168.1.1 és 192.168.1.2 című névszervereket használja.
Ha WINS szervert kell a Windows kliensek számára megadni, akkor beszúrhatod még a netbios-name-servers beállítást is, például:
option netbios-name-servers 192.168.1.1; |
Ezen kívül specifikus IP címeket adhatsz meg, amik a kliens hálókártyájának ethernet címén alapulnak, például:
host haagen { hardware ethernet 08:00:2b:4c:59:23; fixed-address 192.168.1.222; } |
Ez a példa a 192.168.1.122 címet osztja ki a 08:00:2b:4c:59:23 ethernet azonosítójú kártyával rendelkező kliensnek.
Ezeket keverheted is, például ha van néhány kliens aminek fix IP cím kell, másoknak pedig (pl. laptopos felhasználók) dinamikus címkiosztás. Egy csomó más lehetőség is van, például NIS szerver címek, időszerverek címei stb. Ha bármelyikre szükséged van, olvasd el a dhcpd.conf kézikönyv oldalt.
Egy dolgot kell tenned, mielőtt a szervert indítanád. A legtöbb esetben a DHCP telepítés nem készíti el a dhcpd.leases . Ezt a szerver használja abból a célból, hogy tárolja az aktuális kiosztási információkat. Ez sima szöveges formátumú, tehát a démon működése közben is megnézheted a tartalmát. A dhcpd.leases elkészítéséhez gépeld be:
touch /var/state/dhcp/dhcpd.leases |
Ez egy üres fájlt készít (méret = 0). Néhány régebbi 2.0-ás szerververzió /etc/dhcpd.leases fájlt igényel. Neked nem kell semmit sem tenned a fájllal, ezt a dhcpd kezeli. Ha olyan hibaüzenetet kapsz, hogy a fájl már létezik, simán figyelmen kívül hagyhatod és menj a következő lépésre.
Most már indíthatod a DHCP szervert. Gépeld be (vagy rakd be az indítószkriptekbe):
/usr/sbin/dhcpd |
Ez az eth0 eszközön elindítja a szervert. Ha más eszközre akarod felhúzni, akkor add meg a parancssorban, például:
/usr/sbin/dhcpd eth1 |
Ellenőrzési és hibakeresési célból először "debug" módban és előtérben futtatva indítsd el, ezt így teheted meg:
/usr/sbin/dhcpd -d -f |
Ezek után indítsd el az egyik kliensedet, és figyeld a szerver konzolját. Számos hibaellenőrző üzenetet fogsz látni. Ha minden működik, akkor kész vagy :) Állítsd le a dhcpd-t és indítsd újra -d és -f paraméter nélkül. Ha rendszerinduláskor is el akarod indítani, akkor tedd be például az
/etc/rc.d/rc.local |
A Linux Magazine egy nagyon jó cikket közöl egyik számában Network Nirvana: How to make Network Configuration as easy as DHCP (Hálózati Mennyország: Hogyan végezzük el hálózati beállításainkat könnyedén) címmel. ami a DHCP beállítását taglalja.