Cisco IOS DHCP Server

Sirket ici networkumuzde host sayimiz arttikca yonetimi cok cok zor hale gelecektir. Ki birde bu hostlarin birbirleriyle haberlesebilmeleri icin IP planlamasini iyi yapmamiz gerekir. Ip planlamasi islemini tamamladiktan sonra bunlarin deployment asamasinda tum hostlara manuel olarak ip vermek imkansizdir. Cok ugrasip bunu halletsek bile, bir gun DNS server in ip sini degistirmeye karar verdigimizde tum hostlarda DNS serveri tekrar tanimlamak gerekir ki buda is yukunu cok arttiracaktir. Bunu yenmek icin network uzerinde herhangi bir sisteme DHCP yada Bootp protocolunu kullanarak ip dagitmasini saglariz. Su anda bir cok sistemde ornegin Windows, Linux, Sun da DHCP konfigurasyonu yapmak cok cok kolaydir. Lakin bu zaten surekli yorulan sistemlerimize daha da fazla yuk getirecektir. Ek olarak farkli Vlan larin bulundugu ortamlarda serverimizin interface i Trunk protocollerini desteklemedigi icin cok zorluk yasariz. O zaman zaten tum frame ler network cihazlarindan gectigine gore bir network altyapi cihazini DHCP server olarak ayarlamak, isi cok daha makul kilacaktir. Unutulmamalidir ki software tabanli kurdugumuz bir dhcp server sistem uzerindeki herhangi bir hata yada virus sebebiyle cokebilir ve sisteme cevap veremez. Fakat altyapi cihazlari bu gibi olaylardan etkilenmedigi icin network un uptime ini arttirir. Bu makalem de size Cisco IOS Dhcp Server mantigindan bahsedip konfigurasyonu yapacagim.


Cisco IOS DHCP ip yi nasil dagitir?
Ustteki sekle baktigimizda Host A obtain olarak ip almak icin ayarlanmis. Network karti UP hale geldiginde ortama broadcast araciligiyla bir dhcpdiscover paketi yollayacaktir. Bu paket network uzerindeki tum ilgili ilgisiz null lara ulasir. Bu paketi bizim DHCP serverimiz da alir. Ve client a unicast yonetimiyle bir DHCPOFFER paketi yollar ki bu sadece bizim hostumuza ulasir. Bu paketin iceriginde clienta onerilen ip ve bunun hangi dhcp serverdan yollandigi bulunmaktadir. Cisco IOS un MS DHCP den burada bir farki soz konusudur. MS dhcp serverlar ortama dhcpoffer paketini broadcastle yollar ki bu herkese ulastigi icin network de fazladan yuk yaratacaktir. Fakat Cisco IOS un unicast yollamasi ile paket sadece istemciye yollanir ve network uzerinde fazladan yuk dusurulmus olur. Bunu alan host a onerilen ip kullanmak istedigine dair broadcast araciligiyla bir DHCPREQUEST paketi yollar. Bunu alan DHCP miz tekrar unicast ile istenen ip nin kullanilabilecegine dair bir DHCPACK paketi yollar. Ve client tanimlanan surede ipyi kiralayarak kullanmaya baslar.


Hangi Sasiler Destekler?
• Catalyst 5000 family switches with an installed Route Switch Module
• Catalyst 6000 family switches with an installed MultiLayer Switch Feature Card
• Catalyst 8500 series
• Cisco 800 series
• Cisco 1000 series
• Cisco 1400 series
• Cisco 1600 series
• Cisco 1700 series (support for the Cisco 1700 series was added in Cisco IOS Release 12.0[2]T)
• Cisco 2500 series
• Cisco 2600 series
• Cisco 3600 series
• Cisco 3800 series
• Cisco MC3810 series
• Cisco 4000 series
• Cisco AS5100 access server
• Cisco AS5200 universal access server
• Cisco AS5300 universal access server
• Cisco 7000 series
• Cisco 7100 series
• Cisco 7200 series
• Cisco MGX 8800 with an installed Route Processor Module
• Cisco 12000 series
• Cisco uBR900 series
• Cisco uBR7200 series


Konfigurasyon ve Parametreleri
Cisco IOS larda default durumda DHCP server calisir durumda dir. Herhangi bir nedenle daha onceden dhcp kapatildiysa `Router(config)# service dhcp` komutunu kosturarak dhcp server i aktif hale getirmek gerekir. Komutun basina NO parametresini koyarak ihtiyac durumunda kapatabiliriz.

`Router(config)#no service dhcp`

Pool olusturmak

Router(config)#ip dhcp pool poolismi

Bu parametreyi global configuration mode uzerinde calistirirsak clientlarimiza dagitacagimiz pool u yaratmis olacagiz. Fakat daha onceden nasil bir ip block u dagitacagimiza karar vermemiz gerekir. Ek olarak Pool ismi ile Vlan lara ayni ismi verirsek direk olarak o vlan den gelen istekleri bu pool uzerinden dagitmis oluruz.

Bu komutu kosturdugumuzda komut satirimiz `Router(Config-dhcp)# ` modu icerisine dusecektir ki artik bu pool ile ilgili yapacagimiz tum ayarlar buradan olacaktir.

`(config-dhcp)#` modu icerisine dustukten sonra ;

`network ip_araligi mask subnet_maski` komutunu kosturarak bu pool icerisinde dagitacagimiz ip araligini belirlemis oluruz.

Orn: (config-dhcp)#network 10.2.0.0 mask 255.255.0.0

Exclution
Cogu network icerisinde ipleri hostlara otomatik olarak dagitmak istesek de serverlarimizin ipleri static olmalidir. Ornegin bir DNS server in yada Domain Controller in ipsi otomatik tanimlanamaz. Fakat hem clientlar hemde serverlar ayni ip subnetinde diye dusunursek bizim hazirladigimiz pool icerisinde serverlarimizin ipleri de olacaktir. Ki clientlar ip isteginde bulunduklarinda dhcp server poolu icerisindeki ipleri sirayla dagittigindan dolayi serverimizin ipsini bir client a da tahsis edebilir. Boyle bir durumda server ile client ayni ipye sahip olacagi icin bir conflict durumu yasanacaktir. Bu sorunu cozmek amaciyla pool umuz icerisinde bir block ip yi dagitmamasini belirtmemiz gerekmektedir.

Router(config)#ip dhcp excluded-address baslangic_ipsi bitis_ipsi

Ornegin 10.2.0.0/16 networkunden 10.2.0.1 ile 10.2.0.100 arasindaki ipleri dagitmamak istiyorsak;

Router(config)#ip dhcp excluded-address 10.2.0.1 10.2.0.100

Komutunu kosturmaliyiz


Domain Name
IP dagitacagimiz clientlarimiza hangi domaine ait olduklarini ve hangi domain suffix i kullanacaklarini bildirmek gerekir. Ki dhcp serverimiz bunuda basari ile yapabilir.

(config-dhcp)#domain-name sistemuzmani.com

DNS server
Clientlarimiza hangi suffix i kullanacaklarini sagladiktan sonra tum hostname sorgularini gonderebilecekleri ve kendilerini register edebilecekleri bir veya birden fazla DNS server belirtmek gerekir.

(config-dhcp)#dns-server 10.2.0.10

Birden fazla dns server icin sunucularin iplerini arka arkaya yazmak yeterli olacaktir.

(config-dhcp)#dns-server 10.2.0.10 10.2.0.11 10.2.0.12 212.57.1.17 212.57.1.18 .....

NetBIOS server
Network icerisinde down-level clientlar veya legacy servisler calisiyorsa ki Enterprise networkler icin tasarlanmis olan Windows Server 2003 bile cogu servisinde netbios isim cozumlemesini kullanir. Network de NetBios name broadcastlerini azaltmak icin bizimde bir netbios server kullanmamiz gerekir ki ip nin yaninda netbios server (orn: MS WINS) i da belirtmeliyiz.

Router(config-dhcp)#netbios-name-server server_ipsi

Orn: Router(config-dhcp)#netbios-name-server 10.2.0.10

NetBios serveri tanimladiktan sonra clientlarimiza NetBios Node Type ida belirlemek gerekir.
Herhangi bir client kendisine wins server tanimlanmadigi surece netbios name i cozmek icin ilk olarak netbios name cache e bakacaktir. Burada bulamazsa ismi cozmek icin local broadcast atacaktir. İsmi hala cozemezse lmhosts file a bakar. Bunu yapmasinin nedeni netbios node type in default durumda B modunda olmasidir. Eger ki client a static olarak NetBios Name Server tanimlarsak bu zaman da H mode a dusecektir ki bu client NetBios Name cozerken ilk once gidip server a soracak eger ki response alamazsa o zaman broadcast atacaktir. Cok extreme durumlarda ise M mode a dusurulur ki bu ilk once broadcast yapar ismi cozemezse server a sorar.P mode da ise sadece wins server a sorar kesinlikle broadcast atmaz.

Mode lari atayabilmek icin;

Router(config-dhcp)# netbios-node-type h-node

Default Gateway
Clientlar kendi subnetleri haricindeki hostlarla konusmak isteyebilir ki bizde clientlarimiza bir default gateway atamaliyiz. Bu genelde bir proxy server yada bir router olacaktir.

Router(config-dhcp)#default-router routerin_ipsi

Orn: Router(config-dhcp)#default-router 10.2.0.100


Manuel Bindings (reservation)
Clientlarimiz normal sartlar altinda ip istediklerinde dhcp server pool icerisinden herhangi bir ipyi cekerek clienta sunar. Fakat bir client a surekli ayni ip yi atamak istiyorsak o zaman dhcp bindings i kullanabiliriz. Bu islem bir Microsoft client icin unique-identifier i ile yapilabilir ki bu bizim client imizin MAC (media access control) adresidir. Diyelim ki client imizin MAC adresi b7.0813.8811.66 ise (ms da komut satirindan ipconfig /all kosturursak ogrenebiliriz).

Konfigurasyonu icin yeni bir pool olustururuz :

Router(config)#ip dhcp pool muhasebe01
Router(config-dhcp)#host 10.2.1.254 mask 255.255.0.0
Router(config-dhcp)#client-identifier 01b7.0813.8811.66

Bu konfigurasyonda Muhasebe01 isimli ve MAC adresi b7.0813.8811.66 olan client a surekli olarak 10.2.1.254 ipsini atayacaktir. Fakat dikkat edilirse MAC adresin basinda 01 degeri belirtilmis bu network kartinin Ethernet icin tasarlandigini tanimlar.

Reservation da yaptiginiz tum konfigurasyon daha onceden olusturdugunuz pool ile eslestirilecektir. Hosta atadigimiz 10.2.1.254/16 ipsi daha onceki Sistemuzmani poolunda bulunmaktadir. Ki bu adres eslesme ile tum diger ayarlari pooldan cekecektir. Ornegin pool icerisinde 10.2.0.10 adresini DNS server olarak atamistik ki artik bu host ta ozel olarak DNS server tanimlamasak da bu adresi alacaktir.


Conflict Onleme
Dhcp server da her ne kadar exclution belirtsekde bazi hostlara tanimlamadigimiz araliktan static olarak ip verilmis olabilir. Dhcp server a ip yi vermeden once ortama Echo (ping) paketleri yollayarak ortamda su anda dagitilacak ip varmi yok mu diye kontrol eder. Burada ip yi dagitmadan kac kez pingleyecegini belirtebiliriz.

Router(config)# ip dhcp ping packets paket_sayisi

Orn : 4 kez check etmesi icin:

Router(config)# ip dhcp ping packets 4

Komutu kosturulur.

Fakat ping paketini yolladiktan sonra hosttan ne kadar surede cevap bekleyecegini yani Time-out suresini belirleyebiliriz. Ki bunun default degeri 500 milisaniyedir. Burada degeri manuel olarak belirlemek istiyorsak milisaniye cinsinden belirtiriz. Ornek olarak 10 saniye icin 10000 degerini girmeliyiz.

Router(config)# ip dhcp ping timeout 10000



Lease Time
Clientlarimiza dhcp serverdan ip verdigimiz zaman bu ip yi client belirli bir sureligine kiralamis olur. Ki Cisco DHCP ip yi clientlara default ta 1 gunlugune verir. Bu sureyi uzatmak yada kisaltmak icin Lease parametresini kullaniriz.

Router(config-dhcp)#lease gun saat dakika

Ornegin bir saatligine dagitmak istiyorsak

Router(config-dhcp)#lease 0 1 olarak konfigure edilmeli
Yada 50 dakikaligina dagitmak icin

Router(config-dhcp)#lease 0 0 50

Komutu kosturulmalidir.


Troubleshooting Komutlari Ve Parametreleri

Router> show ip dhcp binding reserve_edilmis_adres

komutu ile daha onceden daha onceden yaptigimiz rezervasyon ile ilgili detayli bilgi verir.

Router> show ip dhcp conflict

Komutu ile dhcp de cakisan ip adreslerini gorebiliriz.

Router> show ip dhcp server statistics

Komutu ile dhcp server hakkinda istatistiksel bilgiler alabiliriz.

Router#debug ip dhcp server events

Komutu ile hangi clientlarin o anda hangi ip adreslerini aldigini anlik olarak gorebliriz.