DHCP, het Dynamic Host Configuration Protocol, schrijft voor
hoe een systeem verbinding kan maken met een netwerk en hoe het
de benodigde informatie kan krijgen om met dat netwerk te
communiceren. FreeBSD gebruikt de OpenBSD dhclient
welke uit OpenBSD 3.7 komt.
Alle informatie over dhclient
kan
zowel voor de ISC als de OpenBSD DHCP-cliënt gebruikt
worden. De DHCP-server zit bij de ISC-distributie.
In dit onderdeel worden de cliëntcomponenten van de
ISC en OpenBSD DHCP-cliënt en de servercomponenten van het
ISC DHCP-systeem beschreven. Het programma voor de cliënt,
dhclient
, zit standaard in FreeBSD en de server
is beschikbaar via de port net/isc-dhcp42-server. Naast de
onderstaande informatie, zijn de hulppagina's van
dhclient(8), dhcp-options(5) en dhclient.conf(5)
bruikbare bronnen.
Als dhclient
, de DHCP-cliënt, wordt
uitgevoerd op een cliëntmachine, dan begint die met het
broadcasten van verzoeken om instellingeninformatie. Standaard
worden deze verzoeken op UDP poort 68 gedaan. De server
antwoordt op UDP 67 en geeft de cliënt een IP-adres en
andere relevante netwerkinformatie, zoals een netmasker,
router en DNS-servers. Al die informatie komt in de vorm van
een DHCP “lease” en is voor een bepaalde tijd
geldig (die is ingesteld door de beheerder van de DHCP-server).
Op die manier kunnen IP-adressen voor cliënten die niet
langer met het netwerk verbonden zijn (stale) automatisch weer
ingenomen worden.
DHCP-cliënten kunnen veel informatie van de server krijgen. Er staat een uitputtende lijst in dhcp-options(5).
FreeBSD integreert de OpenBSD DHCP-cliënt
dhclient
volledig.
Er is ondersteuning voor de
DHCP-cliënt in zowel het installatieprogramma als in het
basissysteem, waardoor het niet noodzakelijk is om kennis te
hebben van het maken van netwerkinstellingen voor het netwerk
waar een DHCP-server draait.
DHCP wordt ondersteund door
sysinstall. Bij het instellen van
een netwerkinterface binnen
sysinstall is de tweede vraag:
“Wil je proberen de interface met DHCP in te
stellen?” Als het antwoord bevestigend luidt, dan wordt
dhclient
uitgevoerd en als dat succesvol
verloopt, dan worden de netwerkinstellingen automatisch
ingevuld.
Voor het gebruiken van DHCP bij het opstarten van het systeem zijn twee instellingen nodig:
Het apparaat bpf
moet in de
kernel gecompileerd zijn. Dit kan door
device bpf
aan het bestand met
kernelinstellingen toe te voegen en de kernel te herbouwen.
Meer informatie over het bouwen van een kernel staat in
Hoofdstuk 9, De FreeBSD-kernel instellen.
Het apparaat bpf
is al
onderdeel van de GENERIC
kernel die bij
FreeBSD zit, dus als er geen sprake is van een aangepaste
kernel, dan hoeft er geen nieuwe gemaakt te worden om DHCP
aan te praat te krijgen.
Voor de lezer die bijzonder begaan is met beveiliging,
is het belangrijk aan te geven dat
bpf
ook het apparaat is waardoor
pakketsnuffelaars hun werk kunnen doen (hoewel ze nog
steeds als root
moeten draaien).
bpf
is
noodzakelijk voor DHCP, maar als beveiliging bijzonder
belangrijk is, dan hoort bpf
waarschijnlijk niet in een kernel te zitten omdat de
verwachting dat er in de toekomst ooit DHCP gebruikt gaat
worden.
Standaard draait de DHCP-synchronisatie op FreeBSD in de achtergrond, of asynchroon. Andere opstartscripten gaan verder terwijl DHCP wordt voltooid, wat het opstarten van het systeem versnelt.
DHCP in de achtergrond werkt goed als de DHCP-server snel op verzoeken reageert en het DHCP-configuratieproces snel gaat. Op sommige systemen kan het lang duren voordat DHCP klaar is. Als netwerkdiensten proberen te draaien voordat DHCP voltooid is, zullen ze falen. Door DHCP in synchrone modus te draaien wordt dit probleem voorkomen en wordt het opstarten gepauzeerd totdat de DHCP-configuratie voltooid is.
Gebruik om in de achtergrond verbinding te maken met een
DHCP-server terwijl andere opstartscripts verder gaan (asynchrone
modus) de waarde “DHCP
” in
/etc/rc.conf
:
ifconfig_fxp0
="DHCP"
Gebruik om het opstarten te pauzeren totdat DHCP voltooid is de
synchrone modus met waarde
“SYNDHCP
”:
ifconfig_fxp0
="SYNDHCP"
Vervang fxp0
zoals getoond in deze
voorbeelden met de naam van de interface dat dynamisch
geconfigureerd moet worden, zoals getoond in Paragraaf 12.8, “Netwerkkaarten instellen”.
Als er een andere lokatie voor
dhclient
wordt gebruikt of als er extra
parameters aan dhclient
meegegeven moeten
worden, dan dient ook iets als het volgende toegevoegd te
worden:
dhclient_program="/sbin/dhclient" dhclient_flags=""
De DHCP-server, dhcpd, zit bij de port net/isc-dhcp42-server in de Portscollectie. Deze port bevat de ISC DHCP-server en documentatie.
/etc/dhclient.conf
Voor dhclient
is een
instellingenbestand /etc/dhclient.conf
nodig. Dat bestand bevat meestal alleen maar commentaar,
omdat de standaardinstellingen redelijk zinvol zijn. Dit
bestand wordt beschreven in dhclient.conf(5).
/sbin/dhclient
dhclient
is statisch gelinkt en staat
in /sbin
. Er staat meer informatie
over dhclient
in dhclient(8).
/sbin/dhclient-script
dhclient-script
is het
FreeBSD-specifieke DHCP-cliënt instellingenscript. Het
wordt beschreven in dhclient-script(8), maar het is
niet nodig het te wijzigen om goed te werken.
/var/db/dhclient.leases.interface
De DHCP-cliënt houdt in dit bestand een database bij van geldige leases, die naar een logboekbestand worden geschreven. In dhclient.leases(5) staat een iets uitgebreidere beschrijving.
Het DHCP-protocol staat volledig beschreven in RFC 2131.
Er is nog een bron van informatie ingesteld op http://www.dhcp.org/
.
In dit onderdeel wordt beschreven hoe een FreeBSD systeem zo ingesteld kan worden dat het opereert als DHCP-server door gebruik te maken van de ISC (Internet Systems Consortium) implementatie van de DHCP-server.
De server wordt niet geleverd als deel van FreeBSD en om deze dienst aan te bieden dient de port net/isc-dhcp42-server geïnstalleerd te worden. In Hoofdstuk 5, Applicaties installeren: pakketten en ports staat meer informatie over de Portscollectie.
Om een FreeBSD systeem in te stellen als DHCP-server moet het
apparaat bpf(4) in de kernel zijn opgenomen. Om dit te
doen dient device bpf
aan het bestand met
kernelinstellingen toegevoegd te worden en dient de kernel
herbouwd te worden. Meer informatie over het bouwen van
kernels staat in Hoofdstuk 9, De FreeBSD-kernel instellen.
Het apparaat bpf
is al onderdeel
van de GENERIC
kernel die bij FreeBSD, dus
het is meestal niet nodig om een aangepaste kernel te bouwen
om DHCP aan de praat te krijgen.
Het is belangrijk te vermelden dat
bpf
ook het apparaat is waardoor
pakketsnuffelaars kunnen werken (hoewel de programma's die
er gebruik van maken wel bijzondere toegang nodig hebben).
bpf
is
verplicht voor DHCP, maar als beveiliging van belang is, dan
is het waarschijnlijk niet verstandig om
bpf
in een kernel op te nemen
alleen omdat er in de toekomst misschien ooit DHCP gebruikt
gaat worden.
Hierna dient het standaardbestand
dhcpd.conf
dat door de port net/isc-dhcp42-server is
geïnstalleerd gewijzigd te worden. Standaard is dit
/usr/local/etc/dhcpd.conf.sample
en dit
bestand dient gekopieerd te worden naar
/usr/local/etc/dhcpd.conf
voordat de
wijzigingen worden gemaakt.
dhcpd.conf
is opgebouwd uit
declaraties over subnetten en hosts en is wellicht het meest
eenvoudig te beschrijven met een voorbeeld:
option domain-name "example.com";option domain-name-servers 192.168.4.100;
option subnet-mask 255.255.255.0;
default-lease-time 3600;
max-lease-time 86400;
ddns-update-style none;
subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.129 192.168.4.254;
option routers 192.168.4.1;
} host mailhost { hardware ethernet 02:03:04:05:06:07;
fixed-address mailhost.example.com;
}
Deze optie geeft het domein aan dat door cliënten als standaard zoekdomein wordt gebruikt. In resolv.conf(5) staat meer over wat dat betekent. | |
Deze optie beschrijft een door komma's gescheiden lijst met DNS-servers die de cliënt moet gebruiken. | |
Het netmasker dat aan de cliënten wordt voorgeschreven. | |
Een cliënt kan om een bepaalde duur vragen die een lease geldig is. Anders geeft de server aan wanneer de lease vervalt (in seconden). | |
Dit is de maximale duur voor een lease die de server
toestaat. Als een cliënt vraagt om een langere
lease, dan wordt die wel verstrekt, maar is de maar geldig
gedurende | |
Deze optie geeft aan of de DHCP-server moet proberen de DNS-server bij te werken als een lease is geaccepteerd of wordt vrijgegeven. In de ISC implementatie is deze optie verplicht. | |
Dit geeft aan welke IP-adressen in de groep met adressen zitten die zijn gereserveerd om uitgegeven te worden aan cliënten. Alle IP-adressen tussen de aangegeven adressen en die adressen zelf worden aan cliënten uitgegeven. | |
Geeft de default gateway aan die aan de cliënten wordt voorgeschreven. | |
Het hardware MAC-adres van een host, zodat de DHCP-server een host kan herkennen als die een verzoek doet. | |
Geeft een host aan die altijd hetzelfde IP-adres moet krijgen. Hier kan een hostnaam gebruikt worden, omdat de DHCP-server de hostnaam zelf opzoekt voordat de lease-informatie terug wordt gegeven. |
Wanneer u klaar bent met het schrijven van uw
dhcpd.conf
, dient u de DHCP-server in
/etc/rc.conf
aan te zetten, door het
volgende toe te voegen:
dhcpd_enable="YES" dhcpd_ifaces="dc0"
Vervang de interfacenaam dc0
door de
interface (of interfaces, gescheiden door witruimtes) waarop
uw DHCP-server moet luisteren naar DHCP-verzoeken van
cliënten.
Daarna kunt u doorgaan met het starten van de server door het volgende commando te geven:
#
service isc-dhcpd start
Als er later wijzigingen in de instellingen gemaakt moeten
worden, dan is het belangrijk te onthouden dat het sturen van
een SIGHUP
signaal naar
dhcpd niet
resulteert in het opnieuw laden van de instellingen, zoals
voor de meeste daemons geldt. Voor deze daemon dient een
signaal SIGTERM
gestuurd te worden om het
proces te stoppen. Daarna dient de daemon met het hiervoor
beschreven commando weer gestart worden.
/usr/local/sbin/dhcpd
dhcpd is statisch gelinkt
en staat in /usr/local/sbin
. In de
hulppagina voor dhcpd(8) die meekomt met de port
staat meer informatie over
dhcpd.
/usr/local/etc/dhcpd.conf
dhcpd heeft een
instellingenbestand,
/usr/local/etc/dhcpd.conf
, nodig
voordat de daemon diensten aan cliënten kan leveren.
Het bestand moet alle informatie bevatten die aan
cliënten gegeven moet worden en de informatie die
nodig is voor het draaien van de dienst. Dit
instellingenbestand staat beschreven in de hulppagina voor
dhcpd.conf(5) die meekomt met de port.
/var/db/dhcpd.leases
De DHCP-server houdt in dit bestand een database bij met leases die zijn uitgegeven en die naar een logboek worden geschreven. In de hulppagina dhcpd.leases(5) die bij de port zit wordt dit uitvoeriger beschreven.
/usr/local/sbin/dhcrelay
dhcrelay wordt in uitgebreidere omgevingen gebruikt waar de ene DHCP-server een verzoek van een cliënt naar een andere DHCP-server op een ander netwerk doorstuurt. Als deze functionaliteit nodig is, kan die beschikbaar komen door de port net/isc-dhcp42-relay te installeren. De hulppagina voor dhcrelay(8) die bij de port zit bevat meer details.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.