DHCP

Linux.fista
Versio hetkellä 23. heinäkuuta 2015 kello 02.15 – tehnyt Oselotti (keskustelu | muokkaukset)
Siirry navigaatioon Siirry hakuun

DHCP eli Dynamic Host Configuration Protocol on protokolla, jonka avulla tietokoneille voidaan mm. määrittää IP-osoite automaattisesti. Jos haluat määrittää verkkokortille eth0 asetukset dhcp:llä, komenna

dhclient eth0

Joissain jakeluissa käytetään komentoa dhcpcd

Jos haluat automatisoida tämän, laita tiedostoon /etc/network/interfaces (Debianissa) rivi

iface eth0 inet dhcp

Huomaa että tuolla kullekin verkkokortille saa olla vain yksi iface-alkuinen rivi.

DHCP yleisesti

DHCP eli Dynamic Host Configuration Protocol on protokolla jonka avulla voidaan jakaa automaattisesti IP-osoitteet verkossa toimiville verkkolaitteille. IP-osoitteen lisäksi DHCP:lla annetaan yleensä muitakin verkkoa koskevia asetuksia, mm. aliverkon peite, oletusreititin (gateway) ja DNS- eli nimipalvelimet. Tällöin verkon ylläpitäjän ei tarvitse asettaa verkkoasetuksia jokaisella työasemalla.

DHCP hyväksyttiin Internet-standardiksi vuonna 1993, ja se suunniteltiin vanhemman BOOTP-protokollan (bootstrap protocol) seuraajaksi protokollan monien puutteiden vuoksi. BOOTP ei salli IP-osoitteiden jakamista määräajaksi, eikä tue lisäoptioiden määrittämistä. DHCP on taaksepäin yhteensopiva BOOTP:n kanssa.

Suuressa osassa kuluttajille suunnatuista Internet-liittymistä käytetään DHCP:tä osoitemäärittelyihin juuri sen helppouden vuoksi. ADSL- tai WLAN-reitittimet toimivat yleensä myös DHCP-palvelimina mikäli internet-yhteys halutaan jakaa usealle koneelle sisäverkossa NATin läpi.

DHCPD

DHCPD on palvelu, joka mahdollistaa tietokoneen toimimisen DHCP-palvelimena. Linuxissa yleisimmin käytetty DHCP-toteutus on Internet Systems Consortiumin kehittämä. DHCPD:n kanssa voi helposti sotkea suurenkin verkon toiminnan, mikäli laittaa palvelimen kuuntelemaan väärään verkkoliityntään ja jos verkon palomuureja ei ole säädetty huolella.

DHCPD jakaa IP-osoitteista sille määritellyistä osoitealueista. Eri laitteet tunnistetaan yleensä niiden fyysisten eli MAC-osoitteiden perusteella (protokolla sallii myös muunlaiset tunnisteet). Sitä, että jokin IP-osoite on annettu palvelimelta koneen käytöön, kutsutaan leaseksi (vuokra). Kullekin leaselle on määritelty maksimiaika, jonka se voi olla voimassa. Palvelu varmistaa ennen osoitteen antamista, että se on vapaana eli ei löydy lease-tiedostosta tai vastaa ICMP ECHOon (eli pingiin). Asiakas uusii leasen ennen sen vanhenemista mikäli haluaa jatkaa verkko-osoitteen käyttöä.

Verkko-osoitteita voidaan jakaa joko dynaamisesti tietyltä alueelta (esim 192.168.0.10-192.68.0.100) mille tahansa laitteille tai sitten kiinteästi, niin että tietylle MAC-osoitteelle annetaan aina ennalta määrätty verkko-osoite. Kiinteällä osoitteistuksella saadaan esimerkiksi tulostimille tai palvelimille aina samat osoitteet, mikä on usein välttämätöntä käytettävyyden kannalta ja helpottaa myös pääsynvalvontaa. Dynaaminen osoitteistus sen sijaan sopii esim silloin, kun verkossa on muuttuva määrä laitteita (esim. avoin vierailijaverkko). Tällöin lease-ajatkin kannattaa asettaa lyhyeksi.

Yleisimmissä skenaarioissa yhdelle verkkoalueelle riittää yksi DHCP-palvelin, mutta se on samalla myös yksittäinen vikaantumispiste (single point of failure). ISC:n dhcpd tukee versiosta 3.0 lähtien DHCP failoveria. Tällöin vikaantumispisteestä päästään eroon määrittelemällä failover peerejä (dhcp-palvelimia joilla on samat poolit ja ranget jne), ja pääpalvelimen vikaantuessa alkaa "varapalvelin" jakaa osoitteita.

Dhcpd:n käyttämät tiedostot ovat dhcpd.conf, dhcpd.leases(~) ja dhcpd.pid joista .conf sisältää käyttäjän tekemät määrittelyt. Palvelu tallettaa leaset ja niiden kestoajat dhcpd.leases(~)-tiedostoon. Myös komentoriviltä voidaan antaa parametrejä. Ajettavan binäärin nimi on dhcpd.

Komentorivioptiot

Kuunneltavat interfacet voi asettaa komentoriviltä kirjoittamalla niiden nimet komennon perään (esim: dhcpd eth0). Mikäli interfaceja ei ole listattu, kuunnellaan kaikkia broadcastiin kykeneviä liityntöjä. DHCP-palvelimen standardin mukainen portti on 67, mutta senkin voi halutessaan vaihtaa -p port:llä. Komentoriviltä voi myös määrittää manuaalisesti asetustiedoston sijainnin (-cf config-file), leasetiedoston (-lf lease-file) ja dhcpd-prosessin ID:n sisältävän tiedoston (-pf pid-file).

dhcpd.conf

Daemonin asetustiedostoa voi muokata omien tarpeiden mukaan hyvin monipuolisesti. Tiedosto on vapaamuotoinen ASCII-tekstitiedosto, joka jäsennetään erikseen sitä luettaessa.

esimerkki alueen määrityksestä:

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.56 192.168.0.100;
  option domain-name-servers 123.123.4.30, 123.123.5.30;
  option subnet-mask 255.255.255.0;
  option routers 192.168.0.1;
  option broadcast-address 192.168.0.255;
  option netbios-name-servers 192.168.0.1;
  default-lease-time 600 max-lease-time 7200;
  }

esimerkki yhden isännän määrityksestä:

host kone {
       hardware ethernet 00:0D:3A:63:EB:73;
       fixed-address 192.168.0.10;
       }

DHCP-client

DHCP-Asiakasohjelma mahdollistaa IP-osoitteen ja muiden tietojen automaattisen hakemisen. Se lähettää asiakasportista 68 verkon broadcast-osoitteeseen porttiin 67 pyynnön saada palvelimelta IP-osoite (DHCPDISCOVER). Mikäli palvelin tarjoaa laitteelle osoitetta, vastaa se DHCPOFFER:lla, minkä jälkeen client lähettää DHCPREQUEST:in (pyydetään osoitetta). Palvelin vastaa DHCPACK:illa, mikäli kaikki meni hyvin. Tämän jälkeen asiakaskone saa alkaa käyttää tarjottua IP-osoitetta.

Tavallisesti osoite haetaan määritetyille verkkoliitynnöille tietokoneen käynnistyessä tai verkkoyhteyden kytkeytyessä. Vanhemmissa järjestelmissä dhclient saatetaan joutua ajamaan erikseen mutta uudemmissa järjestelmissä käynnistysskriptit lukevat esim /etc/network/interfaces:sta, mille liitynnöille client tulisi ajaa ja hoitavat osoitteen hakemisen. Vikatilanteissa, esimerkiksi jos nettiliittymässä oli ongelmaa konetta käynnistettäessä, dhclient tai sitä kutsuva init-skripti voidaan joutua ajamaan uudestaan käsin.

dhclient.conf sisältää käyttäjän antamia asetuksia, esim. tiedon siitä mitä kaikkea lisätietokenttiä palvelimelta pyydetään (esim. netbios-palvelin). Asiakas pitää myös kirjaa siitä mitkä leaset se on saanut ja kuinka kauan ne ovat voimassa. Nämä löytyvät tiedostosta dhclient.<interface>.leases tai dhclient.leases.

Aiheesta muualla