DHCP
en protokoll som deler ut IP-adresser og nettverksoppsett

Foto: AnnaER / Pixabay 
Foto: moinzon / Pixabay
Bruk begrepet i en beslutning
Bruk «Hva er DHCP?» i en konkret beslutning. Vi kan knytte begrepet til systemet du bygger eller kjøper. Wi-Fi, brannmurer og fjerntilgang satt opp slik at de ansatte kan jobbe hvor som helst, og bare de rette personene slipper inn.
Undersøk antakelsene bak ordet
Bruk forklaringen og det tilknyttede arbeidet til å formulere spørsmål for prosjektet. Vi kan undersøke antakelsene sammen før et verktøy velges. Administrerte 30 Ubuntu Linux‑VPS‑instanser — 30 Linux‑servere administrert, med gjenoppretting planlagt på forhånd
Hva det er
DHCP, Dynamic Host Configuration Protocol, er måten en enhet som nettopp har koblet seg til et nettverk, finner ut hvor den hører hjemme på nettverket. En bærbar PC som kobler seg på et Wi-Fi-nettverk, kjenner sin egen maskinvareadresse og lite annet. DHCP gir den en IP-adresse, nettmasken, ruteren trafikken skal sendes gjennom, og DNS-serverne den skal spørre, uten at noen trenger å taste inn noe. Protokollen er definert i RFC 2131 fra mars 1997, der sammendraget beskriver den som et rammeverk for å overføre konfigurasjonsinformasjon til verter på et TCP/IP-nettverk. Den vokste ut av den eldre Bootstrap Protocol, BOOTP, og det viktigste den la til, var automatisk tildeling av adresser som kan gjenbrukes.
RFC 2131 nevner tre måter å dele ut en adresse på. Ved automatisk tildeling får klienten en permanent adresse. Ved dynamisk tildeling får den en adresse for en begrenset periode, eller til den gir den tilbake. Ved manuell tildeling velger nettverksadministratoren adressen, og DHCP leverer den bare. Dynamisk tildeling er den eneste av de tre der en adresse av seg selv går tilbake til poolen når den som hadde den, ikke lenger trenger den, og det er den mekanismen resten av artikkelen handler om.
Et slikt tidsbegrenset utlån kalles på fagspråket en lease. Klienten kan forlenge den, levere adressen tilbake før tiden og til og med be om en uendelig lease. RFC-en påpeker at en server likevel kan foretrekke lange, men endelige leaser, slik at den før eller siden oppdager en klient som er tatt ut av drift. Bak serveren ligger det RFC-en kaller vedvarende lagring: én oppføring per klient, med en identifikator som nøkkel og parameterne klienten har fått, som verdi.
DHCP går over UDP. Klienter sender til serverens port 67, og servere svarer på klientens port 68. De såkalte options, innstillingene en server kan sende med, fra nettmasken til leasetiden, er spesifisert for seg i RFC 2132. IPv6 har sin egen protokoll, DHCPv6, som nå er spesifisert i RFC 9915, en internettstandard fra januar 2026 som erstattet RFC 8415. Den bruker andre porter, 546 for klienter og 547 for servere og reléagenter, og den kan kjøre enten i stedet for eller ved siden av tilstandsløs autokonfigurasjon av adresser (SLAAC). RFC 9915 kaller selv IPv4-protokollen DHCPv4 når de to må holdes fra hverandre, og den gjengir IETFs konsensus om at IPv4-konfigurasjon skal sendes over DHCPv4 og ikke over DHCPv6.
Hvorfor det er viktig
Hver enhet på et nettverk trenger de samme få innstillingene, og én feil verdi er nok til å kutte den av: en maske som ikke passer til subnettet, en ruteradresse som tilhører noen andre, en DNS-server som ble slått av i fjor. Uten DHCP må hver av disse verdiene tastes inn på hver enhet og holdes riktige hver gang noe endrer seg. Med DHCP bor de på ett sted, og å bytte DNS-server for et helt kontor blir en endring i serverens konfigurasjon i stedet for en runde i bygget.
Leasen er det som får protokollen til å skalere. Fordi dynamisk tildeling låner ut adresser for en bestemt tid, kan en pool betjene flere enheter i løpet av en uke enn den har adresser, så lenge de ikke alle er til stede samtidig. RFC 2131 skriver at dynamisk tildeling er særlig nyttig for klienter som bare er tilkoblet midlertidig, og for å dele en begrenset pool mellom klienter som ikke trenger faste adresser. Og fordi en klient bare kan forsvinne, regner ikke protokollen med et farvel: RFC-en slår fast at protokollen fungerer riktig uten at klienten sender en frigivelsesmelding. En adresse kommer tilbake når leasen går ut, enten den som hadde den, sier fra eller ikke.
Det gjør leasetiden til et reelt designvalg og ikke en standardverdi man lar stå. En lang lease holder adressene til enheter som for lengst er borte, låst lenger. En kort betyr mer fornyelsestrafikk og mindre tid til å reparere en server som har sluttet å svare, for en klient hvis lease går ut før den når fram til en server, må slutte å bruke adressen sin.
DHCP er også et spørsmål om tillit. Det første svaret en enhet godtar, forteller den hvilken ruter all trafikken dens går gjennom, og hvilken DNS-server som oversetter hvert eneste navn den slår opp, så den som styrer det svaret, styrer hvor enheten havner. RFC 2131 legger ikke skjul på det: Avsnittet om sikkerhet kaller protokollen i sin nåværende form ganske usikker, fordi den er bygd direkte på UDP og IP, og fordi maskinene den skulle betjene, er vanskelige å utstyre med passord eller nøkler. Det samme avsnittet påpeker at uautoriserte servere er lette å sette opp og kan dele ut feil eller doble adresser og peke på forfalskede rutere og forfalskede navneservere. Beskyttelsen må komme fra nettverket rundt protokollen, ikke fra protokollen selv.
Slik ser det ut i praksis
Ta en bærbar PC med maskinvareadressen 00-00-5E-00-53-2A som kobler seg på et kontornett, 192.0.2.0/24, der én maskin på 192.0.2.1 er både ruter og DHCP-server. Den bærbare starter uten adresse, så den første meldingen sendes med avsenderadressen 0.0.0.0 som kringkasting til alle på linken. Fire meldinger senere er den konfigurert:
bærbar 00-00-5E-00-53-2A server 192.0.2.1
1 DHCPDISCOVER 0.0.0.0 -> 255.255.255.255, serverport 67
er det en server her?
2 DHCPOFFER tilbyr 192.0.2.50 i 86400 s, server-id 192.0.2.1
3 DHCPREQUEST kringkasting: server-id 192.0.2.1, ønsker 192.0.2.50
4 DHCPACK 192.0.2.50 er den bærbares i 86400 sEt hvilket som helst antall servere kan svare på en DHCPDISCOVER, og klienten kan vente og samle inn mer enn ett tilbud. Så velger den ett og kringkaster en DHCPREQUEST som navngir den valgte serveren i optionen server identifier og ber om akkurat den adressen den serveren tilbød. Alle andre servere som ser kringkastingen, tolker den som et avslag på sitt eget tilbud. Den valgte serveren skriver bindingen ned i den vedvarende lagringen sin og bekrefter med en DHCPACK.
Den bekreftelsen bærer innstillingene, hver av dem en nummerert option definert i RFC 2132. For den bærbare kunne den inneholde:
option 53 meldingstype 5 (DHCPACK)
option 54 server-id 192.0.2.1
option 51 leasetid 86400 (sekunder, ett døgn)
option 1 nettmaske 255.255.255.0
option 3 ruter 192.0.2.1
option 6 DNS-servere 192.0.2.53RFC 2132 krever at nettmasken kommer før ruter-optionen når begge er med, og lar en server oppgi flere rutere og flere navneservere i prioritert rekkefølge. Leasetiden og server-id-en er ikke valgfrie: RFC 2131 gjør begge obligatoriske i en DHCPACK som svarer på en DHCPREQUEST.
Før den bærbare tar 192.0.2.50 i bruk, bør den sjekke at ingen andre allerede bruker adressen, for eksempel med ARP. Viser adressen seg å være opptatt, må klienten sende DHCPDECLINE og begynne på nytt. Ellers starter tidtakerne. Med mindre serveren sender egne verdier, er T1 halvparten av leasen og T2 sju åttendedeler av den, så med en lease på ett døgn ser det slik ut:
t = 0 s DHCPACK mottatt, leasen begynner
t = 43200 s T1: RENEWING, unicast DHCPREQUEST til 192.0.2.1
t = 75600 s T2: REBINDING, DHCPREQUEST som kringkasting til alle servere
t = 86400 s leasen går ut: slutt å bruke 192.0.2.50, begynn på nyttRFC-en ber om en viss tilfeldig variasjon rundt begge tidtakerne, slik at et rom fullt av bærbare som slås på samtidig, ikke fornyer alle på en gang. Får en forespørsel ikke svar, venter klienten halvparten av den gjenværende tiden før den prøver igjen, men minst 60 sekunder. En frisk klient fornyer ved halvveismerket og kommer aldri i nærheten av slutten av leasen sin.
Serveren trenger ikke å stå på subnettet til den bærbare. En ruter kan fungere som reléagent: Den fanger opp kringkastingen og sender den videre til en server et annet sted, og dens egen adresse, som står i giaddr-feltet i meldingen, forteller serveren hvor svaret skal sendes. Det regner RFC 2131 med, og den påpeker at reléagenter fjerner behovet for en DHCP-server på hvert nettverkssegment. Siden vår om nettverk og VPN-oppsett nevner konfigurering og installasjon av 1 000 Wi-Fi-rutere og administrasjon av nettverksinfrastrukturen for over 1 000 servere. I den skalaen er det ikke aktuelt å taste inn adresser for hånd, og utformingen av pooler, leaser og reléer blir en del av nettverksdesignet.
Hvor det går galt
En fremmed server svarer først. En hjemmeruter som er koblet feil vei, en testmaskin som er brokoblet inn på kontornettet, eller en bevisst angriper kan alle svare på en DHCPDISCOVER, og ingenting i protokollen forteller en klient hvilken server som er den ekte. RFC 2131 lister opp hva en slik server kan gjøre: dele ut feil eller doble adresser og sende klienter til en forfalsket ruter eller forfalskede navneservere. Svitsjer kan filtrere dette bort, og RFC 7610 påpeker at en tilsvarende mekanisme for IPv4, DHCP snooping, er mye brukt. Tillat DHCP-servermeldinger bare på svitsjportene som fører til de ekte serverne eller reléagentene deres, og kast dem alle andre steder.
Poolen går tom. En pool har et fast antall adresser, og dynamisk tildeling får dem bare tilbake når leaser går ut. På et gjestenett der telefoner passerer i hundretall, betyr en lease på en uke at alle gjester fra den siste uken fortsatt har en adresse. RFC 2131 advarer også om at en ondsinnet klient kan legge beslag på alle ressursene og nekte legitime klienter tilgang til dem. Dimensjoner poolen etter antallet enheter som er til stede innenfor én leaseperiode, og kort ned leasen overalt der enheter kommer og går.
Et nytt subnett uten relé. En DHCPDISCOVER sendes som kringkasting, og kringkastinger stopper ved ruteren. Et nytt VLAN eller en ny kontoretasje uten en konfigurert reléagent får ikke noe svar i det hele tatt. En vert som implementerer RFC 3927, kan da gi seg selv en link-lokal adresse fra 169.254/16, som bare virker på den ene linken, fordi rutere ikke skal videresende pakker til eller fra slike adresser. Konfigurer en reléagent på ruteren i hvert subnett med DHCP-klienter, og les en 169.254-adresse på en klient som et tegn på at ingen server svarte.
To servere som er uenige. Å kjøre to servere for robusthetens skyld er fornuftig, men RFC 2131 sier at alle servere bør returnere de samme parameterne, bortsett fra selve adressen, slik at klienten oppfører seg forutsigbart uansett hvilket tilbud den tar imot, og gjør nettverksadministratoren ansvarlig for at de svarer likt. To servere med overlappende adresseområder kan dessuten låne ut den samme adressen til to klienter. Gi hver server sitt eget område, hold innstillingene identiske, og sammenlign de to etter hver endring.
Faste adresser inne i poolen. En skriver som har fått en statisk adresse for hånd fra området DHCP låner ut av, vil før eller siden kollidere med en lease. Protokollen prøver å fange dette opp: En server bør teste en adresse den er i ferd med å gjenbruke, for eksempel med en ICMP echo request, og en klient som oppdager at den nye adressen er opptatt, må avvise den, hvoretter serveren merker adressen som utilgjengelig og bør varsle administratoren. Det er sikkerhetsnett, ikke et design. Hold håndkonfigurerte adresser utenfor poolen, eller bruk manuell tildeling, slik at serveren selv holder reservasjonen.
IPv6 blir oversett. Å filtrere DHCPv4 gjør ingenting med DHCPv6, som går på andre porter, og som en klient kan starte når en Router Advertisement melder at DHCPv6 er tilgjengelig. RFC 9915 viser til RFC 7610, DHCPv6-Shield, for å demme opp for uautoriserte DHCPv6-servere, og RFC 7610 slår fast at falske Router Advertisements ligger utenfor området dens; dem tar Router Advertisement Guard seg av. Filtrer DHCPv6-servermeldinger på tilgangsportene slik dere filtrerer DHCPv4-meldingene, og kjør RA-Guard ved siden av.
Les mer
- RFC 2131: Dynamic Host Configuration Protocol — selve protokollen: tildelingsmåtene, leaser, meldingsutvekslingen, tidtakerne T1 og T2 og avsnittet om sikkerhet.
- RFC 2132: DHCP Options and BOOTP Vendor Extensions — alle de nummererte optionene, fra nettmasken og ruterlisten til leasetiden og meldingstypen.
- RFC 9915: Dynamic Host Configuration Protocol for IPv6 (DHCPv6) — IPv6-protokollen, portene og meldingene dens, og hvordan den spiller sammen med SLAAC; den erstatter RFC 8415.
- RFC 7610: DHCPv6-Shield: Protecting against Rogue DHCPv6 Servers — filtrering av servermeldinger på svitsjen, DHCP snooping som forbilde fra IPv4, og hva den overlater til RA-Guard.
- RFC 3927: Dynamic Configuration of IPv4 Link-Local Addresses — 169.254/16-adressene en vert kan gi seg selv når ingen server svarer, og hvorfor rutere aldri videresender dem.

