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.