1. Anasayfa
  2. DHCP

Windows Server İşletim Sisteminde DHCP Üzerinde Belirli Bir MAC Adresini PowerShell ile Bulma


Kurumsal ağlarda DHCP (Dynamic Host Configuration Protocol) istemcilere IP adreslerini ve diğer ağ yapılandırmalarını otomatik olarak dağıtır. Client sistemler DHCP sunucusunda benzersiz bir kimlik (Client ID) ile tanımlanır. Bu kimlik genellikle cihazın MAC adresidir.

Bir bilgisayarın IP’sini bulmak hangi scope üzerinden adres aldığını görmek veya güvenlik amaçlı bir cihazı takip etmek gerektiğinde en hızlı yol MAC adresine göre arama yapmaktır. Özellikle yüzlerce istemcinin bulunduğu bir ortamda PowerShell bu işlemi hem kolay hem de otomatik hale getirir.

Senaryo

Diyelim ki elimizde şu MAC adresi var:

80-45-DD-A5-30-7A

Görevimiz bu istemcinin DHCP sunucusundan aldığı IP adresini ve lease bilgilerini bulmak.

PowerShell Komutu

Temel komut şöyledir:

Get-DhcpServerv4Lease | Where-Object { $_.ClientId -match "80-45-DD-A5-30-7A" }

Komut Açıklaması

  • Get-DhcpServerv4Lease → DHCP sunucusundaki tüm IPv4 lease kayıtlarını listeler.
  • Where-Object (alias: ?) → Çıktıları filtrelemek için kullanılır.
  • ClientId → Her istemcinin benzersiz kimliği (çoğunlukla MAC adresi).
  • -match → Belirtilen desene uygun kayıtları getirir (regex destekler).

Kısa yazım:

Get-DhcpServerv4Lease | ? ClientId -match "80-45-DD-A5-30-7A"

Komut Çıktısı

Komut çalıştırıldığında karşımıza şu bilgiler çıkar:

ScopeId        : 192.168.100.0
IPAddress      : 192.168.100.19
ClientId       : 80-45-DD-A5-30-7A
HostName       : Kullanici-PC
AddressState   : Active
LeaseExpiryTime: 02.09.2025 18:00:00

Çıktı Alanları

  • ScopeId: IP adresinin ait olduğu alt ağ havuzu.
  • IPAddress: İstemciye atanmış IP adresi.
  • ClientId: İstemcinin MAC adresi.
  • HostName: İstemcinin cihaz adı.
  • AddressState: IP adresinin durumu (Active, Expired, Pending vb.).
  • LeaseExpiryTime: IP kiralama süresinin bitiş zamanı.

Alternatif Kullanımlar

1 Belirli Scope İçinde Arama

Tüm sunucu yerine belirli bir scope’u filtrelemek:

Get-DhcpServerv4Lease -ScopeId 192.168.100.0 | ? ClientId -match "80-45-DD-A5-30-7A"

2 Belirli DHCP Sunucusunda Arama

Birden fazla DHCP sunucusu olan yapılarda:

Get-DhcpServerv4Lease -ComputerName "DHCP01" | ? ClientId -match "80-45-DD-A5-30-7A"

3 Hostname Üzerinden Arama

MAC adresi bilinmiyor ama hostname biliniyorsa:

Get-DhcpServerv4Lease | ? HostName -like "*PC*"

Sık Karşılaşılan Hatalar ve Çözümler

  • Komut bulunamadı:
    → DHCP Management Tools kurulu değil. Çözüm: RSAT (Remote Server Administration Tools) yükleyin.
  • Sonuç çıkmıyor:
    → MAC adresi yanlış formatta olabilir. Bazı ortamlarda 7173UD6F1F1F (tırnaksız, tire olmadan) formatı gerekir.
  • Yanlış sunucuda arama:
    → Ortamda birden fazla DHCP varsa -ComputerName parametresini ekleyin.
  • Lease aktif değil:
    → İstemci şu anda bağlı olmayabilir, expired lease görünüyor olabilir.

En İyi Uygulamalar

  • Merkezi Arama Scripti: Büyük ortamlarda tüm DHCP sunucularını dolaşan bir PowerShell script yazın. Böylece tek komutla tüm ortamda MAC adresi arayabilirsiniz.
  • Loglama: Güvenlik denetimlerinde arama çıktısını CSV’ye yazdırmak faydalıdır: Get-DhcpServerv4Lease | ? ClientId -match "80-45-DD-A5-30-7A" | Select ScopeId,IPAddress,HostName,LeaseExpiryTime | Export-Csv C:\mac_log.csv -NoTypeInformation
  • Otomasyon: Güvenlik ekibi şüpheli MAC adresi verdiğinde, script üzerinden anında IP’sini bulup olay müdahale süresini kısaltabilirsiniz.
  • Formatlama: Çıktıyı daha okunur hale getirmek için Format-Table -AutoSize parametresini ekleyin.

İleri Seviye Senaryolar

  • Belirli MAC Adresini Bulup Anında Engelleme
    IP’sini bulduğunuz cihazın erişimini güvenlik duvarında otomatik engellemek için PowerShell script’i yazabilirsiniz.
  • Gerçek Zamanlı İzleme
    Belirli MAC adreslerini sürekli takip etmek için Task Scheduler üzerinden bu komutu periyodik çalıştırabilirsiniz.
  • Network Audit (Ağ Denetimi)
    Tüm lease kayıtlarını CSV’ye aktararak hangi MAC adreslerinin hangi scope’larda IP aldığını analiz edebilirsiniz: Get-DhcpServerv4Lease | Select IPAddress,ClientId,HostName,LeaseExpiryTime | Export-Csv C:\all_dhcp_leases.csv -NoTypeInformation