DHCP nedir ve nasıl çalışır?

Bu flood’da internetin perde arkası kahramanlarından DHCP’nin (Dynamic Host Configuration Protocol) hangi amaçla kullanıldığını ve nasıl çalıştığını anlatacağım.

Adından da anlaşılacağı üzere DHCP, bir ağa bağlanmak isteyen cihazların dinamik konfigürasyonlarının yapılmasını sağlar. Cihazın (bilgisayar, telefon, vb) bağlandığı ağ üzerinde yolunu bulabilmesi için gerekli olan hemen bütün bilgiler DHCP tarafından sağlanır.

DHCP genellikle cihazın bağlandığı ağdan dinamik olarak bir IP adresi almasını sağlamakla bilinse de aslında yaptığı konfigürasyon çok daha geniştir. DHCP sayesinde ağa bağlanan cihazlara, DNS sunucu adresi, Default Gateway ve varsa proxy sunucu ayarları da gönderilir.

Örneğin, bir ev ağındaki Modem / Router, sunduğu kablosuz ağa dahil olan cihazlara DHCP yardımıyla farklı birer IP adresi atar ve ağda IP adreslerinin çakışma yaşamasını engeller. Modem / Router, DNS sunucu adresi olarak cihazlara genellikle kendi adresini gönderir. Modem / Router yine genellikle, Default Gateway olarak da cihazlara kendi adresini gönderir, bu sayede konfigürasyonu yapılan cihaz ev ağı dışındaki bir ağda bulunan sunucuya (örn: milliyet) ulaşması gerektiğinde ilgili paketi Modem / Router'a ulaştırması gerektiğini anlar.

Görüleceği gibi DHCP bir cihazın PnP - Plug and Play methodu ile hiçbir konfigürasyon gerektirmeden yabancı bir ağa dahil olmasını, hem dahil olduğu ağ içerisindeki cihazlarla hem de o ağın dışındaki cihazlarla IP üzerinden konuşabilmesini sağlayan sihirli bir protokoldür.

DHCP istemci/sunucu mimarisiyle çalışır. İstemci/sunucu arasındaki paketler UDP protokolü ile taşınır. İstemcinin ağa ilk dahil olduğu senaryoda, istemci bir DHCP Discovery paketi hazırlayarak ağa gönderir. Bu mesajın amacı ağdaki DHCP sunucuyu bulmaktır.

DHCP Discovery paketini alan DHCP sunucu, paketi gönderen bilgisayara uygun bir IP adresi ile birlikte bu IP adresini ne kadar süre kullanabileceğini (Lease Time) içeren bir DHCP Offer paketi gönderir.

Üçüncü adımda istemci, -genellikle DHCP Offer paketinde belirtilen IP adresi ve Lease Time'ı kabul ederek- DHCP sunucuya isteği IP adresi ve Lease Time'ı içeren DHCP Request paketini gönderir.

Son adımda ise sunucu istemciye -eğer uygunsa- DHCP Request paketinde bulunan IP adresini tahsis eder. Tahsis edilen IP adresi eğer istemci tarafından Lease Time sonunda yenilenmezse başka bir cihaza tahsis edilebilir. Bu sebeple istemci, IP'nin Lease Time süresinin yarısı dolduğunda DHCP sunucu ile iletişime geçerek kullandığı IP adresinin yenilenmesini ister. Çok özel bir durum yoksa DHCP sunucu isteği kabul ederek Lease Time'ı uzatır. Bu süreç istemci tarafından tetiklenerek devam eder ve alınan ilk IP korunmuş olur.

Bazı durumlarda ağdaki bir cihazın (örn: web sunucu) sürekli aynı IP adresini almasını isteyebiliriz. Bu durumda DHCP sunucu üzerinde ilgili cihazın MAC adresi ile IP adresi eşleştirilir, böylece sunucudan gönderilen DHCP Offer paketlerinde seçilen IP adresi bulunur.

Linux ve macOS üzerinde DHCP protokolünü gözlemlemek ve deneysel amaçlarla kullanmak için sonraki flood'ların birinde detaylı olarak inceleyeceğimiz dnsmasq projesi çok uygundur.

Son olarak bir bilgisayar, diski yerine ağdaki bir imajdan (PXE - Preboot eXecution Environment)'ye göre boot edilmek istendiğinde, DHCP yardımıyla ağ parametreleri ile birlikte ağda bulunan, boot edilecek imajı sunan TFTP sunucunun adresi bulunur ve boot işlemi başlar.