Isc-dhcpd server
Sisukord
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.
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.
- 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.
- DHCPD program serveris võtab vastu päringu. Saadab vastu DHCPOFFER'i ,et ta on olemas ja nõus vahetama infot.
- Kliend saadab täiendava DHCPREQUEST'i ,et saada dhcp serverilt infot
- 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.