Isc-dhcpd server

Allikas: Kuutõrvaja

Sissejuhatus

DHCP (Dynamic Host Configuration Protocol) on mõeldud kohtvõrgus olevate seadmete võrgukonfiguratsiooni automaatseks seadistuseks, võimaldades jagada arvutitele ip aadresse, subnet maski, ruutingut, dns servereid ja muid parameetreid teatud ajavahemikuks.

DHCP on samaks otstarbeks loodud BOOTP edasiarendus.

isc-dhcpd tarkvara on arendatav ISC (Internet System Consortsium) poolt.

Kokku sisaldab see endast tegelikult kolme programmi

   * A DHCP server
   * A DHCP client
   * A DHCP relay agent

Teadus - ehk kuidas dhcp täpsemalt toimib

DHCP (Dynamic Host Configuration Protocol) teenust kasutavad arvutid oma võrguparameetrite automaatseks seadistamiseks.

Ehk kuidas siis DHCP võrgus toimib.

Dhcpd.gif

Dec 12 11:03:47 server dhcpd: DHCPDISCOVER from 00:02:55:d4:aa:db via eth0
Dec 12 11:03:48 server dhcpd: DHCPOFFER on 192.168.1.1 to 00:02:55:d4:aa:db (asp) via eth0
Dec 12 11:03:48 server dhcpd: DHCPREQUEST for 192.168.1.1 (192.168.1.1) from 00:02:55:d4:aa:db (asp) via eth0
Dec 12 11:03:48 server dhcpd: DHCPACK on 192.168.1.1 to 00:02:55:d4:aa:db (asp) via eth0

Kogu suhtlus käib udp abil 255.255.255.255 võrgus serveri ja kliendi vahel.

  1. Süsteem broadcastib välja udp DHCPDISCOVER Päringu kohalikku 255.255.255.255 võrku. Päring sisaldab MAC aadressi mis on võrgukaardil. Klient võib pärida ka dhcp serverilt viimati kasutatud ip. Juhul kui pole tegu värske süsteemiga vaid sellisega mis on varsemalt dhcp serverit kasutanud.
  2. DHCPD program serveris võtab vastu päringu. Saadab vastu DHCPOFFER'i ,et ta on olemas ja nõus vahetama infot.
  3. Kliend saadab täiendava DHCPREQUEST'i ,et saada dhcp serverilt infot
  4. Server saadab DHCPACK'i mis koosneb infost mis defineeritud dhcpd konfis vastava subneti jaoks.

Võimalikud vastused on veel

  • DHCPDECLINE -klient keeldub aadressist põhjuseks kasvõi avastab, et seda kasutab keegi teine
  • DHCPNAK - server ei kinnita aadressi andmist põhjuseks näiteks timeout, antud teisele kliendile

Kogu liiklus toimub udp peal ja sisemiste tulemüüri reeglite puhul see lubada.

Kui klient IP liisingut uuendama hakkab, teeb ta seda esmalt unicastiga selle sama serveri pihta, kes talle selle algselt andis. Alles kui see mitmeid kordi on ebaõnnestunud, üritab ta uuendamist broadcastida, kuid ka siis küsib ta sama IP numbrit, millele teine server eeldatavasti ei reageeri.

Seega teine DHCP (mis nt seadistatud erinevatele MAC aadressitele IPsid jagama) ei tohiks juba töötavas võrgus häireid põhjustada ja protokoll on koostatudki arvestusega, et servereid võib mitu olla. Üldiselt tasuks siiski arvestada selle reegliga, et kahte DHCP serverit ühte LANi panna ei tohi!

Paigaldamine ja vajalikud failid

FreeBSD all tuleb paigaldada ports nimega /usr/ports/net/isc-dhcp31-server/ seadistusfailiks /usr/local/etc/dhcpd.conf Lease fail ehk dhcp andmebaas mis sisaldab jagatud numbreid ja mac aadresse asub /var/db/dhcpd kaustas nimega dhcpd.leases

Näide 1 - Tavaline kasutus

Tavaline NAT'itud võrk. Jagatakse kliendidele ilma piiranguteta sisevõrgu aadresse.

ddns-update-style none;
default-lease-time 86400;
max-lease-time 172800;

subnet 192.168.0.0 netmask 255.255.255.0 {
 range 192.168.0.50 192.168.0.100;
 option subnet-mask 255.255.255.0;
 option broadcast-address 192.168.0.255;
 option routers 192.168.0.1;
 option domain-name-servers 194.126.97.30;
}


Seadistusfaili algusesse lähevad globaalsed muutujad. Seejärel võib hakata defineerima erinevaid võrke mida kasutatakse.

default-lease-time 86400; DHCP lease kestvuse aeg 1 päev

max-lease-time 172800; Maksimaalne kestvus 2 päeva

Iga dhcp võrgu seadistust alustatakse töö võrgu ehk subnet'i paikamääramisega

subnet 192.168.0.0 netmask 255.255.255.0 See rida määrab ,et võrk on 192.168.0.0/24 mida edaspidi kasutame. Seejärel defineeerime sulgude {} vahele ülejäänud muutujad.

range 192.168.0.50 192.168.0.100; IP'd jagatakse vahemikus 192.168.0.50 - 192.168.0.100

option subnet-mask 255.255.255.0; Kliendile jagatav subnet mask

option broadcast-address 192.168.0.255; Kliendi broadcast aadress

option routers 192.168.0.1; router mis antakse kliendile

option domain-name-servers 194.126.97.30; Nimeserver või serverid.

Näide 2 - Jagame ip'sid mac aadressi alusel

mac järgi dhcp jagamine. Oleks vaja ,et dhcp annaks arvutitele alati ühe ja sama ip. Selleks

ddns-update-style interim;
ignore client-updates;

subnet 192.168.3.0 netmask 255.255.255.0 { 
       option routers                  192.168.3.3;
       option subnet-mask              255.255.255.0;
       option domain-name-servers      195.250.187.46, 194.126.97.30;
       option ntp-servers              192.168.3.3;
       deny unknown-clients;
       default-lease-time 21600;
       max-lease-time 43200;

#Joel Jans
host JJ { hardware ethernet 00:C0:26:7F:B0:1C; fixed-address 192.168.3.10; }
}

Näide 3 - Mitme eri subneti ip'de jagamine

Meil on olemas kaks võrku.

Esimene on 192.168.0.0/24
Teine on 192.168.1.0/24

seadistatud peab olema võrgukaardile kaks ip'd 192.168.1.1 ja aliasena 192.168.0.1

Kui võrku satub tundmatu arvuti siis antakse talle juhuslik vaba ip 192.168.0.0/24 võrgust. Aga kui masina mac aadress ja ip on defineeritud isc-dhcp_192.168.1 failis siis saab ta sealt ettemääratud 192.168.1.0/24 võrgu ip.

Vajalik näiteks ,et kontorimasinad saaksid kõik kindlasti alati ühed ja samad aadressid ja täieliku ligipääsu võrku kuid näiteks läpakad oleksid eraldi piirangutega firewallis.

ddns-update-style none;

default-lease-time 86400;               # 1 Day
max-lease-time 172800;                  # 2 Days

//Anname arvutitele ka õige kellaserveri
option ntp-servers timehost.ut.ee;
//ja ütleme winsi serveri kus samba jaoks kohalikke nimesid lahendada
option netbios-name-servers 193.40.5.125;
option netbios-node-type 8;
authoritative;

shared-network net {

        subnet 192.168.0.0 netmask 255.255.255.0 {
               option subnet-mask 255.255.255.0;
               option routers 192.168.0.1;
               option domain-name-servers 194.126.115.18, 194.126.101.34;
               pool {
                       range 192.168.0.100 192.168.0.254;
               }
       }

       subnet 192.168.1.0 netmask 255.255.255.0 {
               option subnet-mask 255.255.255.0;
               option routers 192.168.1.1;
               option domain-name-servers 193.40.5.39, 193.40.5.76;
               include "/usr/local/etc/isc-dhcp_192.168.1";
       }
}

ja failis isc-dhcp_192.168.1

host masin1 {hardware ethernet 00:30:1b:34:9f:52; fixed-address  192.168.1.23;}
host masin2 {hardware ethernet 00:02:3f:b7:b5:b1; fixed-address  192.168.1.24;}
host masin3 {hardware ethernet 00:04:61:4e:25:36; fixed-address  192.168.1.25;}
host masin4 {hardware ethernet 00:50:8d:51:fc:31; fixed-address  192.168.1.26;}

Kui võrku tekib terve partii uusi masinaid, siis neil võib (teoorias) olla mingi prefixi osas sarnased MACid ja saab teha sellele filtri:

class "my-clients" {
        match if substring (option hardware,1,10) = "00:1D:92" ;
}
pool {
  range 192.168.165.10 192.168.165.20;
  allow members of  "my-clients" ;
}

Lingid

http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol

http://www.onlamp.com/pub/a/bsd/2003/04/17/FreeBSD_Basics.html?page=1

http://www.onlamp.com/pub/a/bsd/2003/05/15/FreeBSD_Basics.html?page=1

http://www.onlamp.com/pub/a/bsd/2003/05/01/FreeBSD_Basics.html

http://wiki.itcollege.ee/index.php/DHCP_teenus_Ubuntu_Server_s%C3%BCsteemis

http://www.madboa.com/geek/dhcp-failover/ DHCP failover cluser.