U mom proslom clanku, susreli smo se sa DHCP klijentom koji dolazi sa vasim FreeBSD sistemom. Ove nedelje, prelazimo na konfigurisanje DHCP servera. Za razliku od dhclient-a koji dolazi sa sistemom, vas FreeBSD system ne dolazi sa ugradjenim DHCP server softverom. Ovo je zbog toga sto konfigurisete DHCP server jedino u slucaju kada zelite da dodeljujete IP konfiguraciju vasoj licnoj mrezi.

Bilo kako bilo, postoje dva porta koji vam omogucavaju da kreirate vas licni DHCP server. Prvi je poznat kao WIDE, ili Widely Integrated Distributed Environment. Kao sto njegovo ime sugerise, optimiziran je za veoma velike mreze, tako da ga necu pominjati u ovom serijalu. Drugi dolazi od ISC, ili Internet Software Consortium, i moze se naci ovde.

dhclient koji dolazi sa FreeBSD-om isto tako dolazi od ISC. Sajt sadrzi dobre informacije vezano za DHCP, ukljucujuci FAQ i neke pocetnicke tutorijale.

Pre instaliranja DHCP server porta, proverite dali je bpf uredjaj ukljucen u vasem kernelu. Ako koristite default kernel, pretrazite defaultni kernel konfiguracioni fajl:

 $ grep bpf /usr/src/sys/i386/conf/GENERIC
 # The `bpf' device enables the Berkeley Packet Filter.
 device		bpf		# Berkeley packet filter

Ako ne koristite default kernel, zamenite ime vaseg custom kernel konfiguracionog fajla umesto “GENERIC.” Ako ne dobijete nista kada uradite pretragu pomocu grep za bpf, dodajte tu liniju vasem konfuguracionom fajlu i rekompajlirajte vas kernel. Sada kada imate bpf uradjaj, instalirajte DHCP server port:

# cd /usr/ports/net/isc-dhcp3   
# make install clean

Ovo ce instalirati nekoliko fajlova. Pogledajmo nakratko. Prvo, dobicete cetiri izvrsna fajla:

Dobicete i dva primera startup skripti i primer konfiguracione skripte koje ce vam pomoci sa vasim licnim konfiguracijama:

Primer startup skripte za DHCP server.

Primer startup skripte za bootp relay agent.

Primer konfiguracione skripte za DHCP server.

Sledece man stranice se instaliraju da bi vam pomogle u vasim konfiguracijama:

I konacno, direktorijum sa dokumentima:

Konfiguracioni fajl

Pocnimo tako sto cemo pogledati konfiguracioni fajl DHCP servera. Ostavite primere takvi kakvi jesu, i kopirajte ih u fajlove koje cete uredjivati:

$ cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf

Pogledajmo sada svaku liniju ovog fajla da bi razumeli sve opcije; a onda cemo ih primeniti za mrezu u primeru.

$ more /usr/local/etc/dhcpd.conf

# dhcpd.conf
# Sample configuration file for ISC dhcpd

Dok citate ovo, ili bilo koji drugi konfiguracioni fajl, svaka linija koja pocinje sa ”#” je komentar.

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

Svaka informacija koju DHCP server izdaje (lease) klijentu je poznata kao “opcija.” Neke od opcija se smatraju “globalnim,” (global) sto znaci da ce svaki DHCP klijent na mrezi primiti tu opciju kao deo njihovog lease-a. Neke od opija su “lokalne” (local) za specificni subnet. Na primer, opcija za IP adresu default gateway-a ce uvek biti “lokalna,” zato sto default gateway mora biti na istom subnetu kao i klijent. Ipak, dve opcije iznad se smatraju “globalnim”, zato sto svaki kompjuter u vasoj mrezi deli isti domen i koristi iste DNS servere.

default-lease-time 600;
max-lease-time 7200;

Softveri nekih DHCP klijenata potrazuju vreme lease-a. Ako to klijent ne uradi, server ce dodeliti lease sa default-lease-time vrednoscu. Ako klijent to uradi, server ce ispostovati zahtev, ali samo do max-lease-time vrednosti. Obe vrednosti su date u sekundama.

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

Kementar ispred ove linije se treba izbrisati, zato sto dozvoljava vasem DHCP serveru da posalje DHCPNACK lose konfigurisanim klijentima. Primer lose konfigurisanog klijenta moze biti kompjuter koji je fizicki pomeren na drugi subnet bez predhodnog prekida starog lease-a.

# ad-hoc DNS update scheme - set to "none" to disable dynamic DNS updates.
ddns-update-style ad-hoc;

Parametar ddns-update-style moze imati tri moguce vrednosti. ad hoc se smatra zastarelim i ne treba se koristiti. interim dozvoljava vasem DHCP serveru da azurira DNS server kad god izdaje lease. Na ovaj nacin, vas DNS server ce znati koje IP adrese su dodeljene kojim kompjuterima u vasoj mrezi. Da bi ovo radilo, vas DNS server mora da podrzava DDNS (Dynamic DNS). Ako vas DNS server ne podrzava DDNS, ili ne zelite da koristite prednosti dinamickog DNS, onda promenite ovu vrednost u none.

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
#log-facility local7;

U zavisnosti od toga kako odredite ovu opciju odredicete gde ce DHCP server slati svoje log informacije. local7 se odnosi na lokalno definisan log fajl. Dok ne definisete taj log fajl, DHCP server ce sva svoja desavanja pisati u sistemski log fajl, ili /var/log/messages.

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

subnet 10.152.187.0 netmask 255.255.255.0 {
}

Sada dolazimo do sadrzine ovog fajla, “subnet dedeklaracije.” DHCP server mora da zna koju mrezu ili subnet sadrzi vasa mreza. Isto atko za svaku mrezu ili subnet, mora da zna koji “opseg” adresa mu je dozvoljeno da izda do uredjaja na tom segmentu mreze. Od pomoci je da skicirate vasu mrezu unapred, tako da znate koje su adrese dostupne za DHCP klijente i koje adrese nisu dostupne zato sto su vec staticki dodeljene. Takvu skicu cemo objasniti u sledecem clanku, kada demonstriramo kompleksniju mreznu konfiguraciju. U medjuvremenu, vazno je da “deklarisete” svaki segment vase mreze, cak i ako segment ne sadrzi DHCP klijente. Ovo je slucaj u gornjoj deklaraciji za subnet ID 10.152.187.0. Primetite da deklaracija ukljucuje mreznu masku koja se podudara sa mreznim ID, iza koje se postavlja par viticastih zagrada ({}). Uporedimo sada ovu deklaraciju sa sa sledecom subnet deklaracijom:

# This is a very basic subnet declaration.

subnet 10.254.239.0 netmask 255.255.255.224 {
    range 10.254.239.10 10.254.239.20;
    option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}

Ova deklaracija se odnosi na subnet 10.254.239.0. Unutar viticastih zagrada se nalazi “opseg” IP adresa dostupnih za izdavanje. Ako ste upoznati sa classful subnet masking-om, onda znate da svaka IP adersa na vasoj mrezi mora da deli deo IP adrese koji ima masku 255. U ovom primeru, postoje tri 255-tice u masci, tako da svaka IP adresa na ovoj mrezi mora da ima ista prva tri broja: 10.254.239. Maska sadrzi i 224 u zadnjem oktetu, sto ostavlja opseg od 30 mogucih validnih adresa za svaki subnet koji predstavlja taj oktet. U ovom primeru, DHCP serveru je zadato da izda 11 od tih mogucih validnih adresa: 10 to 20.

DHCP serveru je isto tako zadato da izdaje dve default gateway adrese. Zatvorena viticasta zagrada predstavlja kraj informacija koje se izdaju do svakog klijenta.

Default konfiguracioni fajl se nastavlja sa nekoliko primera subnet deklaracija. Necu ih ovde opisati; primeticete i sami dok ih citate da primeri variraju u tome koje opcije trebaju biti izdate do klijenata na svakom deklarisanom subnet-u.

Primer Mreze

Sada kada smo pogledali default konfiguracioni fajl, hajde da konfigurisemo DHCP server za jednostavnu mrezu. Mrezu koju uzimamo za primer ukljucuje sledece:

  • Mrezni ID od 192.168.10.0 255.255.255.0
  • Ime domena mynetwork.com
  • 10 DHCP klijenata na jednom mreznom segmentu
  • Jedan default gateway sa adresom 192.168.10.1
  • Jedan DHCP server sa adresom 192.168.10.2
  • Dva DNS servera: 192.168.10.3 i 192.168.10.4

Primetite da default gateway, DHCP server, i dva DNS servera svaki imaju svoje staticki dodeljene adrese. Vazno je da je DHCP server konfigurisan da ne dodeljuje nijednu od tih adresa DHCP klijentima.

Sada cemo kreirati sledeci fajl:

# vi /usr/local/etc/dhcpd.conf
#my dhcp server configuration file
#first, the global options

option domain-name "mynetwork.com";
option domain-name-servers 192.168.10.3, 192.168.10.4;

default-lease-time 86400;
max-lease-time 86400;

authoritative;
ddns-update-style none;

#next, my one and only subnet

subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.5 192.168.10.20;
    option routers 192.168.10.1;
}

Primeticete da sam promenio vreme izdavanja lease-a u 86400 sekundi, ili 24 casa. Zadrzali smo mogucnosti default logovanja i onemogucili DDNS. Definisali smo i opseg adresa: 5-20. Ovo zaobilazi staticki dodeljene adrese (1-4) i ostavlja mesta za jos pet kompjutera, ako se ovaj mrezni segment ikada bude prosirivao. Kada pravite svoj konfiguracioni fajl, ne zaboravite da stavite ; na kraju svake linije i da svoju subnet deklaraciju zatvorite izmedju dve viticaste zagrade.

Pogledajmo sada dali konfiguracioni fajlovi rade. Prvo, startovacemo daemon i praticemo da nema error poruka:

# dhcpd
Internet Software Consortium DHCP Server V3.0.1rc11
Copyright 1995-2003 Internet Software Consortium.
All rights reserved.
For info, please visit http://http://www.isc.org/products/DHCP
Wrote 0 leases to leases file.

Listening on BPF/de0/00:80:c8:3a:b8:46/192.168.10.0/24
Sending on   BPF/de0/00:80:c8:3a:b8:46/192.168.10.0/24
Sending on   Socket/fallback/fallback-net

Dok smo ovde, preimenovacemo primer startup skripte i proveriti njene dozvole; na ovaj nacin, DHCP server ce se restartovati, ako ikada restartujem moj sistem:

# mv /usr/local/etc/rc.d/isc-dhcpd.sh.sample /usr/local/etc/rc.d/isc-dhcpd.sh

# ls -l /usr/local/etc/rc.d/isc-dhcpd.sh
-r-xr-xr-x  1 root  wheel  1662 Apr 13 10:32 /usr/local/etc/rc.d/isc-dhcpd.sh

Dobro. Skripta je izvrsna, i spremna je da uradi svoje. Ovu skriptu mozete i rucno pokrenuti ako joj zadate neku od sledecih opcija: start, stop, restart, ili status. Na primer:

# /usr/local/etc/rc.d/isc-dhcpd.sh status
root    1830  0.0  0.5  1784 1392  ??  Is  5:00PM  0:00.00 dhcpd

Opcija restart je veoma zgodna ako napravite neku promenu u konfiguracionom fajlu. DHCP je jedan od servisa koji nece promeniti svoju konfiguraciju ako joj jednostavno posaljete “signal one.” Umesto toga, morate da utvrdite PID procesa, posaljete signal 15 da ugasite proces, i onda da restartujete proces. Ako pokrenete gornju skriptu sa restart onda ce se sve ovo uraditi za vas.

Dobro, da vidimo sad dali DHCP server ustvari izdaje lease-ove. Pokrenucemo jednu od masina na mrezi koja je vec bila prekonfigurisana kao DHCP klijent. Kada se sistem podigne, pogledacemo njegov lease fajl:

# more /var/db/client.leases

lease {
  interface "ed0";
  fixed-address 192.168.10.20;
  option subnet-mask 255.255.255.0;
  option routers 192.168.10.1;
  option dhcp-lease-time 86400;
  option dhcp-message-type 5;
  option domain-name-servers 192.168.10.3,192.168.10.4;
  option dhcp-server-identifier 192.168.10.1;
  option domain-name "mynetwork.com";
  renew 1 2003/4/21 08:50:05;
  rebind 1 2003/4/21 18:38:59;
  expire 1 2003/4/21 21:38:59;
}

Super. Izgleda da je ovaj DHCP klijent uspesno primio lease od servera. Pogledacemo i leases fajl na DHCP serveru da vidimo koje je adrese izdao:

# more /var/db/dhcpd.leases

# All times in this file are in UTC (GMT), not your local timezone.   This is
# not a bug, so please don't ask about it.   There is no portable way to
# store leases in the local timezone, so please don't request this as a
# feature.   If this is inconvenient or confusing to you, we sincerely
# apologize.   Seriously, though - don't ask.
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-V3.0.1rc11

lease 192.168.10.20 {
  starts 0 2003/04/20 21:49:28;
  ends 1 2003/04/21 21:49:28;
  binding state active;
  next binding state free;
  hardware ethernet 00:50:ba:de:36:33;
}

Promena Log Fajla

Zadnju konfiguraciju koju cu demonstrirati danas je menjanje default log fajla. Prvo, promenicemo log liniju u /usr/local/etc/dhcpd.conf tako da izgleda ovako:

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

Sledece, kreiracemo prazan log fajl sa imenom dhcpd.log:

# touch /var/log/dhcpd.log

Onda, kreiracemo unos za ovaj log fajl u /etc/syslog.conf tako sto cemo dodati ovu liniju:

local7.*                   /var/log/dhcpd.log

Pogledajmo ovaj unos za trenutak. Podrazumevano, date su vam osam “mogucnosti” za logovanje na koriscenje za lokalne aplikacije; one se zovu local0 do local7. Mozete koristiti koju god lokalnu mogucnost zelite, dakle god je ne koristi neka druga aplikacija. Odlucili smo da koristimo local7, zato je i predstavljena svojim imenom u konfiguracionom fajlu DHCP servera.

Kada ste odabrali koju mogucnost cete koristiti, iza stavljate tacku i nivo logiranja. Izabrali smo nivo logiranja *, sto ce beleziti sve dogadjaje, bez obzira na njihov nivo. Onda smo odredili lokaciju log fajla u koji ce se dogadjaji upisivati.

Kada sacuvamo promene u /etc/syslog.conf, moramo poslati signal one do syslogd tako da ucita promene:

# killall -1 syslogd

Moramo da restartujemo i DHCP server da bi ucitao promene. Zapamtite, signal one to nece uradidi, tako da cemo koristiti restart opciju za startup skriptu:

# /usr/local/etc/rc.d/isc-dhcpd.sh restart

Konacno pogledacemo dali radi:

# more /var/log/dhcpd.log
Apr 20 19:32:22 fubar dhcpd: Internet Software Consortium DHCP Server V3.0.1rc11
Apr 20 19:32:22 fubar dhcpd: Copyright 1995-2003 Internet Software Consortium.
Apr 20 19:32:22 fubar dhcpd: All rights reserved.
Apr 20 19:32:22 fubar dhcpd: For info, please 
        visit http://http://www.isc.org/products/DHCP
Apr 20 19:32:22 fubar dhcpd: Wrote 1 leases to leases file. 
<snip>

U sledecem clanku, nastavicemo demonstraciju kompleksnijeg mreznog scenarija koji ukljucuje vise subnet-a i bootp relay agente.



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

 
konfigurisanje_dhcp_servera.txt · Last modified: 2007/07/17 10:29 (external edit)
 
Recent changes RSS feed Creative Commons License Valid XHTML 1.0 Valid CSS Driven by DokuWiki