3. A kliens beállítása

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.

3.1. A kliens démon letöltése (dhcpcd)

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 , é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:

Majd kövesd az alábbi útmutatást.

3.2. Slackware

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.

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.

3.3. RedHat 6.x és Mandrake 6.x

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

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 :

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.

3.4. RedHat 5.x

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

Amikor kész vagy, ugorj az utolsó lépésre.

3.5. RedHat 4.x és Caldera OpenLinux 1.1/1.2

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 .

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.

3.6. Debian

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  

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.

3.7. LinuxPPC és MkLinux

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.

3.8. Utolsó lépés

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

Megjegyzés

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

3.9. Különféle megjegyzések

A következő lépés(ek) nem szükségesek, de hasznosak lehetnek néhány felhasználó számára:

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

3.10. Hibaelhárítás

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:

3.11. Alternatív DHCP kliens (ISC dhclient)

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.

Megjegyzés

a következő információkat Ted Lemon 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.