Bu makalede8 bölüm
- Teknoloji
- DHCPv4, RFC 2131, RFC 3046 (Option 82), DHCP snooping, DAI, IP Source Guard, Cisco IOS
- Konu
- Switch tarafında DHCP relay ve snooping yapılandırması
- Seviye
- Orta
- Ön koşullar
- VLAN ve SVI kavramları
- DHCP sunucu ve kapsam bilgisi
- Cisco IOS temel komutları
Pazartesi sabahı bir kat “IP alamıyoruz” diye arar; ya da daha kötüsü, adres alırlar ama yanlış ağdan: birinin masasına taktığı ev tipi modem 192.168.1.x dağıtmaya başlamıştır. Kampüs ağında DHCP’nin iki ayrı problemi vardır. Farklı VLAN’lardaki istemcilerin istekleri merkezi sunucuya nasıl ulaşacak? İzinsiz takılan bir DHCP sunucusu (ev tipi modem, yanlış yapılandırılmış sanal makine) istemcilere adres dağıtmaktan nasıl engellenecek? Birincinin cevabı DHCP relay, ikincisinin DHCP snooping’dir. Aşağıda ikisini switch tarafından, birbirleriyle etkileşimleri ve Cisco IOS örnekleriyle ele alıyoruz.
DHCP mesaj akışı ve VLAN sınırı
DHCPv4 (RFC 2131) dört temel mesajla çalışır: DISCOVER, OFFER, REQUEST ve ACK. Adresi olmayan istemci DISCOVER’ı kaynak 0.0.0.0, hedef 255.255.255.255 ile, UDP 68’den UDP 67’ye yayın (broadcast) olarak gönderir. Yayın yönlendiriciden geçmez. Yani VLAN’ın sınırı aynı zamanda DHCP isteğinin sınırıdır; sunucu aynı VLAN’da değilse isteği bir aracının taşıması gerekir.
Her VLAN’a ayrı DHCP sunucusu koymak küçük ortamda işler; ama kapsam yönetimini dağıtır, kayıtları parçalar, yedekliliği zorlaştırır. Kurumsal ağlarda yaygın model, veri merkezinde yedekli bir DHCP hizmeti ve her kullanıcı VLAN’ının varsayılan ağ geçidinde (SVI) relay yapılandırmasıdır. Sunucu tarafındaki yedeklilik için sistem sitemizdeki Windows Server DHCP failover yapılandırması yazısı bu yazının diğer yarısıdır.
DHCP relay: ip helper-address ve giaddr
Relay ajanı, istemcinin VLAN’ındaki L3 arayüzdür: çoğunlukla dağıtım veya collapsed core switch üzerindeki SVI, VLAN’lar firewall’da sonlanıyorsa firewall arayüzü. Cisco IOS’ta yapılandırma tek satırdır:
interface Vlan20
description KULLANICI-BINA-A
ip address 10.20.0.1 255.255.252.0
ip helper-address 10.0.50.11
ip helper-address 10.0.50.12
Relay ajanı yayını aldığında üç iş yapar. Paketin giaddr (gateway IP address) alanına isteğin geldiği arayüzün IP adresini (örnekte 10.20.0.1) yazar, paketi tanımlı her sunucuya UDP 67 üzerinden unicast iletir ve sunucudan dönen yanıtı istemci VLAN’ına geri aktarır. Sunucu hangi kapsamdan adres vereceğine giaddr’a bakarak karar verir; giaddr 10.20.0.1 ise 10.20.0.0/22 kapsamını arar. Bu yüzden SVI’nin birincil adresi ile sunucudaki kapsam aynı alt ağda olmalıdır. SVI’de ikincil (secondary) adres varsa giaddr olarak birincil adres kullanılır. Kapsam yoksa yanıt da yoktur.
İki helper adresi tanımlandığında istek her iki sunucuya da gider. Windows DHCP failover veya ISC Kea gibi yedekli kurulumlarda beklenen davranış budur. Sahada en sık gördüğümüz eksik ise yeni açılan VLAN’ın SVI’sine yalnız birinci sunucunun yazılmasıdır; failover çalışıyor sanılır, ilk sunucu düştüğünde o VLAN adressiz kalır.
VLAN’lar arası yönlendirmenin switch’te mi firewall’da mı yapılacağı relay noktasını da belirler. Seçenekler için inter-VLAN routing seçenekleri yazısına bakın.
DHCP snooping: trusted ve untrusted portlar
DHCP snooping, switch’in DHCP mesajlarını inceleyip portları iki sınıfa ayırmasıdır:
- Trusted (güvenilir) port: DHCP sunucu mesajlarının (OFFER, ACK, NAK) gelebildiği port. Uplink’ler, sunucuya giden portlar ve relay ajanına uzanan yol bu sınıftadır.
- Untrusted (güvenilmez) port: İstemci portları. Buradan gelen sunucu mesajları düşürülür; istemci mesajları kontrol edilip iletilir. Yapılandırılmamış her port varsayılan olarak untrusted’dır.
Yani kullanıcının masasına taktığı modem OFFER gönderse bile switch bu mesajı çöpe atar. Untrusted portta ayrıca kaynak MAC adresi ile DHCP paketindeki istemci donanım adresi (chaddr) karşılaştırılabilir; uyuşmayan istek düşürülür. Bu kontrol, havuzu sahte isteklerle tüketmeye çalışan saldırıları zorlaştırır.
Snooping VLAN bazında etkinleştirilir. Global komutu verip uplink’i trusted yapmayı unutmak, o VLAN’daki tüm istemcilerin adres alamaması demektir. Sahada en çok bu şekilde kesinti yaşanır. Uygulama sırası bu yüzden sabittir: önce trusted portlar, sonra VLAN listesi, en son global komut.
Binding tablosu ve bağlı özellikler
Snooping, untrusted portlarda başarıyla biten her DHCP işleminden bir kayıt çıkarır: MAC adresi, IP adresi, kira süresi, VLAN ve port. Bu binding tablosu iki güvenlik özelliğinin dayanağıdır:
| Özellik | Ne yapar? | Dikkat noktası |
|---|---|---|
| Dynamic ARP Inspection (DAI) | Untrusted portlardan gelen ARP paketlerindeki IP–MAC eşleşmesini binding tablosuna göre doğrular | Statik IP’li cihazlar için ARP ACL gerekir |
| IP Source Guard | Porttan yalnız binding tablosundaki kaynak IP ile trafiğe izin verir | Statik IP’li cihazlar için statik binding gerekir |
| Snooping veritabanı | Tabloyu yeniden başlatmadan sonra korur | Kaydedilmezse açılışta tablo boş kalır |
Binding tablosu varsayılan olarak bellekte durur. Switch yeniden başladığında tablo boşalır; DAI ve IP Source Guard açık portlarda istemciler kira yenileyene kadar trafiksiz kalabilir. Elektrik kesintisinden sonra “yarım kat çalışıyor” şikâyetinin sık nedenlerinden biri budur. Tabloyu ip dhcp snooping database komutuyla flash belleğe veya bir sunucuya yazdırın.
Option 82 ve sunucu uyumluluğu sorunları
Option 82 (Relay Agent Information, RFC 3046), DHCP isteğine isteğin geldiği switch ve port bilgisini ekler. Port bazlı adres atama veya kayıt gereken ortamlarda işe yarar. Sorun şurada: Cisco switch’lerde DHCP snooping açıldığında option 82 eklenmesi varsayılan olarak etkindir. L2 erişim switch’i relay ajanı olmadığı için giaddr alanı 0 kalır; yukarıdaki relay ajanına “option 82 içeren ama giaddr değeri 0 olan” bir paket ulaşır.
Bu noktada iki tipik arıza görülür:
- Dağıtım switch’i paketi düşürür: Dağıtım switch’inde de snooping açıksa ve istek untrusted bir porttan geldiyse, option 82 içeren paket varsayılan olarak düşürülür. Cisco IOS relay ajanı da güvenilir işaretlenmemiş arayüzden gelen bu tür paketleri reddedebilir.
- Sunucu yanıt vermez veya yanıt istemciye dönmez: RFC 3046’ya göre sunucunun option 82’yi yanıtta geri yansıtması beklenir; sunucu veya aradaki bir cihaz bunu desteklemiyorsa işlem tamamlanmaz.
Option 82’yi kullanmıyorsanız en temiz çözüm, erişim switch’lerinde eklemeyi kapatmaktır: no ip dhcp snooping information option. Kullanıyorsanız toplama noktasındaki switch’te ip dhcp snooping information option allow-untrusted, relay arayüzünde ip dhcp relay information trusted ile bu paketleri kabul ettirin ve sunucu tarafında seçeneğin işlendiğini doğrulayın. Yarım yapılandırma en kötüsüdür.
Cisco IOS yapılandırma örneği
Aşağıdaki örnek, L2 erişim switch’inde VLAN 20 (kullanıcı) ve VLAN 120 (ses) için snooping’i, option 82 kullanılmayan bir ortama göre yapılandırır. Te1/1/1 dağıtım katmanına giden uplink’tir.
! 1) Önce uplink'i trusted yap
interface TenGigabitEthernet1/1/1
description UPL | DS01 Te1/0/5
ip dhcp snooping trust
!
! 2) İstemci portlarında oran sınırlama
interface range GigabitEthernet1/0/1 - 46
ip dhcp snooping limit rate 15
!
! 3) Option 82 eklemeyi kapat, veritabanını kalıcı yap
no ip dhcp snooping information option
ip dhcp snooping database flash:dhcp-snooping.db
!
! 4) VLAN'ları seç ve özelliği aç
ip dhcp snooping vlan 20,120
ip dhcp snooping
!
! 5) Oran sınırı aşımında port err-disable olursa otomatik kurtarma
errdisable recovery cause dhcp-rate-limit
errdisable recovery interval 300
Oran sınırı saniyedeki DHCP paket sayısıdır. Tek istemcili erişim portunda düşük değer yeter; arkasında küçük bir switch veya çok sayıda sanal makine olan portta değeri yükseltin. Trusted uplink’e oran sınırı koymak ise ayrı bir tuzaktır: açılışta tüm istemciler aynı anda istek gönderdiğinde uplink err-disable olabilir ve bütün kat düşer. Erişim ve uplink port şablonlarının bütünü için switch yapılandırma standardı yazısında hazır bir şablon var.
Sık arızalar ve teşhis komutları
DHCP arızasında süreyi kısaltan şey, sorunu katmanlara ayırmaktır. İstek switch’e ulaşıyor mu? Relay ediliyor mu? Sunucu yanıt veriyor mu? Yanıt istemciye dönüyor mu? Konsolda bu sırayla ilerleyin:
| Belirti | Olası neden | Kontrol |
|---|---|---|
| Snooping sonrası VLAN’da kimse adres alamıyor | Uplink trusted değil | show ip dhcp snooping |
| Yalnız bir kattaki istemciler adres alamıyor | Option 82 / giaddr 0 düşmesi | show ip dhcp snooping statistics |
| Yanlış alt ağdan adres geliyor | Yanlış helper veya kapsam ile giaddr uyumsuzluğu | show ip interface Vlan20 |
| Port aniden kapanıyor | Oran sınırı aşımı | show interfaces status err-disabled |
| Yeniden başlatma sonrası statik IP’li cihazlar kesik | DAI/IPSG ile statik istisna eksik | show ip dhcp snooping binding |
Sunucu tarafında Windows DHCP için kapsam doluluğunu Get-DhcpServerv4ScopeStatistics, belirli bir kapsamdaki kiraları Get-DhcpServerv4Lease -ScopeId 10.20.0.0 ile görebilirsiniz; denetim günlükleri varsayılan olarak C:\Windows\System32\dhcp klasöründedir. Kapsamı dolmuş bir havuz, ağ arızası gibi görünür. Switch tarafında debug ip dhcp snooping packet ayrıntılı çıktı verir; ama yoğun VLAN’larda CPU yükü oluşturabileceği için yalnız kısa süreyle ve bakım penceresinde açın.
Devreye almadan önce kontrol listesi:
- Yedekli DHCP varsa her kullanıcı VLAN’ının SVI’sinde iki sunucu da helper olarak tanımlı mı?
- Sunucudaki kapsamlar SVI birincil adresleriyle aynı alt ağda mı?
- Snooping açılan her switch’te uplink ve sunucu portları trusted mı?
- Option 82 kullanımı bilinçli bir karar mı; değilse ekleme kapalı mı?
- Binding veritabanı kalıcı bir konuma yazılıyor mu?
- Statik IP’li yazıcı, kamera ve sunucular için DAI/IPSG istisnaları tanımlı mı?
IPv6 tarafında relay ve sahte sunucu koruması farklı mekanizmalarla (DHCPv6 relay, RA Guard, DHCPv6 Guard) çalışır; bunlar kampüs ağında IPv6 geçiş planı yazısında ele alınıyor. Relay, snooping ve DAI’nin VLAN mimarisiyle birlikte devreye alınması VLAN, routing ve ağ segmentasyonu çalışmasının, mevcut switch’lere uygulanması ise switch ve router kurulumu hizmetinin kapsamındadır.
Sık sorulan sorular
ip helper-address hangi switch’e yazılır?
İstemcinin VLAN’ı için varsayılan ağ geçidi olan L3 arayüze. Bu genellikle dağıtım veya collapsed core switch üzerindeki SVI’dir; VLAN’lar firewall’da sonlanıyorsa relay firewall arayüzünde yapılandırılır. L2 erişim switch’ine yazılan helper adresi işe yaramaz.
DHCP snooping açınca neden kimse adres alamadı?
En yaygın neden, DHCP sunucusuna giden uplink’in trusted yapılmamasıdır; sunucunun OFFER ve ACK mesajları untrusted porttan geldiği için düşürülür. İkinci yaygın neden, option 82 eklenmiş ve giaddr değeri 0 olan isteklerin dağıtım switch’inde veya relay ajanında reddedilmesidir.
Option 82’yi kapatmak güvenliği azaltır mı?
Hayır. Snooping’in sahte DHCP sunucusunu engelleme ve binding tablosu oluşturma işlevleri option 82’ye bağlı değildir. Option 82 yalnız sunucuya switch ve port bilgisi taşır. Port bazlı adres ataması veya kayıt ihtiyacınız yoksa kapatmak koruma düzeyini değiştirmez.
Binding tablosu neden flash belleğe kaydedilmeli?
Tablo yalnız bellekte tutulursa switch yeniden başladığında boşalır. DAI veya IP Source Guard açık portlarda istemciler kiralarını yenileyene kadar trafikleri engellenebilir. Tabloyu kalıcı bir konuma yazmak, açılıştan sonra kayıtların geri yüklenmesini sağlar.
- Teknoloji
- DHCPv4, RFC 2131, RFC 3046 (Option 82), DHCP snooping, DAI, IP Source Guard, Cisco IOS
- Konu
- Switch tarafında DHCP relay ve snooping yapılandırması
- Seviye
- Orta
- Ön koşullar
- VLAN ve SVI kavramları
- DHCP sunucu ve kapsam bilgisi
- Cisco IOS temel komutları
Switching ve Segmentasyon