IPv6 adresleme mekanizmaları

Merhaba,

IPv6 hakkında bilgisi olan herkes IPv6’nın yeniliklerini öğrenirken mutlaka plug-and-play (Türkçeye genelde “tak ve çalıştır” olarak çevriliyor) özelliğini de öğrenmiştir. Yani, bilgisayarı ağa bağladığımız gibi İnternet erişimine sahip olmak – statik IP ayarı veya DHCP gerekmeden. Bunu sağlayan özelliğin Autoconfiguration olduğunu söyleyebiliriz. Yani, istemcinin kendi IPv6 adresini kendisinin türetmesi.

Peki artık statik IP ayarı yapmak hiç gerekmeyecek mi? Sistem ve ağ yöneticileri için daha da önemli olan soru ise DHCP tarihe mi karışıyor? Bu sorulara cevap üretmeden önce IPv6 adresleme mekanizmalarını daha detaylı incelemek gerek. Bu yazımda istemcinin IPv6 adresleme davranışını ve bunun üzerinde nasıl kontrollerimiz olabileceğini anlatacağım

IPv6’da ICMP protokolünün yeri çok önemli. Örneğin ARP operasyonu yani 3. katman adreslerden 2. katman adresleri çözme işi ICMP(IPv6’da ICMPv6 olarak da geçiyor) ile gerçekleşiyor. ICMPv6 kullanarak bu ve bir takım diğer önemli işeri yapan protokole NDP adı veriliyor. Bu yazıda bu diğer önemli işlerden biri olan prefix ve default gateway keşfine değineceğiz. NDP’nin bu işlemde kullandığı paketler ise RS (Router Solicitation) ve RA (Router Advertisement) paketleri. RS istemcinin ağa bağlandığında gönderdiği “Bulunduğum network’ün prefix’i ne?” ve “Default Gateway adresi ne?” sorularını içeren paket olarak düşünülebilir. Kaynak IPv6 adresi link-local, hedef IPv6 adresi ise FF02::2(tüm router’lar)’dir. (Link-local adres sadece o linkte geçerli olan istemcinin kendisinin türettiği IPv6 adresidir, nasıl türetildiğinden ilerde bahsedeceğim). RA da buna cevap olarak router tarafından yollanan (ayrıca periyodik olarak da yollanır) pakettir. Kaynak IPv6 adresi link-local, hedef IPv6 adresi ise FF02::1 (tüm uçlar)’dir.

RA paketinde iki önemli bayrak (flag) var. Birisi “managed-config-flag” diğeri de “other config-flag” (M biti ve O biti de deniyor kısaca). İstemcinin davranışı bu bayrakların aldığı değerlere göre şekilleniyor. Eğer istemciye gelen RA paketinde M biti 1 ise bu “IPv6 adresi için DHCPv6 kullan”, 0 ise “Autoconfiguration yap” anlamına geliyor. O biti ise istemcinin “diğer” bilgileri nerden öğreneceğini belirliyor. Bu bilgilerden en önemlisi DNS sunucusu adresi. RA paketindeki O biti 1 ise “DNS adreslerini de DHCPv6’dan öğren”, 0 ise “DHCPv6’dan öğrenme” anlamına geliyor.

Sonuçta dört farklı kombinasyon çıkıyor karşımıza:

  • M=1, O=1: İstemci hem IPv6 adresini hem DNS adreslerini DHCPv6 ile öğreniyor.
  • M=0, O=1: İstemci IPv6 adresini autoconfiguration ile türetiyor, DNS adresini ise DHCPv6 ile öğreniyor. Bu tür adreslemeye DHCP sunucusu istemcilere bir adres vermeyip sadece DNS adreslerini öğrettiği için “stateless DHCP” de deniyor. Dolayısıyla DHCPv4’te olmayan “stateful” ve “stateless” ayrımı ortaya çıkyor DHCPv6’da. Aslında stateful DHCPv6 bildiğimiz DHCP.
  • M=1, O=0: İstemci IPv6 adresini DHCPv6 ile öğreniyor, DNS adresini ise elle girmek gerekiyor.
  • M=0, O=0: İstemci IPv6 adresini autoconfiguration ile türetiyor, DNS adresini ise elle girmek gerekiyor.

Son iki seçenek için yani O=0 ise IPv6 adresini otomatik olarak alsa da istemciye DNS adresini statik olarak girmek gerekiyor. Eğer DNS adresini de dinamik olarak bırakırsak istemci DHCPv6’dan öğrenilen DNS adreslerini dikkate almayacak ve DNS adresi olarak fec0:0:0:ffff::1 kullanmaya çalışacaktır. Bu bir site-local adrestir fakat günümüzde IPv6’da bu tür adreslerin kullanımı terkedilmektedir. Dolayısıyla O=0 iken DNS adresini de dinamik olarak bırakırsak istemcinin İnternete çıkamama durumu vardır.

Bir diğer dikkat edilecek nokta: IPv6’da Default Gateway adresi DHCPv6 tarafından öğretilmez, RA paketinin kaynak adresi olan router’ın link-local adresi kullanılır.

Gelelim network yöneticilerinin bu konuda neler yapabileceklerine. Tahmin ettiğiniz üzere biz de RA paketindeki bu bayraklarla oynayabiliyoruz:

Router(config-if)#ipv6 nd managed-config-flag -> M bitini 1 yapar (istemciye adresini DHCPv6’dan almasını söyler)

Router(config-if)#ipv6 nd other-config-flag -> O bitini 1 yapar (istemciye DNS adresini DHCPv6’dan almasını söyler)

Peki autoconfiguration nasıl gerçekleşiyor? Autoconfiguration’ın amacı IPv6 prefix’ini ve default gateway adresini NDP ile zaten öğrenmiş olan istemciye bir de 64 bitlik host kısmı sağlayarak istemcinin kullanılabilir bir IPv6 adresine sahip olmasını sağlamak. Peki 64 bitlik host kısmı nasıl sağlanabilir? Öyle ki bu host kısmı istemci tarafından türetilecek ve adres çakışması olmaması için her istemci eşsiz bir host kısmı türettiğinden emin olmalı. Cevap MAC adresi. MAC adresleri zaten değil tek bir ağda tüm dünyada eşsiz olan adresler. Autoconfiguration yapmak için 48 bitlik MAC adresinden 64 bitlik host kısmı türeten algoritmaya EUI-64 adı veriliyor ve iki adımda gerçekleşiyor:

  • MAC adresindeki soldan yedinci bit 1 yapılır (standart olarak bu bit bütün MAC adreslerinde sıfırdır) ve adres tekrar 16 tabanında yazılır.
  • MAC adresinin ortasına FFFE hexadecimal karakterleri yerleştirilir. Böylece adres 64 bite tamamlanmış olur.

Bir örnek vermek gerekirse:

– MAC adresi: 0034:5678:9ABC

– EUI-64 işleminden sonra: 0234:56FF:FE78:9ABC

Yazının başında bahsettiğim link-local adreslerin de host kısmı EUI-64 ile türetilir. Şunu da belirtmeden geçmeyelim: Serial gibi MAC adresi olmayan interface’lerde EUI-64 işlemi cihazdaki en düşük numaralı ethernet interface’inin MAC adresine göre yapılır.

EUI-64 64 bitlik host kısmı oluşturmak için kullanılan bir mekanizma. Kullanımında bir zorlukla karşılaşılmaması açısından IPv6’da 64 bitten fazla subnetting önerilmiyor, 128-64=64 bit host kısmına kalıyor. Aslında point-to-point bir linke bile 64 bitlik bir host kısmı ayrılması tercih ediliyor. IPv4’te ise 2 bitlik ayırıyorduk! IPv6’da bu kadar cömert davranabilmemizin sebebi ise 128 bitlik bir adres formatının çok sayıda adres sunmasının yanı sıra aynı zamanda çok sayıda subnet de sunmasıdır. Yani 64 bitlik host kısmının hiç bir sakıncası yok 🙂

Gördüğümüz üzere EUI-64 mekanizması sadece ağda değil tüm dünyada eşsiz host kısımları oluşturabiliyor. Yani dizüstü bilgisayarınızla İnternete nerden girerseniz girin IPv6 adresinizin host kısmı daima aynı olacaktır (autoconfiguration kullandığınızı düşünürsek). Bu da aslında bir mahremiyet sorunu ortaya çıkartıyor. Yazının bu kısmında Windows 7 bir makinanın ipconfig çıktısına bakarsanız muhtemelen bir bağdaştırıcı altında 3 farklı IPv6 adresi göreceksinizdir ki link-local adresini saymıyorum! Bu çıktının beklediğimizden farklı olmasının nedeni istemcinin 3. katman kimliğine biraz olsun anonimlik katma çabasıdır diyebiliriz. Windows 7 makinanın IPv6 adreslemesindeki davranışı biraz daha karmaşık oluyor kısacası 🙂 Şöyle ki:

Öncelikle RA paketindeki M biti ne olursa olsun Windows 7 makina autoconfiguration ile bir IPv6 adresi türetiyor. Yani M=0 ise sadece autoconfiguration adresi oluyor, M=1 ise hem autoconfiguration adresi hem de DHCPv6’dan öğrenilen adres oluyor. Çıktıdaki fazladan adreslerden biri bu. (Hatta autoconfiguration, daha doğrusu prefix ve default gateway keşfi IPv6 adresi statik verilse bile gerçekleşiyor. Tabi bu varsayılan ayar devre dışı bırakmak mümkün) Fakat Windows 7 varsayılanda ikisini de kullanmıyor. Çıktıdaki diğer fazladan adres Geçici IPv6 adresi olarak geçiyor. İstemci dış network’le iletişime geçmek istediğinde bu adresi kullanıyor ve bu adres belli periyotlarla değişiyor. Sabit kalan IPv6 adresi ise istemcinin 3. katman kimliği gibi düşünülebilir. Bu kullanım sizi arayan kişilerin numaranızı biliyor olmaları gerektiği ama sizin (ve tabi herkesin) bir arama yaparken numaranızı gizleyebilme imkanınız olduğuna benzetiliyor. Geçici adres oluşturma da varsayılanda açık ama devre dışı bırakılabiliyor. Bu durumda istemci M=0 ise autoconfiguration adresini, M=1 ise DHCPv6 adresini kullanıyor.

Ayrıca varsayılanda IPv6 adreslerinin (link-local dahil) host kısmı EUI-64 ile türetilmiyor, rasgele oluşturuluyor. Bu özellik de devre dışı bırakılabiliyor.

Bunları da bildikten sonra ipconfig çıktısı gözümüze o kadar da kötü görünmüyor ve bir IPv6 uygulamasında karşımıza çıkabileceklere artık daha hazırlıklıyız 🙂 IPv6 oldukça geniş bir konu ve daha tecrübe edilecek çok şey var. Uygulayıp göreceğiz.

Bir sonraki yazıya kadar hoşçakalın

“IPv6 adresleme mekanizmaları” için 2 cevap

  1. Öncelikle verdiğiniz bilgiler için teşekkürker. Windows7 ve Vista’da bahsettiğiniz üzere varsayılan olarak otokonfigürasyonda EUI-64 algoritması kullanılmıyor. Bu özellik netsh komutlarıyla kaldırılabiliyor fakat Windows7’de her restart edişte bu komutları tekrar girmek gerekiyor. Bunu client tarafına bırakmadan halletmenin başka bir yolu var mı acaba?

  2. Merhaba
    Autoconfiguration zaten network ile haberleşmeden gerçekleşen bir olay. Dolayısıyla en azından network tarafından bu operasyona müdahale etmenin bir yolu yok.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir