# DHCP(Dynamic Host Configuration Protocol)

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FM3Ki0m0n4Nj9xsojoA9g%2Fimage.png?alt=media\&token=f9d9be2b-1380-41dc-b732-02d99ba852d5)

Dhcp; Ipv4 adreslerini, Subnet Maskelerini Default Gateway ve Diğer Ipv4 ağ parametrelerini atanmasını otomatize eder.

Buna dinamik adresleme denir.

Dinamik adreslemenin alternatifi statik adreslemedir. Statik adresleme, hostlara IP bilgilerinin manuel olarak girilmesi olarak adlandırılır.

Bir Client ağa bağlandığında Dhcp sunucusu ile iletişim kurulur ve bir adres istenir. Dhcp sunucusu dhcp pool (havuz ) adı verilen yapılandırılmış adres aralığından bir adres seçer ve bunu Client’a atar. Dhcp sunucusu bu ip adreslerinin benzersiz olmasını sağlar.

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FocMRoX5wgWwDHvlhg0vC%2Fimage.png?alt=media\&token=b1bc6de2-3e6e-46e4-b12c-7ee7d79c5651)

Yani aynı ip adresin aynı anda iki farklı ağ cihazını tanımaz. Daha büyük ağlarda kullanıcı popülasyonun sık sık değiştiği yerlerde adres ataması için  dhcp tercih edilir.

Yeni kullanıcılar gelebilir bağlantılara ihtiyaç duyulabilir. Her bağlantı için statik adresleme kullanmak yerine ipv4 adreslerinin dhcp kullanılarak otomatik olarak atanması daha çok tercih edilir ve daha verimlidir.

Dhcp ip adreslerini  Lease Period adı verilen yapılandırılabilir süre için tahsis edilebilir. Lease Period önemli bir dhcp ayarıdır. Lease Period sona erdiğinde veya dhcp sunucusu bir dhcprelease iletisi aldığında adres dhcp havuzuna geri döner.\
Kullanıcılar konumdan konuma serbetçe hareket edebilir.

Dhcp aracılığı ile ağ bağlantılarını kolayca yeniden kurabilir.

Dhcp daha çok hostlar (client) için, statik yapılandırma ise network cihazları için tercih edilir.

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FuBo59hrOuIo5ulB5ZNXi%2Fimage.png?alt=media\&token=bc1d48c4-0bd6-4ba2-8f0d-7c2625065ba9)

## **DHCP Kavramları**

**Scope (Kapsam)**\
Bir ağ üzerinde istemcilere dağıtılmak üzere oluşturulan ip havuzudur.Bir kapsam alanı dhcp hizmeti sunan tek bir fiziksel alt ağı tanımlar ve istemcilere gerekli yapılandırma ayarları ile ip adreslerinin gönderilmesinde sunucuya başlıca yolu sağlar. Bir ağ üzerinde tanımlı alt ağlar fiziksel alt yapıya göre belirlenir ve yönetim kolaylığı sağlamak amacıyla gruplandırılır.<br>

![Scope](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FTLdLL1KmLndI3R4h93ps%2Fimage.png?alt=media\&token=81a6b3f1-a4fd-4cac-bf6a-6ebb11ea5156)

**Üstkapsam (Super Scope)**\
Aynı fiziksel alt ağda bulunan birden çok kapsamın yönetimsel olarak gruplandırma biçimidir. Birlikte etkinleştirebileceği kapsamların listesini içerir.<br>

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2Fca3jG6DUO507AvY25rNY%2Fimage.png?alt=media\&token=ac7f0564-d8a8-474d-b492-385efa42812b)

**Dışlama Aralığı (Exclusion Range)**

Kapsam içerisindeki istemcilere sunulmamak üzere ayrılmış sınırlı ip adresleridir.<br>

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FZRZH0BM0UJxSICYuSKiP%2Fimage.png?alt=media\&token=b3d20ecd-4956-4e31-a7f1-7ceead42618f)

**Adres Havuzu (Address Range)**\
Tanımlanmış bir kapsam üzerinde dışlama aralığına ait ip adreslerinin çıkarılmasıyla oluşan kullanılabilir ip adresleri havuzudur. İstemcilere dinamik olarak ip ataması bu havuz üzerinden yapılmaktadır.

**Lease (Kira)**\
İstemci bilgisayar için atanan ip adresinin dhcp sunucusu tarafından belirlenen kullanım süresidir. Bu süre belirlendiğinde kira etkin duruma getirilmiş olur ve kira süresi dolmadan bu sürenin yenilenmesi gerekir. Yenilenmezse ya da silinirse kira etkinliği sona erer.<br>

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FMOnXq2qppmVc3iA2IcvE%2Fimage.png?alt=media\&token=c05be406-7b39-48c8-84e3-a488af46066c)

**Ayırma (Reservation)**\
Bir alt ağ içerisindeki bir makinanın her zaman aynı ip adresini kullanmasını sağlamak amacıyla kalıcı bir adres kira ataması oluşturmasıdır.<br>

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FT6t6g6lC5ggsVszgUW0b%2Fimage.png?alt=media\&token=8595da21-dc4b-4ef0-87a0-3f34467749c7)

**Seçenek türleri (Scope Options)**\
Seçenek türleri her kapsam için etkinleştirilmesi gereken DNS,WINS ,Default Gateway gibi ortak kullanılan bazı seçekler için atanabilen istemci yapılandırma ayarlarıdır.

## DNS İşleyişi

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FgAG3glJgHCpZIWVVUM81%2Fimage.png?alt=media\&token=f5e51971-adf9-4a54-a0f3-571f33fd0721)

Offer yani teklif mesajı atanacak ipv4 adresini, alt ağ maskesini, dns sunucusunun ipv4 adresini ve default gateway adresini içerir.

Buna ek olarak Lease süresi de bu pakete eklenir.

Yerel ağda birden fazla dhcp sunucusu varsa istemci birden çok dhcp offer iletisi alabilir. Bu nedenle istemci aralarında seçim yapar ve Kabul ettiği sunucuyu ve kiralama teklifini tanımlayan bir dhcp request (istek) iletisini gönderir.

İstemci ayrıca daha önce sunucu tarafından atanmış bir adres de isteyebilir. İstemci tarafından istenen veya sunucu tarafından sunulan ipv4 adresinin hala kullanılabilir olduğunu varsayılarak sunucu istemciye lease işleminin sonlandırıldığını onaylayan bir dhcp onay (ACK) döndürür.

Teklif artık geçerli değilse seçilen sunucu dhcp negative bilgilendirme iletisi ile yanıt verir.

Bu bildirim de dhcp nack olarak tanımlanır. Bir dhcp nack mesajı döndürülürse seçim işlemi (disover) ile yeniden başlar\
Dhcp 67 ve 68.portları kullanır<br>

### **DHCP RFC bilgileri**

İlk olarak RFC 1531’de tanımlanmıştır.\
RFC 1541’de iyileştirmelerle tekrar düzenlenmiştir.\
RFC 2131’de ise DHCPinform tipi eklenmiştir.\
Version 6 ise (DHCPv6) ilk kez RFC 3315’de bahseldilmiştir.\
İşleyiş Kısaca DORA diye isimlendirilir. (Discovery,Offer,Request, Ack)

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2Fab2iVfuxSUMJJfTMqRY2%2Fimage.png?alt=media\&token=9cecf60d-ee7f-4640-9862-26e3bbea7933)

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FH0T0haY2V6PmLXoVBpBH%2Fimage.png?alt=media\&token=fe43a937-3b20-466c-aa6f-5f12fdca9fdb)

Wiresharkta dora süreçlerini görmekteyiz<br>

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FQuvqdbDYvr2vsqECzfpp%2Fimage.png?alt=media\&token=68689d59-3a70-4726-9405-92c7e68aee22)

Discover paketi; İlk kez ip alacak bir cihazın dhcp sunucusunu keşfetmesi amacıyla gönderdiği pakettir.  255.255.255.255 broadcast adresine gönderilir (hedef ip adres –bilinmiyor) ağ içerisindeki bütün cihazlar bu paketi alır.

Hedef Mac adresi (bilinmiyor): FF:FF:FF:FF:FF:FF (broadcast)

Kaynak İp adresi (bilinmiyor):0.0.0.0

Kaynak Mac adresi : Ip almak isteyen cihazın mac adresi

DHCP Offer

Dhcp discover paketini yakalayan sunucu offer paketi ile cevap verir. Offer paketinin amacı  ağdaki bir dhcp sunucusunun bulunduğunu belirtmek ve istemciye boşta bulunan bir ip ataması için teklif göndermektir.

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FFWG4n2ZswVVhqeh4lJM0%2Fimage.png?alt=media\&token=52df6f71-8953-491c-aef7-8de128281b70)

Offer paketi içerisinde istemcinin kullanabileceği bir ip adresi bulunduğu ağın ağ geçidi adresi, bu ip adresinin ne kadar sğre kullanabileceği gibi farklı bilgiler yer almaktadır

Offer paketinde önemli bir nokta transaction id’dir offer paketindeki id ile discover paketindeki id numarası aynı olmalıdır ki istemci ile sunucu arasındaki iletişimde kopukluk olmadığından emin olunur.

Dhcp Request ise\
Istemci offer paketi ile gelen teklifi Kabul ettiğini belirtmek için request paketini yollar. Request paketi de broadcast yollanır çünkü istemci henüz ip adresinin sahibi değildir.

Dhcp acknowledge ise

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FyxsFlzoDnQYsprSRX4F9%2Fimage.png?alt=media\&token=881f454c-a3fb-4874-aaa5-41c6d2b945b5)

Request paketine karşılık olarak sunucu artık o ip adresini istemciye kiralar ve bunu bildirmek için de acknowledge paketini gönderir. Aynı discover ve offer paketlerinde olduğu gibi request ve acknowledge paketlerinin de transaction id leri aynıdır.

Acknowledge paketini alan istemci artık bu ip adresini kullanabileceğini bilir ve paketlerini 0.0.0.0 kaynak adresi ile göndermeyi bırakır.

&#x20;

#### **Sık Kullanılan DHCP Optionları**

**Option 3 (Router Option)**  ==> Varsayılan ağ geçidini belirtir.,

**Option 6(DNS Server Option )** ==> Dns sunucularını belirtmek için kullanılır.\
**Option 51 (IP Address Lease Option)** ==>IP adresin ne kadar süre için kiralandığını belirtir.

**Option 53 (Dhcp Message Type Option)** ==> Offer,Request gibi dhcp mesaj türlerini belirtir.\
**Option 55(Parameter Request  List Option)** ==> Dhcp istemcisinin option listesini istemek için kullandığı optiondır

Cevabı istenen optionların karşılığı da yine option içinde gönderilir.

**Option 66 (TFTP Server Name Option)**  ==> TFTP sunucunun adresinin domain name olarak belirtmek için kullanılır.

**Option 67 (Boot File Name Option)** ==> TFTP sunucusundan istenilecek boot dosyaları belirtir.\
Option 82 (Dhcp Relay Agent) èDhcp relay agentlar tarafından kendisine dhcp request gelen kablolu şebekelerin bağlı olduğu port bilgisi ya da kablosuz şebekelerde AP mac adres bilgisini paket içinde ayrılmış özel alanlara eklendiği dhcp option’dır.

Abone lokasyonu belirlemeye ve lokasyon bazlı servisler sunmasına yardımcı olur.

**Option 150 (TFTP Server IP Addres Option)**  ==> TFTP sunucusnun adresini ip adresi olarak belirtmek için kullanılır.

## DHCP Relay

Dhcp paketleri broadcast olarak gönderildiği için dhcp sunucusunun farklı bir yerel ağda bulunduğu senaryolarda ağ geçidi üzerinde Relay ayarı yapılmazsa , istemciler hiçbir zaman sunucuya ulaşamayacaktır.

![
Yukarda Dhcp relay agent bulunmayan ağı görmektesiniz](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2F28HC4H096g6zdjVfTJdW%2Fimage.png?alt=media\&token=e2cc4ddb-1dff-4615-8c3c-d7c0d31e5ffb)

![Dhcp relay agent bulunan ağ ise şu şekilde](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FI3bQrykWBL60uG1WkMo9%2Fimage.png?alt=media\&token=8b40fea1-efc2-4c77-864a-475e47d8c6bc)

Dhcp relay agent bulunmayan ağda dhcp sunucusu herhangi bir dhcp mesajını alamaz. Broadcast paketleri router tarafından düşürülür.

Ve dhcp sunucusu herhangi bir dhcp mesajını alamaz.

Dhcp relay agent bulunan ağda ise dhcp relay agent broadcast dhcp mesajlarını unicast’te çevirir ve dhcp sunucusuna yönlendirir.

Böylelikle dhcp mesajları dhcp relay agent tarafından dhcp sunucusuna iletilir. Relay agent ayarlamak için aşağıdaki komutlar girilir.<br>

```
enable
configure terminal
ip dhcp relay 

```

Burada yaptığımız işlemi basitçe dhcp istemcilerin bulunduğu ağdaki interfacemize gelen dhcp isteklerinin hangi adrese yönlendireceğini söylemektir.

Dhcp sunucusu da bu gelen isteğin bir relay agent’tan geldiğini bilir ve cevabı tekrar ona gönderir.

Relay agent ve sunucu arasındaki iletişim unicasttir.

Relay agent paketleri şekildeki gibidir.

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FvOHBqXqD7CTcoikM0WAw%2Fimage.png?alt=media\&token=5afd5d40-646b-4656-b0e9-336d42fd2f9f)

Relay agent yani buradaki Router cihaz istemci tarafından gelen broadcast discover ve Request paketlerini alır ve unicast olarak Dhcp sunucusna iletir. Bu durumda discover ve request paketlerini aldığı interfacesinin ip adres bilgisini ,relay işlemi yapılacak olan paketin alanına ekler.

Aşağıda örnek bir dhcp discover paket içeriği bulunmaktadır

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2F7LvwyhuFdhh5oLHpn4S8%2Fimage.png?alt=media\&token=d8fc9d15-e465-4711-91a5-ea1ecc9f1663)

Dhcp paketlerinin Relay edilmesi gerektiğinde buradaki gateway ip adres bölümü kullanılıyor.Relay buraya dhcp istemcisinin bulunduğu ağdaki ip adresini ekliyor.\
Relay yapılmadığında bu alan kullanılamıyor çünkü dhcp istemciye varsayılan ağ bilgisini Option 3 ile gönderiyor.

Bu alan Relay için ayrılmış bir alandır.

Bunun haricinde Relay edilen bir pakette yapılan tek değişiklik OSI modeline uygun bir biçimde Layer2 ve Layer 3 bilgilerinin değiştirilmesidir.

Örnek kaynak mac adresi istemci arayüzünün adresi iken Normalde Landan çıkan her paket gibi yönlendiricinin diğer ağdaki arayüzünü MAC adresi ile değiştiriyor veya brodcast bir paket olduğu için 255.255.255.255.olan hedef ip adresi sunucunun hedef ip adresi ile değiştiriliyor<br>

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FTMwZC7n2sAV4kfmWo5qz%2Fimage.png?alt=media\&token=d587e560-f5c9-458b-af4b-cfe4a0978223)

Gateway ip adres bilgisi olarak Relay agent ipsi girilir.

**DHCP Snooping:**   DHCP Starvation (açlık ) atağına karşı , sahte dhcp sunucularına karşı alınması gereken bir önlemdir.

### DHCP Atakları

**Dhcp Starvation Atak**

<br>

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FLtceNbIFgjcyquJKmgl4%2Fimage.png?alt=media\&token=aef29270-999c-4287-9774-c3fd68ada0c3)

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FiweJ0T8qcHZxDhJB8rUf%2Fimage.png?alt=media\&token=d167b69c-0b7c-4736-baa6-1757bc2aad02)

Dhcp sunucus Destination port olarak 67 Source olarak 68. portu kullanır.&#x20;

Bu topolojide PC ilk olarak Discovery paketi gönderdi. Ona karşılık Dhcp sunucu ise bir tane Ip adresi Offer(sundu) etti. PC ise evet ip adresini istiyorum diye Request mesajı gönderir ve DHCP sunucuda buna karşılık ACK mesajı PCye gelir.&#x20;

PC Ip adresini aldıktan sonra kendi ipsine yönelik bir ARP sorgusu gerçekleşir. 192.168.1.2 ip adresini aldıktan sonra. Hey millet 1.2 kimde diye bir mesaj gönderecek. Bu mesajın amacı ağda bu Ip'ye başka birisi aldıysa eğer. Arp mesajına cevap gelecektir.  Onu tespit edebilme adına bir çakışma algılandıyı tespit edebilme adına bir mesaj.

Salgırgan burada ne yapıyor; Mac adresini değiştirip yine yapıyor bu işlemi. Sürekli değiştiriyor. Artık IP açlığından benim sunucumdaki bütün IP adreslerini tüketiyor.&#x20;

Bu atağa dhcp starvation atak adı verilyor.&#x20;

**Dhcp Spoofing Atak**&#x20;

Bu saldırı türü biliçsiz de yapılabilen bir saldırı türü olabilir. Kötü niyetli de olabilir. Örnek olarak bir tane kullanıcı evden getirdiği bir adsl modemi switche bağlarsa. ADSL modem üzerinde defaultta, Dhcp açıktır. &#x20;

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FDL9ujAMMPMqlsBGBntm7%2Fimage.png?alt=media\&token=54b52f96-ca38-43c6-919c-ef4469955b53)

PClerimiz artık açılıp kapatıldığında ip talep ederse bağladığımız modemden ip adresi alabilir. Daha yakın olduğu için. Sunucularımız daha güvenli bir bölgededir. Daha uzaktadır. Birkaç cihaz geçmiş olabilirim. O yüzden saldırganın verdiği Ip'yi ilk alabilir.&#x20;

Ne yapmamız gerekiyor. Switch üzerinde Dhcp snooping açmak gerekiyor.

`SW1(config)#ip dhcp snooping`\
`SW1(config)#ip dhcp snooping vlan 1`

Ortamda vlan1 olduğu için vlan 1 için aktif ettik.&#x20;

![](https://2292156749-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDfDBccroFkvJ25uVFqYX%2Fuploads%2FXIGKobrDKBVfAwKbi35C%2Fimage.png?alt=media\&token=8b28dbac-5d0a-4a52-9a45-b5c1122ae922)

Bu komutu kullandığımız anda dhcp snooping yaptığımız zaman Bu switch üzerinde tüm portlar güvensiz port olur. Untrusted port olur. Bu şu demek hiçbir porttan dhcp offer ve dhcp ack geçmezç. Yani sunuculardan gelen mesajlar geçmez.

Switch üzerinde fa0/3 portundan dhcp mesajlarının geçmesini istiyorum.

`SW1(config)#int fa0/3`

`SW1(config-if)#ip dhcp snooping trust`&#x20;

Bu porta güveniyorum dedim.

Sahte Dhcp sunucusunun önüne bu şekilde geçebiliyorum.&#x20;

Starvation Atağın önüne geçmek istersek ise Access portlara Limit rate vererek 1 sn'de en fazla kaç mesaj gidebileceğini sınırlandırabiliyorum. Discvovery mesaj limiti ve Artık  sn de 10 tane mesaj gönderebilecek

`SW1(config)#int range fa0/1-10`\
`SW1(config-if-range)#ip dhcp snooping limit rate 10`
