Teredo ve ISATAP ile IPv6 Geçiş Teknolojileri
IPv6’ya geçiş meselesi, Türkiye’deki kurumsal ağlarda hâlâ yarım kalmış bir hikaye gibi duruyor. Bir tarafta ISP’lerin kademeli IPv6 dağıtımı, diğer tarafta onlarca yıllık IPv4 altyapısı üzerine kurulu kurumsal sistemler. Bu iki dünya arasında köprü kurmak zorunda kalan sistem yöneticileri için geçiş teknolojileri hem kurtarıcı hem de baş ağrısı kaynağı olabiliyor. Teredo ve ISATAP da bu geçiş sürecinin en sık karşılaşılan iki mekanizması. Sahada bu ikisini birlikte yönetmek, sandığınızdan çok daha ince bir denge gerektiriyor.
IPv6 Geçiş Teknolojilerine Neden İhtiyaç Duyarız?
Teoride IPv6’ya geçiş basit görünür: yeni protokolü açarsın, adresleri dağıtırsın, bitti. Pratikte ise bir kurumun ağ altyapısını tamamen çevirmek aylar, hatta yıllar alıyor. Bu süre zarfında hem IPv4 hem IPv6 konuşan sistemlerin bir arada yaşaması gerekiyor. İşte burada tünel mekanizmaları devreye giriyor.
Teredo ve ISATAP, özünde aynı problemi farklı senaryolar için çözüyor: IPv4 altyapısı üzerinden IPv6 trafiği taşımak. Ancak birbirinden oldukça farklı kullanım alanları ve mimarileri var.
- ISATAP (Intra-Site Automatic Tunnel Addressing Protocol): Kurumsal iç ağlarda, IPv4 üzerinde IPv6 bağlantısı kurmak için tasarlanmış. RFC 5214 ile standardize edilmiş.
- Teredo: NAT arkasındaki istemcilerin IPv6 bağlantısı kurmasını sağlayan ve UDP üzerinden çalışan bir tünel protokolü. RFC 4380 ile tanımlanmış.
ISATAP: Kurumsal İç Ağlarda IPv6 Tünelleme
ISATAP, adından da anlaşılacağı üzere site içi kullanım için optimize edilmiş. Bir Windows Server ortamında ISATAP router kurduğunuzda, IPv4 adres uzayınızın üzerine otomatik olarak IPv6 adresleri oluşturulabiliyor. Temel mantık şu: ISATAP adresleri 64-bit prefix + 0000:5EFE:x.x.x.x formatında oluşturuluyor; burada x.x.x.x cihazın IPv4 adresi.
Diyelim ki kurumunuzun iç ağı 10.0.0.0/8 üzerinde çalışıyor ve bir bölüm sunucularınız henüz IPv6 destekli değil. ISATAP bu geçiş döneminde can simidi olabiliyor.
Windows Server’da ISATAP Router Yapılandırması
Önce mevcut durumu kontrol etmekle başlayalım:
# Mevcut tünel arayüzlerini listele
netsh interface ipv6 show interfaces
# ISATAP arayüzünün durumunu kontrol et
netsh interface isatap show state
ISATAP router’ı etkinleştirmek için:
# ISATAP router rolünü etkinleştir
netsh interface isatap set router 10.0.1.1
# ISATAP durumunu aktif hale getir
netsh interface isatap set state enabled
# Yapılandırmayı doğrula
netsh interface isatap show router
PowerShell tarafında ise durum biraz daha temiz görünüyor:
# PowerShell ile ISATAP yapılandırması
Set-NetIsatapConfiguration -Router "10.0.1.1" -State Enabled
# Mevcut ISATAP yapılandırmasını görüntüle
Get-NetIsatapConfiguration
# ISATAP arayüzü üzerindeki IPv6 adreslerini listele
Get-NetIPAddress | Where-Object {$_.InterfaceAlias -like "*ISATAP*"}
ISATAP router’ı yapılandırdıktan sonra istemcilerin bu router’ı bulabilmesi için DNS kaydı oluşturmanız gerekiyor. Bu çoğu zaman gözden kaçan ama kritik bir adım:
# DNS'e ISATAP kaydı ekle (DNS sunucusunda çalıştırılacak)
Add-DnsServerResourceRecordA -ZoneName "sirket.local" -Name "ISATAP" -IPv4Address "10.0.1.1"
# Kaydın doğru oluşturulduğunu kontrol et
Resolve-DnsName -Name "ISATAP.sirket.local" -Type A
ISATAP’ın Güvenlik Duvarı ile Birlikte Çalışması
Kurumsal ortamlarda ISATAP’ın önündeki en büyük engel genellikle güvenlik duvarları oluyor. Windows Firewall’un ISATAP trafiğine izin vermesi için:
# IPv6 ISATAP trafiğine izin ver
netsh advfirewall firewall add rule name="ISATAP IPv6" `
protocol=41 dir=in action=allow
# Mevcut ISATAP kurallarını listele
netsh advfirewall firewall show rule name="ISATAP IPv6"
Burada protokol 41, IPv4 üzerinde kapsüllenmiş IPv6 trafiğini ifade ediyor. Bu detayı bilmeden güvenlik duvarı yapılandırması yaparken saatlerce neden bağlantı olmadığını anlayamayabilirsiniz.
Teredo: NAT Arkasından IPv6 Erişimi
Teredo, ISATAP’tan farklı bir sorunu çözüyor: NAT’ın arkasında olan istemcilerin IPv6 internet bağlantısı kurması. Bu senaryo özellikle Türkiye’deki kurumsal ISP bağlantılarında sık karşılaşılan bir durum. Birçok şirket birden fazla NAT katmanının arkasında çalışıyor ve IPv6 prefix’i almak için ISP’nin desteğini beklemek durumunda kalıyor.
Teredo üç bileşenden oluşuyor:
- Teredo Server: İstemcilere Teredo adresi tahsis eden ve başlangıç iletişimini sağlayan sunucu
- Teredo Relay: Teredo istemcileri ile native IPv6 ağları arasında aracılık yapan bileşen
- Teredo Client: NAT arkasındaki IPv6 bağlantısı isteyen uç nokta
Windows’ta Teredo Durumunu Yönetmek
# Teredo durumunu kontrol et
netsh interface teredo show state
# Teredo'yu etkinleştir
netsh interface teredo set state enterpriseclient
# Özel bir Teredo sunucusu belirt (varsayılan Microsoft sunucusu yerine)
netsh interface teredo set state server=teredo.sirket.com
# Teredo'yu devre dışı bırak (güvenlik gerektiren ortamlarda)
netsh interface teredo set state disabled
PowerShell ile Teredo yönetimi:
# Teredo yapılandırmasını görüntüle
Get-NetTeredoConfiguration
# Teredo'yu enterprise moda al ve özel sunucu belirt
Set-NetTeredoConfiguration -Type EnterpriseClient -ServerName "teredo.sirket.com"
# Teredo arayüzündeki IP adresini kontrol et
Get-NetIPAddress | Where-Object {$_.InterfaceAlias -like "*Teredo*"} |
Select-Object IPAddress, PrefixLength, AddressState
Teredo adresi başarıyla alındığında 2001:0000::/32 prefix’i ile başlayan bir adres görmeniz gerekiyor. Eğer görüntüleyemiyorsanız büyük ihtimalle UDP 3544 portu engelleniyor demektir.
Teredo Bağlantı Sorunlarını Gidermek
Sahada en çok karşılaşılan sorun, Teredo’nun “offline” durumda kalması. Bunu debug etmek için:
# Detaylı Teredo durum bilgisi al
netsh interface teredo show state
# IPv6 bağlantısını test et
Test-NetConnection -ComputerName "ipv6.google.com" -Port 80
# Teredo relay ulaşılabilirliğini kontrol et
ping -6 teredo.ipv6.microsoft.com
# UDP 3544'ün açık olup olmadığını kontrol et
Test-NetConnection -ComputerName "teredo.ipv6.microsoft.com" -Port 3544
Gerçek Dünya Senaryosu: Hibrit Kurumsal Ağda Yapılandırma
Şimdi gerçekçi bir senaryo üzerinden gidelim. Büyük ölçekli bir Türk bankasında bu konfigürasyonu yaptığımı varsayalım. Ağ şu bileşenlerden oluşuyor:
- Merkez ofis: Windows Server 2022 üzerinde ISATAP router
- Şubeler: NAT arkasında, Teredo ile bağlanan istemciler
- Hedef: Merkez ofisteki IPv6 uyumlu uygulamalara şubelerden erişim
Merkez ofis ISATAP router’ının kapsamlı yapılandırması:
# 1. ISATAP router'ını yapılandır
Set-NetIsatapConfiguration -Router "10.1.1.1" -State Enabled -ResolutionIntervalSeconds 1200
# 2. IPv6 yönlendirmeyi etkinleştir
Set-NetIPInterface -AddressFamily IPv6 -Forwarding Enabled
# 3. Prefix bilgilendirmesini aktif et
Set-NetIPInterface -InterfaceAlias "ISATAP" -AdvertiseDefaultRoute Enabled
# 4. Yapılandırmayı doğrula ve kayıt altına al
$isatapConfig = Get-NetIsatapConfiguration
$isatapConfig | Export-Csv -Path "C:Logsisatap-config-$(Get-Date -Format 'yyyyMMdd').csv"
# 5. ISATAP arayüzünün IPv6 adresini kaydet
Get-NetIPAddress -InterfaceAlias "*ISATAP*" |
Select-Object IPAddress, PrefixLength |
Out-File "C:Logsisatap-addresses.txt"
Şube tarafındaki istemciler için Teredo yapılandırmasını Group Policy ile dağıtmak en temiz yol. Ancak GPO yoksa PowerShell ile de yapılabilir:
# Şube istemcilerinde Teredo yapılandırması
# (Bu scripti her istemcide çalıştırın veya GPO startup script olarak dağıtın)
$ErrorActionPreference = "Stop"
try {
# Teredo'yu enterprise moda al
Set-NetTeredoConfiguration -Type EnterpriseClient `
-ServerName "teredo.merkez.sirketadi.com.tr" `
-RefreshIntervalSeconds 30
# Bağlantıyı test et
$testResult = Test-NetConnection -ComputerName "isatap.merkez.sirketadi.com.tr" -Port 443
if ($testResult.TcpTestSucceeded) {
Write-EventLog -LogName Application -Source "IPv6Setup" `
-EventId 1001 -EntryType Information `
-Message "Teredo yapilandirmasi basarili. Sunucu: $env:COMPUTERNAME"
}
} catch {
Write-EventLog -LogName Application -Source "IPv6Setup" `
-EventId 1002 -EntryType Error `
-Message "Teredo yapilandirma hatasi: $_"
}
Güvenlik Perspektifi: Teredo ve ISATAP’ın Riskleri
Bu teknolojileri konuşurken güvenliği atlamak olmaz. Microsoft’un kendisi de son yıllarda Teredo’yu birçok Windows bileşeninde varsayılan olarak devre dışı bıraktı. Bunun nedeni var: Teredo, NAT’ı bypass etme kapasitesi ile yanlış yapılandırıldığında güvenlik politikalarını delip geçebiliyor.
ISATAP için dikkat edilmesi gerekenler:
- Yetkisiz ISATAP router’larından gelen router advertisement’ları ağa zarar verebilir
- IPv6 trafiği için ayrı bir IDS/IPS politikası oluşturulmalı
- ISATAP router’larını sadece yetkili IP aralıklarından erişilebilir yapın
Teredo için dikkat edilmesi gerekenler:
- Kurumsal ortamlarda halka açık Teredo sunucuları yerine kendi sunucunuzu kullanın
- Teredo trafiği şifreli değil, hassas ortamlarda IPsec ile kombinleyin
- Teredo’ya ihtiyaç yoksa kesinlikle devre dışı bırakın
Güvenlik açısından sıkılaştırılmış bir ortamda Teredo’yu tamamen kapatmak için:
# Tüm sistemlerde Teredo'yu devre dışı bırak (GPO yerine script ile)
netsh interface teredo set state disabled
# Devre dışı bırakıldığını doğrula
$teredoState = netsh interface teredo show state
if ($teredoState -match "disabled") {
Write-Host "Teredo basariyla devre disi birakildi" -ForegroundColor Green
} else {
Write-Warning "Teredo durumu beklenmedik: $teredoState"
}
6to4: Üçüncü Bir Seçenek Olarak
Teredo ve ISATAP ile aynı kategoride değerlendirilen ama daha az konuşulan bir mekanizma da 6to4. Windows Server ortamlarında otomatik olarak devreye girebilir ve zaman zaman beklenmedik sorunlar çıkarabilir.
# 6to4 durumunu kontrol et
netsh interface 6to4 show state
# 6to4'ü devre dışı bırak (genellikle önerilen)
netsh interface 6to4 set state disabled
# Tüm geçiş mekanizmalarının durumunu bir arada gör
Get-NetIPInterface | Where-Object {
$_.InterfaceAlias -match "Teredo|ISATAP|6TO4|Tunnel"
} | Select-Object InterfaceAlias, AddressFamily, ConnectionState
6to4’ü neden devre dışı bırakmak isteyebilirsiniz? Eğer global olarak yönlendirilebilir bir IPv4 adresiniz yoksa, 6to4 düzgün çalışmaz ve bağlantı sorunlarına yol açar. Türkiye’deki pek çok kurumsal ortamda özel IP blokları kullanıldığından 6to4 zaten işe yaramayacak, ama arka planda çalışmaya devam ederek gereksiz trafik üretecektir.
Sorun Giderme: Temel Araçlar ve Yaklaşımlar
ISATAP veya Teredo sorunlarını debug ederken sistematik bir yaklaşım şart. Yıllar içinde öğrendiğim en verimli yöntem katmanlı kontrol:
# Katman 1: Temel IPv6 bağlantı kontrolü
Test-NetConnection -ComputerName "2001:4860:4860::8888" -InformationLevel Detailed
# Katman 2: Tünel arayüzlerinin durumu
Get-NetAdapter | Where-Object {$_.InterfaceDescription -match "Tunnel|ISATAP|Teredo"} |
Select-Object Name, Status, LinkSpeed
# Katman 3: Rota tablosunu incele
Get-NetRoute -AddressFamily IPv6 |
Where-Object {$_.DestinationPrefix -ne "::/0"} |
Sort-Object RouteMetric
# Katman 4: Olay günlüklerinde IPv6 hatalarını ara
Get-WinEvent -LogName System |
Where-Object {$_.Message -match "IPv6|ISATAP|Teredo" -and $_.Level -le 3} |
Select-Object TimeCreated, LevelDisplayName, Message |
Select-Object -First 20
Bir diğer kritik nokta: Windows Server 2016 sonrasında ISATAP’ın davranışı değişti. DNS’de ISATAP adını çözmek için artık GlobalQueryBlockList‘ten bu adı kaldırmanız gerekiyor. Yoksa DNS sunucusu ISATAP sorgularını otomatik olarak bloklayacak:
# GlobalQueryBlockList kontrolü
Get-DnsServerGlobalQueryBlockList
# ISATAP'ı blok listesinden çıkar
Set-DnsServerGlobalQueryBlockList -Enable $true -List "wpad"
# Değişikliği doğrula
Get-DnsServerGlobalQueryBlockList
Sonuç
Teredo ve ISATAP, IPv4’ten IPv6’ya geçiş sürecinin vazgeçilmez araçları olmaya devam ediyor. Ancak bu araçları kullanırken net bir strateji olmadan ilerlemek, ağınızda çözmesi güç sorunlar doğurabiliyor.
Kurumsal ortamlar için önerdiğim yaklaşım şu: ISATAP’ı iç ağ geçiş teknolojisi olarak planlı biçimde kullanın, ancak bunu geçici bir köprü olarak görün, kalıcı çözüm olarak değil. Teredo’yu ise yalnızca gerçekten NAT arkasından IPv6 erişimine ihtiyaç duyulan senaryolarda, kontrollü biçimde devreye alın. İhtiyaç yoksa her iki mekanizmayı da kapatın, çünkü kullanılmayan her protokol potansiyel bir saldırı yüzeyi demektir.
IPv6 geçişi bir sprint değil, maraton. Bu maratonu doğru planlanmış geçiş teknolojileriyle, ağınızı ateşe vermeden tamamlayabilirsiniz. Ama bu teknolojilerin altında yatan mekanizmaları anlamadan sadece komutu kopyalayıp yapıştırmak, sizi eninde sonunda sahada çözülmesi güç bir sorunla baş başa bırakır.
