DHCP mini-HOWTOVladimirVuksanvuksan@veus.hrVertaald door: EllenBokhorstbokkie@nl.linux.orgv4.1222 oktober 2000vv
In dit document wordt getracht basisvragen te beantwoorden over hoe
je Linux box op te zetten dat het dient als een DHCP server of een
DHCP client.
IntroductieStandaard Disclaimer
Voor de inhoud van dit document kan geen aansprakelijkheid worden aanvaard.
Gebruik de concepten, voorbeelden en andere inhoud op eigen risico.
Aangezien dit een nieuwe editie van dit document is, kunnen er fouten en
onzurgvuldigheden in staan, die schade aan je systeem zouden kunnen veroorzaken.
Vervolg met de nodige voorzichtigheid, en alhoewel het zeer onwaarschijnlijk
is, neem ik er geen enkele verantwoordelijkheid voor.
Onthoud ook dat dit GEEN officiëe informatie is.
Veel van de inhoud van dit document is gebaseerd op veronderstellingen,
welke voor mensen schijnen te werken. Gebruik de informatie op eigen risico.
Nieuwe versies van dit document
Nieuwe versies van dit document zijn beschikbaar vanaf
http://www.oswg.org/oswg-nightly/DHCP.html
De volgende vertalingen van de DHCP mini-HOWTO zijn beschikbaar:
Chinees - http://www.linux.org.tw/CLDP/mini/DHCP.htmlJapans - http://www.linux.or.jp/JF/JFdocs/DHCP.htmlSpaans - ftp://cuates.pue.upaep.mx/pub/linux/LuCAS/DHCP-mini-Como/
Het is hierbij alle individuen die het document willen vertalen in hun
moedertaal toegestaan dit te doen. Ik vraag je alleen een link naar dit
document op te nemen en me de URL te geven van je vertaling, zodat ik
er een verwijzing naar op kan nemen.
Feedback
Feedback is voor dit document zeer zeker welkom.
Zonder jullie bijdragen en inbreng, zou dit document niet bestaan.
Dus stuur alsjeblieft jullie aanvullingen, opmerkingen en kritiek op naar
vuksan-feedback@veus.hr.
Medewerkers
Dit document is een aangepaste versie van het oorspronkelijke document
geschreven door Paul Makeev.
De volgende mensen hebben aan deze mini-HOWTO een bijdrage geleverd:
Heiko SchlittermannJonathan SmithDan KhabazaHal SadofskyHenrik StoernerPaul Rossingtonontelbare anderenCopyright Informatie
Dit document is auteursrechtelijk beschermd (c) 1998 Vladimir Vuksan en
gedistribueerd onder de voorwaarden van de OpenContent License (OPL). De
volledige tekst van de licentie is te vinden op
http://www.opencontent.org/opl.shtmlDHCP protocol
DHCP staat voor het Dynamic Host Configuration Protocol. Het wordt gebruikt
om vitale netwerkparameters van hosts (actieve clients) met de hulp van een
server te besturen. DHCP is backward compatibel met
BOOTP. Zie voor meer informatie RFC 2131 (oude RFC 1541) en anderen.
(Zie de sectie Internetbronnen aan het einde van dit document). Je kunt
ook het document
http://web.syr.edu/~jmwobus/comfaqs/dhcp.faq.html doorlezen.
In deze mini-HOWTO worden zowel de DHCP _SERVER_ daemon als de DHCP
_CLIENT_ daemon behandeld. De meeste mensen hebben de client daemon nodig
die op werkstations wordt gebruikt om netwerkinformatie van een remote server
te verkrijgen. De serverdaemon wordt door systeembeheerders gebruikt om
netwerkinformatie naar clients te distribueren, dus als je een reguliere
gebruiker bent, dan heb je de _CLIENT_ daemon nodig.
Client Setup
Thans bestaan er drie veschillende DHCP clientprogramma's voor Linux,
dhcpcd, pump en dhclient. Deze mini-HOWTO gaat primair over dhcpcd.
Downloaden van de client daemon (dhcpcd)
Afhankelijk van je distributie, moet je wellicht de DHCP clientdaemon
downloaden. Als je het vanuit de broncode wilt compileren, dan heb je
het dhcpcd package nodig waarvan de huidige versie, versie 1.3.18 is.
Het wordt onderhouden door Sergei Viznyuk sergei@phystech.com en
tegenwoordig wordt het bij de meeste distributies als een binair package
meegeleverd.
De broncode van dhcpcd kan worden gedownload vanaf de volgende lokaties:
ftp://ftp.phystech.com/pub/ (Primary site)http://www.cps.msu.edu/~dunham/out/
Volg dan de instructies hieronder. Ze zouden hetzelfde moeten zijn:
Slackware
Je kunt de laatste kopie downloaden van DHCPcd vanaf elke Metalab mirror
of vanaf:
ftp://metalab.unc.edu/pub/Linux/system/network/daemonsftp://ftp.phystech.com/pub/ (Primary site)
Download de laatste versie van dhcpcd.tar.gz.
Pak het uit
tar -zxvf dhcpcd-1.3.18pl1.tar.gz
ga naar die directory en maak dhcpcd:
cd dhcpcd-1.3.18pl1make
Installeer het (je moet de volgende opdracht als root uitvoeren)
make install
Hiermee zal de directory /etc/dhcpc worden aangemaakt waar DHCPcd de DHCP
informatie zal opslaan en het dhcpcd bestand zal worden gekopieerd naar
/usr/sbin.
Typ om het systeem te initialiseren met DHCP tijdens het booten:
cd /etc/rc.dmv rc.inet1 rc.inet1.OLD
Hierdoor zal het oude netwerkinitialisatiescript worden hernoemd in
rc.inet1.OLD.
Je moet nu het nieuwe rc.inet1 script aanmaken.
De volgende code is alles wat je nodig hebt:
#!/bin/sh
#
# rc.inet1 Dit shellscript boot het basis INET systeem.
HOSTNAME=`cat /etc/HOSTNAME` #Dit is waarschijnlijk niet nodig, maar ik
# laat het voor wat het is
# Koppel het loopback device aan.
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
# ALS JE EEN ETHERNET CONNECTIE HEBT, gebruik je de regels hieronder om de
# eth0 interface te configureren. Gebruik je alleen loopback of SLIP, voeg
# de rest van de regels dan niet in, in dit bestand.
/usr/sbin/dhcpcd
Sla het op en reboot je computer.
Ga naar de laatste stap zodra je klaar bent.
RedHat 6.x en Mandrake 6.x
De configuratie van DHCPcd onder RedHat 6.0+ is echt makkelijk. Je hoeft
alleen het Control Panel op te starten door te typen
control-panel.
Selecteer "Network Configuration"Klik op InterfacesKlik op AddSelecteer EthernetIn de Edit Ethernet/Bus Interface selecteer "Activate
interface at boot time" als ook "DHCP" en "Interface
configuration protocol"
In RedHat 6.x heeft RedHat als standaard en DHCP client opgenomen genaamd
pump in plaats van de bovengenoemde dhcpcd. Op de CD-ROM staat wel een
dhcpcd RPM, dus probeer dhcpcd als je geen gelukt hebt met pump.
Nadat je dhcpcd hebt geïnstalleerd
(b.v. rpm -i dhcpcd-1.3.17pl2-1.i386.rpm) dan moet je
wat wijzigingen aanbrengen.
Aanvullende notities van Alexander Stevenson
alexander.stevenson@home.com:
Ik had geen geluk met DHCPcd. Wat uiteindelijk werkte was "pump", wat wordt
meegeleverd met Linux Mandrake 6.0 (en dus veronderstel ik dat het ook
is opgenomen in RedHat). De opdracht die ik gebruikte was:
pump -i eth0 -h hostname
Het deed er niet toe wat "hostname" was, maar zonder dat, reageerde de
server niet.
Ik wijzigde toen de regel in mijn /sbin/ifup script om de wijziging te
weerspiegelen; de standaardversie heeft geen -h switch, en dus werkte
niet voor mijn.
Probeer "-h hostname toe te voegen aan de pump regel in het
/sbin/ifup script als je gebruik maakt van linuxconf
en het na het instellen van de adapter op "DHCP" nog steeds niet werkt.
Mijn script ziet er nu ongeveer zo uit:
...
if [ -n "$PUMP" ]; then
echo -n "Vaststellen van IP informatie voor $DEVICE..."
if /sbin/pump -i $DEVICE -h hostname; then
echo " klaar."
else
echo " mislukt."
exit 1
fi
else ...
Een andere elegantere manier om het hostname veld toe te voegen wordt
geleverd door Aad van der Klaauw:
Thans ben ik thuis een gateway systeem aan het configureren,
nodig om het MAC adres in te stellen en de '-h hostname' workaround te
gebruiken.
Dus besloot ik het script *niet* te wijzigen, maar het configure bestand
te gebruiken.
In mijn /etc/sysconfig/network-scripts/ifcfg-eth0 heb ik het volgende
toegevoegd:
DEVICE="eth0"
MACADDR="00:11:22:33:44:55"
DHCP_HOSTNAME="trigger_for_terayon"
het is imho een "zuiverder" manier.
Dat is het. Reboot je machine of tik op de opdrachtregel in
/sbin/ifup eth0.
RedHat 5.x
De configuratie van DHCPcd onder RedHat 5.0+ is echt makkelijk. Je hoeft
alleen het Control Panel op te starten door te typen
control-panel.
Selecteer "Network Configuration"Klik op InterfacesKlik AddSelecteer EthernetIn de Edit Ethernet/Bus Interface selecteer je "Activate
interface at boot time" als ook "DHCP" en "Interface
configuration protocol"
Ga naar de laatste stap zodra je klaar bent.
RedHat 4.x en Caldera OpenLinux 1.1/1.2
DHCPcd is opgenomen in de standaard RedHat distributie als een RPM en je
kunt het vinden op de CD-ROM van je distributie in de directory RPMS of
je kunt het downloaden vanaf:
ftp://ftp.redhat.com/pub/redhat/redhat-4.2/i386/RedHat/RPMS/dhcpcd-0.6-2.i386.rpm
Installeer het met rpm -i dhcpcd-0.6-2.i386.rpm.
Als alternatief kun je je eigen versie compileren door de stappen te volgen
uiteengezet in de
.
De volgende informatie werd geleverd door nothing
nothing@cc.gatech.edu.
Mijn statische ip en naam verwijderd uit
/etc/resolv.conf. Ik liet echter de search regel
staan en mijn twee nameserver regels (om een of andere reden maakt
mijn dhcpcd nooit een /etc/dhcpc/resolv.conf aan,
dus moet ik een statisch /etc/resolv.conf gebruiken).
In /etc/sysconfig/network verwijderde ik de HOSTNAME
en GATEWAY entry's. Ik liet de andere entry's zoals ze waren (NETWORKING,
DOMAINNAME, GATEWAYDEV).
In /etc/sysconfig/network-scripts/ifcfg-eth0 verwijderde
ik de IPADDR, NETMASK, NETWORK, en BROADCAST entry's. Ik liet
DEVICE en ONBOOT zoals ze waren. Ik wijzigde de BOOTPROTO regel in
BOOTPROTO=dhcp.
Sla het bestand op. Reboot je computer.
Ga wanneer je klaar bent naar de laatste stap.
Debian
Er bestaat een deb package van DHCPcd (zorgt dat het begint met dhcpcd) op:
http://ftp.debian.org/debian/dists/slink/main/binary-i386/net/
Of volg de
installatie instructies op.
Pak het deb package uit door in te tikken: dpkg -i /where/ever/your/debian/packages/are/dhcpcd*deb.
Het schijnt dat het configureren van DHCPcd niet nodig is, omdat:
From: Heiko Schlittermann
heiko@os.inf.tu-dresden.de
Het dhcpcd package installeert zijn opstartscript zoals gewoonlijk voor
debian packages in
/etc/init.d/package_name,
hier als /etc/init.d/dhcpcd,
en linkt dit naar de diverse /etc/rc?.d/ directory's.
De inhoud van de /etc/rc?.d/ dirs
wordt dan tijdens het booten uitgevoerd.
Als je het systeem na de installatie niet opnieuw opstart, dan zou je
kunnen overwegen de daemon handmatig te starten:
/etc/init.d/dhcpcd start.
Ga naar de laatste stap zodra je klaar bent.
LinuxPPC en MkLinux
De volgende sectie is geschreven door R. Shapiro
Sinds de "1999" (R5) release, is Linuxppc nu bijna volledig compatibel met
Redhat 6, met één voorbehoud (zie hieronder). Over het algemeen
zijn de instructies exact hetzelfde als voor de huidige release van
.
Een probleem dat overblijft is dat Redhat 6 standaard gebruik maakt van
de 'pump' client voor dhcp, en 'pump' werkt niet betrouwbaar onder Linuxppc.
Om dit te omzeilen zou je de laatste dhcpcd van
Sergei Viznyuk moeten downloaden, en dan
/sbin/ifup moeten bewerken dat het
dhcpcd gebruikt in plaats van pump.
Wijzig
if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then
PUMP=true
fi
if [ -n "$PUMP" ]; then
in
if [ "$BOOTPROTO" = bootp ]; then
echo " klaar."
else
echo " mislukt."
exit 1
fi
elif [ "$BOOTPROTO" = dhcp ]; then
echo -n "IP informatie vaststellen voor $DEVICE..."
if /sbin/dhcpcd -d $DEVICE ; then
if [ -f /etc/dhcpc/dhcpcd-${DEVICE}.exe ]; then
/etc/dhcpc/dhcpcd-${DEVICE}.exe
fi
en corresponderende wijzigingen voor ifdown. Wijzig
if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then
....
fi
in
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
Een werkende ppc rpm voor dhcpcd is opgenomen op de Linuxppc 1999 cd; een
iets latere rpm is beschikbaar in de contrib directory op
ftp://ftp.linuxppc.org/.
Broncode, welke kant-en-klaar onder Linux ppc 1999 compileert, is beschikbaar
vanaf ftp://ftp.phystech.com/pub/dhcpcd-1.3.17-pl9.tar.gz.
Alles samengenomen
Nadat je machine opnieuw is opgestart, zou je netwerkinterface moeten zijn
geconfigureerd.
Typ: ifconfig.
Je zou iets moeten krijgen als:
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
Als je onder inet addr een normaal nummer ziet, dan ben
je klaar.
Wanhoop niet als je 0.0.0.0 te zien krijgt, dit is een tijdelijke
instelling voor dhcpcd het IP-adres verwerft.
Als je zelfs na een paar minuten nog 0.0.0.0 ziet, kijk dan alsjeblieft in
. DHCPcd is een daemon en die
zal blijven draaien zolang je machine aanstaat. Elke drie uur, zal het
contact opnemen met de DHCP server en proberen het IP-adres te vernieuwen.
Het zal alle berichten in de syslog loggen (onder Slackware
/var/adm/syslog, RedHat/OpenLinux
/var/log/syslog).
Nog iets als laatste. Je moet je nameserver opgeven. Er zijn twee manieren
om dit te doen, je kunt of je provider vragen je de adressen van je
nameserver aan te leveren en die dan plaatsen in het bestand
/etc/resolv.conf of DHCPcd zal de lijst verkrijgen
van de DHCP server en zal een
resolv.conf in /etc/dhcpc samenstellen.
Ik besloot gebruik te maken van DHCPcd's resolv.conf
door het volgende te doen:
Maak een backup van je oude /etc/resolv.conf:
mv /etc/resolv.conf /etc/resolv.conf.OLD
Als de directory /etc/dhcpc nog niet
bestaat, maak deze dan aan:
mkdir /etc/dhcpc
Maak een link van /etc/dhcpc/resolv.conf naar
/etc/resolv.conf: ln -s
/etc/dhcpc/resolv.conf /etc/resolv.conf
Probeer als dat niet werkt (correctie aanbevolen door
nothing@cc.gatech.edu met wat informatie van Henrik
Stoerner):
Deze laatste stap moest ik alleen uitvoeren omdat mijn dhcpcd geen
/etc/dhcpc/resolv.conf aanmaakt. In /etc/sysconfig/network-scripts/ifup bracht ik
de volgende wijzigingen aan (een erg armzalige hack, maar het werkt):
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
Wijzigde ik in:
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
Let op de ! (bang) in if [ ! -f
/var/run/dhcp-wait-${DEVICE}.pid ];
Leun nu lekker achterover en geniet ervan :-)
Diverse notities
De volgende stappen zijn niet nodig, maar wellicht dat ze voor een aantal
mensen van nut zijn:
Als je slechts zo nu en dan netwerkconnectiviteit nodig hebt, dan kun je
dhcpcd vanaf de opdrachtregel starten (je moet hier
root voor zijn) met: /usr/sbin/dhcpcd.
Wanneer je het netwerk down wilt brengen, typ je:
/usr/sbin/dhcpcd -k.
Probleemoplossing
Als je de hierboven uiteengezette stappen hebt opgevolgd en niet in
staat bent het netwerk te benaderen dan zijn hier verscheidene mogelijke
redenen voor:
Je netwerkkaart is niet goed geconfigureerd
Tijdens het bootproces probeert Linux je netwerkkaart en zou iets kunnen
melden als:
eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 20 af ee 11 11, IRQ 10.
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov
Als een dergelijke melding niet verschijnt, dan wordt je ethernetkaart
wellicht niet door je Linux systeem herkend. Als je een generic
ethernetkaart hebt (een NE2000 kloon) dan zou je een disk moeten hebben
ontvangen met DOS-utility's die je kunt gebruiken om de kaart in te stellen.
Probeer de IRQ's uit totdat Linux je kaart herkent (IRQ 9, 10 en 12 zijn
gewoonlijk goed).
Je DHCP server ondersteunt RFC 1541/Mijn DHCP server is Windows NT
Probeer dhcpcd uit te voeren door het typen van
dhcpcd -r.
Gebruik ifconfig om te controleren of je netwerkinterface
is geconfigureerd (wacht een paar seconden voor het configuratieproces
initieel zal aankomen met Inet.addr=0.0.0.0)
Als dit je probleem oplost, voegt dan de vlag "r" toe aan de opstartscripts,
dwz: in plaats van /sbin/dhcpcd krijg je
/sbin/dhcpcd -r.
Bewerk bijvoorbeeld onder RedHat het script
/etc/sysconfig/network-scripts/ifup
en wijzig het volgende:
IFNAME=$[ {DEVICE} \
"/sbin/dhcpcd -r -c /etc/"- etc etc.
Tijdens het booten krijg ik de foutmelding "Using DHCP for eth0 ...
failed" maar mijn systeem werkt prima.
Je maakt naar alle waarschijnlijkheid gebruik van RedHat en hebt de
instructies niet zorgvuldig opgevolgd :-) In één van de
if statements ontbreekt de ! (bang).
Spring hier naar toe en controleer hoe het
te corrigeren.
Mijn netwerk werkt een paar minuten en reageert dan niet meer
Er zijn meldingen over gated (gateway daemon) die de routing op Linux boxen
verknalt wat resulteert in het hierboven beschreven probleem. Controleer of
gate wordt uitgevoerd met:
ps -auxww | grep gate.
Als dit zo is, probeer het dan te verwijderen met RedHat's RPM manager of
verwijder de entry in
/etc/rc.d/.
Mijn ethernetkaart wordt tijdens het booten herkend, maar ik krijg
nog steeds een "NO DHCPOFFER" melding in mijn logs.
Ik heb een PCMCIA ethernetkaart.
Je moet ervoor zorgen dat de 10BaseT poort ("phone" plug) op je netwerkkaart
is geactiveerd. De beste manier om dit te verifiëren is te controleren
voor welk soort connector je kaart is geconfigureerd tijdens het booten, b.v.
eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 20 af ee 11 11, IRQ 10.
^^^^^^^^^^^^
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov
Ik heb meldingen ontvangen van laptopgebruikers die dit soort problemen
hebben door de PCMCIA utility's (in het bijzonder ifport) die het connector
type zouden instellen op 10Base2 (thinnet). Je moet er zeker van zijn dat
je 10BaseT gebruikt voor je connectie. Als dit niet zo is, dan moet je
de kaart herconfigureren en de computer herstarten.
Mijn DHCP client broadcast verzoeken, maar niemand antwoordt
(Aangeleverd door Peter Amstutz)
Op een aantal systemen, moet je een hostnaam voor je machine als onderdeel
van het verzoek opnemen. Doe dit met dhcpcd met dhcpcd -h
foohost
Waarschijnlijk zal de gewenste hostnaam je gebruikersaccountnaam op
het netwerk zijn.
Ik heb alle stappen opgevolgd, maar nog steeds is mijn machine
niet in staat een verbinding te leggen
De kabelmodem zal gewoonlijk het ethernetadres van je netwerkkaart
onthouden, dus als je een nieuwe computer verbindt, of de netwerkkaarten
verwisselt, dan zul je op een of andere manier je kabelmodem moeten "leren"
de nieuwe computer/kaart te herkennen. Gewoonlijk kun je het modem uitschakelen
en het weer inschakelen als de computer aan staat of je zult de technische
ondersteuning in moeten schakelen en ze vertellen dat je de netwerkkaart in
de computer hebt verwisseld.
Je hebt firewall rules (ipfwadm rules) die geen poort 67/68 verkeer toestaan
gebruikt door DHCP om configuratie informatie te distribueren. Controleer
zorgvuldig je firewall rules.
Ik heb MediaOne Express service en ik kan nog steeds geen verbinding maken.
Het schijnt dat MediaOne wat dingen heeft toegevoegd aan DHCP die er niet in
horen. Vermoedelijk is dit geen probleem meer, maar als je moeilijkheden
ondervindt, controleer dan op deze zaken. Als je het (on)geluk hebt Windows
NT op je machine te hebben geïnstalleerd, en de Event Viewer
activeert, dan zul je waarschuwing te zien krijgen als:
DHCP received an unknown option 067 of length 005. The raw option data is
given below.
0000: 62 61 73 69 63 basic
Als dit het probleem is ga dan naar
ftp://vanbuer.ddns.org/pub/
en download een binary of haal de broncode op voor de wijziging.
Alternatieve DHCP client (ISC dhclient)
Als je geen succes had met het verkrijgen van je Linux connectie draaiend
met dhcpcd, dan wil je wellicht de ISC dhclient proberen. dhclient wordt
me de DHCP distributie van ISC geleverd, waarin zowel een DHCP client
als een DHCP server is opgenomen. Instructies hoe de DHCP distributie
te verkrijgen en compileren zijn te hier
te vinden. Wanneer je er klaar mee bent, keer dan naar deze sectie terug
om de client te configuren.
De volgende informatie is aangeleverd door
Ted Lemon mellon@isc.org
één van de auteurs van dhclient.
Met de huidige versie van de DHCP client, heb je feitelijk geen
dhclient.conf nodig. Het enige dat je hoeft te doen
is het aanroepen van dhclient b.v.: /sbin/dhclient.
Hiermee zullen alle broadcast interfaces worden geconfigureerd. Als dit niet
werkt, of als je slechts één interface wilt, dan maak je een
/etc/dhclient.conf bestand aan met deze
voorbeeldconfiguratie:
interface "eth0" {
send dhcp-client-identifier 1:xx:xx:xx:xx:xx:xx;
send dhcp-lease-time 86400;
}
Hier veronderstellen we dat de ethernet interface eth0 is. Zo niet dan
overeenkomstig wijzigen. Vervang bovendien
xx:xx:xx:xx:xx door je ethernetadres.
Deze dhclient.conf laat de client meer op een Win95 client lijken.
DHCP Server SetupDHCP server voor UNIX
Er zijn verscheidene DHCP servers beschikbaar voor U*X-achtige OS'sen,
zowel commercieel als gratis. Een van de populairdere vrije DHCP servers
is Paul Vixie/ISC DHCPd. Thans is de laatste versie 2.0 (aanbevolen voor
de meeste gebruikers), maar 3.0 is in beta testfase. Je kunt het ophalen
vanaf
ftp://ftp.isc.org/isc/dhcp/
Een aantal distributies voorzien in binaire packages voor dhcpd, dus
sla de volgende sectie over als je het op die manier installeerde.
Pak het uit nadat je het hebt gedownload. Daarna ga je naar de distributiedirectory en typt: ./configure
De configure fase duurt even. Daarna tik je in:
make en make install.
DHCP server configuratie
Typ na de installatie ifconfig -a. Je krijgt iets
te zien als:
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
Als er geen MULTICAST is weergegeven, dan moet je de kernel opnieuw
configureren en ondersteuning voor multicast opnemen. Op de meeste systemen
zul je dit niet hoeven doen.
De volgende stap bestaat uit het toevoegen van de route voor 255.255.255.255.
Aangehaald uit de DHCPd README:
"Voor de juiste werking van dhcpd met lastige DHCP clients (b.v. Windows 95),
moet het in staat zijn pakketjes met het IP doeladres 255.255.255.255 te
verzenden. Helaas staat Linux erop 255.255.255.255 in het lokale subnet
broadcastadres te wijzigen (hier is dat 192.5.5.223). Dit resulteert in
een overtreding van het DHCP protocol, en ondanks dat veel DHCP clients
het probleem niet opmerken, doen een aantal (b.v. alle Microsoft DHCP clients)
dit wel. Clients die dit probleem hebben, lijken de DHCPOFFER meldingen van
de server niet te zien."
Typ: route add -host 255.255.255.255 dev eth0
Als je de melding "255.255.255.255: Unknown host" krijgt,
dan zou je moeten proberen de volgende entry aan het bestand
/etc/hosts toe te voegen:
255.255.255.255 all-ones
Probeer daarna:
route add -host all-ones dev eth0
of
route add 255.255.255.0 dev eth0
eth0 is uiteraard de naam van het netwerkdevice dat je
gebruikt. Als het verschilt, wijzig dit dan overeenkomstig.
Opties voor DHCPd
Nu moet je DHCPd nog configureren. Hiervoor moet je het bestand
/etc/dhcpd.conf aanmaken of bewerken. Er bestaat
onder KDE een grafische interface voor de configuratie van dhcpd.
( http://www.kde.org/ ) genaamd
kcmdhcpd dat veel lijkt op de DHCP configurator onder Windows NT.
Wanneer KDE 2.0 uitkomt, zal het met kcmdhcpd worden meegeleverd, of kun
je het direct ophalen vanaf:
ftp://ftp.us.kde.org/pub/kde/unstable/apps/network/
Volg onderstaande instructies op als je het met de hand wilt configureren:
Het meest gebruikelijke dat je zult willen is het willekeurig toekennen
van IP-adressen. Dit kan met instellingen als volgt worden gedaan:
# Voorbeeld /etc/dhcpd.conf
# (voeg hier je opmerkingen toe)
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;
}
Dit zal resulteren in een DHCP server die een client een IP-adres in
het bereik 192.168.1.10-192.168.1.100 of 192.168.1.150-192.168.1.200 toekent.
Het zal voor 600 seconden een IP-adres verstrekken als de client niet vraagt
om een speciek tijdsfragment. Anders zal de maximaal (toegestande) tijd
7200 seconden zijn. De server zal de client ook "adviseren" dat het 255.255.255.0
als subnetmask gebruikt, 192.168.1.255 als het broadcastadres,
192.168.1.254 als de router/gateway en 192.168.1.1 en
192.168.1.2 als DNS servers.
Als je een WINS server voor je Windows clients op moet geven, dan zul je
de optie netbios-name-servers op moeten nemen, b.v.:
option netbios-name-servers 192.168.1.1;
Je kunt ook specifieke IP-adressen toekennen gebaseerd op het ethernetadres
van de client, b.v.:
host haagen {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 192.168.1.222;
}
Dit zal IP-adres 192.168.1.222 toekennen aan een client met het
ethernetadres 08:00:2b:4c:59:23.
Je kunt ook mengen en matchen, b.v. je kunt bepaalde clients "statisch"
IP-adressen (b.v. servers) toekennen en anderen dynamische IP's (b.v.
mobiele gebruikers met laptops). Er zijn een aantal andere opties, b.v.
nis server adressen, time server adressen enz., mocht je een van die
opties nodig hebben, lees dan alsjeblieft de manpage van
dhcpd.conf.
De server starten
Voor het starten van de server moet er nog één ding worden
gedaan. In de meeste gevallen maakt de DHCP installatie geen
dhcpd.leases bestand aan. Dit bestand wordt door
DHCPd gebruikt om informatie over huidige leases op te slaan.
Het is in gewoon tekstformaat, dus je kunt het gedurende de werking van
DHCPd bekijken. Typ voor het aanmaken van dhcpd.leases:
touch /var/state/dhcp/dhcpd.leases
Hiermee zal een leeg bestand (bestandsomvang = 0) worden aangemaakt.
Een aantal van de oudere versies van dhcpd 2.0 plaatste het bestand in
/etc/dhcpd.leases. Je hoeft geen wijzigingen aan te
brengen aan het leases bestand, het zal worden gemanipuleerd door dhcpd.
Als je een melding krijgt waarin wordt aangegeven dat het bestand bestaat,
dan kun je dit simpelweg negeren en verder gaan met de volgende stap.
Je kunt nu de DHCP server aanroepen. Typ simpelweg (of neem het op in de
opstartscripts):
/usr/sbin/dhcpd
Hiermee zal dhcpd met het eth0 device worden aangeroepen. Als je het wilt
aanroepen met een ander device, dan kun je dit simpelweg op de opdrachtregel
opgeven, b.v.:
/usr/sbin/dhcpd eth1
Ter verificatie dat alles prima werkt, zou je als eerste de debugging modus
aan moeten zetten en de server in de voorgrond plaatsen. Je kunt dit doen met:
/usr/sbin/dhcpd -d -f
Start dan één van de clients en bekijk de console van je server.
Je zult een aantal debugging meldingen tevoorschijn zien komen. Als alles
prima werkt, dan ben je klaar :-). Verlaat dhcpd en start het zonder de
-d en -f argumenten. Als je wilt
dat dhcpd tijdens het booten opstart, neem dhcpd dan op in b.v.:
/etc/rc.d/rc.local
Andere interessante documenten
Linux Magazine heeft een tamelijk goed artikel in hun uitgave van april
genaamd
Network
Nirvana: How to make Network Configuration as easy as DHCP waarin
de setup voor DHCP wordt besproken.