IPv6 Teknolojisi
Yayın tarihi
Okuma süresi
6 dk okuma

IPv6 Desteği Nasıl Test Edilir? Komutlar ve Yöntemler

Bir sitenin, ağınızın veya proxy'nizin IPv6 desteğini dig, nslookup, curl, ping ve traceroute ile test etme rehberi. Windows ve Linux komutları, çıktı örnekleri.

IPv6 desteğini test etmek, farklı soruları ayrı ayrı yanıtlamak demektir: Hedefin IPv6 adresi var mı? Sizin ağınız IPv6 ile çıkabiliyor mu? Proxy'niz hedefe hangi adres ailesiyle ulaşıyor? Bu yazıda her soru için Windows ve Linux komutlarını, beklenen çıktıları ve sık yapılan hataları bulacaksınız.

Not

Çıktı örneklerindeki adresler 2001:db8::/32, 192.0.2.0/24 gibi belgelendirme aralıklarından alınmıştır; gerçek bir sunucuya ait değildir. Süre değerleri sizin ağınıza göre değişir, bu yüzden <süre> yer tutucusuyla gösterilmiştir.

Adım 1: Hedefin AAAA kaydına bakın

IPv6 testinin ilk adımı DNS'tir. Bir alan adının IPv6 adresi AAAA kaydında, IPv4 adresi A kaydında tutulur. AAAA yoksa hedefe IPv6 ile doğrudan ulaşamazsınız.

Linux ve macOS: dig

Bash
dig AAAA example.com +short
dig A example.com +short

Hedef çift yığınlıysa iki komut da adres döndürür:

Metin
2001:db8:10::5
192.0.2.80

İlk komutun çıktısı boşsa hedef DNS'te IPv6 yayınlamıyor demektir. dig yoksa paket yöneticinizden dnsutils ya da bind-utils paketini kurun; host -t AAAA example.com de aynı işi görür.

Windows: nslookup

Metin
nslookup -type=AAAA example.com
Metin
Server:  UnKnown
Address:  192.0.2.53

Non-authoritative answer:
Name:    example.com
Address:  2001:db8:10::5

PowerShell'de Resolve-DnsName example.com -Type AAAA aynı bilgiyi nesne olarak verir. Sorguyu belirli bir çözümleyiciye yönlendirmek için nslookup -type=AAAA example.com DNS_SUNUCU ya da dig AAAA example.com @DNS_SUNUCU kullanın; DNS_SUNUCU yer tutucudur.

AAAA kaydı sentetik olabilir

DNS64 kullanan bir ağdaysanız, yalnızca A kaydı olan bir hedef için de AAAA cevabı gelebilir. Sentetik adres genellikle 64:ff9b::/96 ön ekiyle başlar. Gerçek AAAA kaydı varsa DNS64 varsayılan olarak sentez yapmaz. Ayrıntıyı NAT64 ve DNS64 yazısında anlattık.

Adım 2: Kendi ağınızın IPv6 çıkışını kontrol edin

Hedefin AAAA kaydı olsa bile sizin bağlantınız IPv6 ile çıkamıyor olabilir. Önce yerel arayüzü ve yolu görün.

Bash
ip -6 addr show scope global
ip -6 route show default

Birinci komut küresel kapsamlı IPv6 adreslerini, ikincisi varsayılan IPv6 yönlendirmesini gösterir. İlk komut boşsa makinenizde küresel IPv6 adresi yoktur. Link-local (fe80::) adresle internete çıkılamaz; başka bağlantılara iletilmez.

Windows'ta:

Metin
ipconfig
route print -6

ipconfig çıktısında "IPv6 Address" satırı arayın. "Link-local IPv6 Address" tek başına yeterli değildir.

Adresiniz varsa bir adresin geçerli ve kapsamının ne olduğunu anlamak için IPv6 adres kontrol aracını kullanabilir, sözdizimini IPv6 adres doğrulama aracıyla sınayabilirsiniz.

Adım 3: curl ile bağlantıyı deneyin

DNS'in doğru göstermesi, bağlantının çalıştığı anlamına gelmez. curl ile adres ailesini zorlayabilirsiniz:

Bash
curl -6 -sS -o /dev/null -w '%{remote_ip}\n' https://example.com/
curl -4 -sS -o /dev/null -w '%{remote_ip}\n' https://example.com/

-6 yalnızca IPv6 adreslerini, -4 yalnızca IPv4 adreslerini kullanır. %{remote_ip} bağlanılan adresi yazar:

Metin
2001:db8:10::5
192.0.2.80

-6 komutu Could not resolve host veya Couldn't connect to server hatası veriyorsa iki olasılık vardır: hedefin AAAA kaydı yoktur ya da sizin ağınız IPv6 ile çıkamıyordur. Adım 1 ve 2 bunları ayırır. Windows PowerShell'de curl bir takma ad olabilir; gerçek programı çağırmak için curl.exe yazın ve -o /dev/null yerine -o NUL kullanın.

Sunucu IPv6'da yanıt veriyor mu?

AAAA kaydı yalnızca adresi bildirir. Sunucunun o adreste dinlediğini kanıtlamaz. Bağlantı denemesi bu yüzden gereklidir. Güvenlik duvarında IPv6 kuralının eksik olması, sık görülen bir nedendir.

Adım 4: ping ve traceroute

Bu araçlar bağlantının yolunu görmenize yardımcı olur. Hedefin ICMPv6'ya yanıt vermemesi, sitenin kapalı olduğu anlamına gelmez; birçok sunucu ICMP'yi süzer.

Linux:

Bash
ping -6 -c 3 example.com
traceroute -6 example.com

Eski sistemlerde ping6 ve traceroute6 adları geçerlidir; modern dağıtımlarda -6 bayrağı yeterlidir. tracepath -6 example.com yedek bir seçenektir ve yönetici yetkisi gerektirmez.

Windows:

Metin
ping -6 example.com
tracert -6 example.com

Başarılı bir ping çıktısı şuna benzer:

Metin
PING example.com(2001:db8:10::5 (2001:db8:10::5)) 56 data bytes
64 bytes from 2001:db8:10::5: icmp_seq=1 ttl=57 time=<süre> ms

ttl alanı IPv6'da Hop Limit değerini gösterir. Ping başarısızsa ama curl -6 çalışıyorsa sorun ICMPv6 süzmesindedir, hizmette değil.

Adım 5: Tarayıcıdan hızlı kontrol

Komut satırı kullanmak istemezseniz tarayıcıda bir IP öğrenme sayfası açın. Sayfa size IPv6 adresi gösteriyorsa tarayıcınız IPv6 ile çıkıyordur. İki adres ailesini ayrı görmek için çift yığınlı ve yalnızca-IPv4 uç noktalar sunan servisleri kullanabilirsiniz. Tarayıcı bir proxy üzerinden çalışıyorsa göstereceği adres proxy'nin çıkış adresidir.

Adresi aldıktan sonra türünü, kapsamını ve kısa yazımını IPv6 adres kontrol aracına yapıştırarak çözümleyebilirsiniz.

Adım 6: Proxy çıkış adresini doğrulayın

Burası proxy kullanıcıları için en önemli adımdır. Amaç, proxy'nin hedefe hangi adres ailesiyle çıktığını görmektir.

Bash
curl -x http://KULLANICI:PAROLA@PROXY_HOST:PROXY_PORT \
  https://api64.ipify.org

api64.ipify.org çift yığınlı bir servistir. Proxy IPv6 ile çıkıyorsa dönen metin bir IPv6 adresi olur:

Metin
2001:db8:20::1a2b

IPv4 görürseniz proxy bu hedefe IPv4 ile çıkıyordur ya da hedef IPv4'e geri dönmüştür. Her iki sonuç da kendi başına bir hata değildir; ürününüzün çıkış yapısına bağlıdır. Ürün bilgisi için IPv6 Proxy ürün sayfasına bakın.

Daha kesin bir sınama için yalnızca IPv6 yayın yapan uç noktaya gidin:

Bash
curl -x http://KULLANICI:PAROLA@PROXY_HOST:PROXY_PORT \
  https://api6.ipify.org

Bu istek yanıt vermezse proxy yalnızca IPv6 çıkış yapamıyordur ya da hedefe o yoldan ulaşılamıyordur.

SOCKS5 proxy için şema farklıdır:

Bash
curl -x socks5h://KULLANICI:PAROLA@PROXY_HOST:PROXY_PORT \
  https://api64.ipify.org

socks5h alan adının proxy tarafında çözülmesini sağlar. socks5 şemasında çözümlemenin nerede yapıldığını varsaymayın. IPv6 Proxy ürününde protokol HTTP(S) olarak geçer; SOCKS5 gerekiyorsa sipariş öncesi destekten teyit alın.

Uyarı

curl -6 verirseniz bu, proxy ana makinesinin ad çözümlemesini de etkiler. Proxy'nin çıkışını sınarken -6 kullanmayın; yalnızca hedefe giden yolun IPv6 olduğunu doğrulayan bir uç nokta seçin.

Tarayıcı üzerinden hızlı sınama için proxy kontrol aracını kullanabilirsiniz. Çalışma mantığı için IPv6 proxy nasıl çalışır yazısı yardımcı olur.

Sonuçları nasıl yorumlamalı?

Test sonuçları tek başına "var" ya da "yok" demez. Dört tipik durum vardır.

Hedef çift yığınlı, siz de IPv6 ile çıkabiliyorsunuz. dig AAAA adres döndürür, curl -6 bağlanır. Bu en sağlıklı durumdur. Bir IPv6 proxy hedefe doğrudan ulaşır.

Hedef çift yığınlı, ama siz IPv6 ile çıkamıyorsunuz. dig AAAA adres döndürür, curl -6 bağlanamaz, ip -6 addr küresel adres göstermez. Sorun hedefte değil sizin ağınızdadır. Burada proxy bir çözüm olabilir: proxy'nin kendisi IPv6 çıkışa sahipse bağlantıyı onun üzerinden kurarsınız.

Hedef yalnızca IPv4. dig AAAA boş döner. IPv6 çıkışlı bir proxy hedefe, çıkış ağında NAT64/DNS64 yoksa ulaşamaz. Varsa ulaşır; ancak hedef sizin değil çeviri katmanının IPv4 adresini görür. Mekanizma NAT64 ve DNS64 yazısında anlatılıyor.

AAAA var ama bağlantı kurulamıyor. Kayıt yayınlanmış, ancak sunucu o adreste dinlemiyor ya da güvenlik duvarı IPv6'yı kesiyor olabilir. Bu, hedef tarafındaki bir yapılandırma hatasıdır; sizin tarafınızda çözülecek bir şey değildir.

İstemci hangi adres ailesini seçer?

Çift yığınlı bir hedefe bağlanırken istemci hem IPv6 hem IPv4 adresini bilir. Hangisini önce deneyeceği işletim sistemine, tarayıcıya ve yazılıma bağlıdır. RFC 8305 (Happy Eyeballs) bu seçimi hızlandıran bir istemci algoritması önerir; ancak her yazılım bunu uygulamaz. Bu yüzden bir yazılımın hangi aileyi kullandığını varsaymayın, curl -4 ve curl -6 ile her ikisini ayrı ayrı sınayın. Proxy yazılımlarında AAAA önceliği ve geri düşme davranışı da yazılıma bağlıdır; kendi ortamınızda deneyerek öğrenmelisiniz.

Sık yapılan hatalar

BelirtiNedenÇözüm
dig AAAA boş dönüyorHedef IPv6 yayınlamıyorIPv4 bir yol ya da NAT64/DNS64 gerekir
curl -6 zaman aşımına düşüyorSunucu IPv6'da yanıt vermiyor veya yolda süzülüyortraceroute -6 ile yolu inceleyin
ping -6 yanıtsız ama site açılıyorICMPv6 süzülüyorBağlantıyı curl -6 ile sınayın
IPv6 adresi var ama internete çıkılamıyorYalnızca link-local adresKüresel adres ve varsayılan yol kontrol edin
Proxy URL'si çalışmıyorIPv6 literal'de köşeli parantez yokhttp://[2001:db8::1]:8080 yazın
Proxy ile api64 IPv4 döndürüyorHedefe IPv4 ile çıkılıyorÇıkış yapısını destekten teyit edin
Bölge kimlikli adres (%eth0) proxy ayarında çalışmıyorURI sözdizimi bölge kimliğini desteklemezKüresel bir adres kullanın

IPv6 literal'i bir komutta ya da URL'de port ile birlikte yazarken her zaman köşeli parantez kullanın: [2001:db8::1]:443. Parantezsiz yazımda :: yüzünden port ayrılamaz.

Kontrol listesi

Bir hedef için IPv6 desteğini değerlendirirken bu sırayı izleyin:

  1. dig AAAA ya da nslookup -type=AAAA ile kaydı görün.
  2. ip -6 addr / ipconfig ile kendi küresel IPv6 adresinizi doğrulayın.
  3. curl -6 ile bağlantıyı deneyin.
  4. Gerekirse ping -6 ve traceroute -6 ile yolu inceleyin.
  5. Proxy kullanıyorsanız çıkış adresini api64.ipify.org ile kontrol edin.
  6. Sonucu not alın: hedef çift yığınlı mı, yalnızca IPv4 mü?

Hedef yalnızca IPv4 çıktıysa, IPv6 çıkışlı bir proxy ona doğrudan ulaşamaz. Bu sınırı satın alma öncesinde bilmek önemlidir; ayrıntılar için IPv6 proxy nedir yazısına bakın.

Kısa özet

  • Önce DNS: AAAA kaydı yoksa hedefe IPv6 ile doğrudan ulaşılamaz.
  • Kayıt var diye bağlantı çalışıyor demek değildir; curl -6 ile gerçekten deneyin.
  • ping başarısızsa bile ICMPv6 süzülüyor olabilir; karar için curl kullanın.
  • Proxy sınamasında -6 bayrağı vermeyin ve çıkış adresini çift yığınlı bir servisten okuyun.
  • IPv6 adresini URL'de her zaman köşeli parantezle yazın.

Sık sorulan sorular

Bir sitenin IPv6 desteği olup olmadığını nasıl anlarım?

Alan adının AAAA kaydına bakın. Linux ve macOS'ta dig AAAA alan-adi +short, Windows'ta nslookup -type=AAAA alan-adi komutu kaydı gösterir. Çıktı boşsa site DNS'te IPv6 yayınlamıyordur.

AAAA kaydı var ama site IPv6 ile açılmıyor, neden?

AAAA kaydı yalnızca adresi bildirir, sunucunun o adreste gerçekten yanıt verdiğini kanıtlamaz. curl -6 ile bağlantıyı deneyin; güvenlik duvarı, yönlendirme ya da sunucu yapılandırması IPv6 erişimini engelliyor olabilir.

Proxy'min IPv6 ile çıktığını nasıl doğrularım?

Proxy üzerinden bir IP öğrenme hizmetine istek gönderin; örneğin curl -x ile api64.ipify.org. Çift yığınlı hedefe IPv6 çıkışla bağlanıyorsa dönen adres IPv6 olur. Tarayıcıdan hızlı kontrol için proxy kontrol aracını da kullanabilirsiniz.

curl -6 komutunu proxy ile kullanırsam ne olur?

curl -6, ad çözümlemede yalnızca IPv6 adreslerini kullanmasını söyler ve bu proxy ana makinesi için de geçerli olur. Proxy'nin çıkış adresini sınamak istiyorsanız -6 vermeden, proxy üzerinden IPv6 destekli bir hedefe gidin.

ping6 komutu bulunamıyor, ne yapmalıyım?

Bazı güncel Linux dağıtımlarında ayrı bir ping6 komutu bulunmaz. ping -6 alan-adi komutunu kullanın. Windows'ta da ping -6 alan-adi biçimi geçerlidir.