Broadband IPv6 Prefix Atama

https://www.ciscolive.com/online/connect/sessionDetail.ww?SESSION_ID=7934

1 – IPv6 address kullanımının loglanmasına dikkat etmek gerekiyor (accounting kayıtları içerisinde veya başka bir şekilde,dhcp logging). Dolayısı ile DHCPv6 kullanılıyor ise prefix atamalarının loglanmasına’da dikkat edilmesi gerekir. Ayrıca işletim sistemlerinin otomatik olarak oluşturduğu privacy extension içerisindeki adreslerde önemlidir. Servis sağlayıcı bazında sadece atanan prefix’in loglanması yeterlidir. Fakat kurumsal tarafdaki kullanım loglamalarında söz konusu privacy extensions içerisindeki adreslerin loglamasıda gerekmektedir. MAC adress güvenliği sağlandığı sürece, işletim sistemlerinin bu davranışı kapatılmalıbilir. Aksi takdirde kurumsal tarafda IPv6 kullanıım ve loglanması aşılması gereken önemli bir sorundur ve dikkat edilmesi gerekir (RFC 6724).

2 – Kullanıcılara /64 daha uzun prefix atması yapılamaz (Host-id 64 bit’den oluşmaktadır). Broadband forum /60 kullanımı önermiştir, kullanıcı networkünde farklı cihaz gurupları olmasına ve subnetleme ihtiyacına uygun olarak!

3 – 1’de değinildiği gibi işletim sistemlerinin IPv6 kullanımınada dikkat edilmelidir. Genelde tek bir IPv6 prefix’i kullanmamaktadırlar. Atanmış IPv6 prefix’i içerisinde birden fazla IPv6 adresi yaratıp kullanmaktadırlar (IPv6 temporary adresses, https://supportforums.cisco.com/thread/2130027 veya privacy extensions, RFC 6724). Ayrıca işletim sistemlerinin bu ipv6 adreslerini kullanımıda ilgi çekicidir. İletişim sürekli aynı ipv6 adresini kullanılarak yapılmamaktadır.

4 – Konunun sadece IPv6 prefix atama olmadığı, gateway, dns vb atamalarınında beraberinde yapılması gerektiği unutulmamalıdır. Dolayısı ile sadece SLAAC veya sadece DHCPv6 kullanımı mümkün olmıyabilir. SLAAC kullanılacak ise, büyük ihitmal ile servis sağlayıcı tarafından kontrol edilen CPE kullanılmalıdır. TR-69 vb araçlar ile CPE’nin lan tarafında dağıtacağı prefix, dns vs konfigurasyonu girilebilir. Aksi takdirde, prefix ataması kaldırılmış SLAAC (gateway ve RA anonsu için) ve DHCPv6 dns anonsu için kullanılmalıdır ( bu durumda prefix anonsu slaac veya dhcpv6’den bir kullanılarak yapılabilir, burada önemli olan CPE yapileceğidir. RA anonsları içerisinde DNS ve anonsu yapılabileceğine dair dökümanlar okudum, fakat bunun CPE tarafında desteklenmeside başka bir sorun (http://www.ietf.org/proceedings/84/slides/slides-84-6man-8.pdf). Aynı şekilde DNSv6 option içerisinde default gateway geliştirilmeside söz konusu. Tabi bunların mevcut cihazlar tarafından desteklenmeside (yazılım güncellemesi vs başka bir sorun). SLAAC ve DNSv6 karşılaştırılması http://blog.geoff.co.uk/2011/08/02/ipv6-automated-network-configuration/. Ayrıca bu konuda bir çok yazıda bulunabilir. RFC 6106 IPv6 Router Advertisement Options for DNS configuration. http://blog.ipspace.net/2014/03/cisco-ios-xe-supports-rfc-6106-rdnss.html

Cisco ISG ve IPv6 Prefix Atama :

PPP üzerine çalışma yapılmıştır (PPPoX). Broadband tarafında PPP kullanımı konusunda (bras ppp session), ip session kullanımıa göre daha fazla geliştirme vardır. Ayrıca PPP dual-stack kullanımı içinde daha uygundur. IP sessionlarda, IPv4 ve IPv6 ayrı sessionlar sayılmaktadır.

İncelemelerimi Cisco ASR1K ISG üzerinde gerçekleştirdim.

Auhentication kısmı genel olarak IPv4 ile aynıdır, PPP LCP ile authentication başlar. Authentication tamamlanmadan aaa sunucusunun, radius, karşı ucun IPv4 veya IPv6 olduğunu bilmesi olanaksızdır. Adres kısmıda authentication tamamlandıkdan sonra devreye girer (PPP NCP).Karşı uca adres atama yöntemi ise esas sorundur. IPv4 ve IPv6 için ayrı ayrı adres ataması gerçekleşir. RFC 2472,3162 detaylı bilgi için bakınız.

https://supportforums.cisco.com/docs/DOC-23871

Karşı uca adres atama :

Adres atama genel olarak iki aşamalı oluşmaktadır. BRAS ve Modem arasında, Modem ve son kullanıcı arasında. IPV4 kullanımında yaygın olarak NAT kullanıldığı için BRAS Modem’e IPv4/32 ataması yapar ve modem arka tarafda dhcp kullanarak NAT sesison’ı oluşturur. IPv6 kullanımında NAT’a gerek yoktur, unreal ip kullanımı tanımlanmamıştır. Dolayısı son uca adres atamasıda tasarım aşamasının içine girmektedir.

Bras –>(WAN) Modem (LAN)–> Son kullanıcı.

Modem ve kullanıcı arasındaki adres atama dhcpv6 üzerine kurulmalıdır. Son kullanıcı el ile bir tanım girmemelidir. Dolayısı ile son kullanıcı dhcpv6 ile aldığı prefix üzerinden dinamik olarak ipv6 adresleri oluşturur (işletim sistemleri birden fazla ipv6 adresleri türetir, buda başka bir sorun,privacy extensions). Ayrıca DHCP kullanılması durumunda, session yeniden kurulması vb gibi durumlarda prefix’in değişmesi söz konusu olabilir. Bu durumda eğer dhcp ile gönderilen prefixlerin lifetime 0 yapılır ise sorun olmaz. Boylece  hostlar eski prefix’i halen kabul ederken packet gonderirken yenisini kullanırlar. Cisco’da halen lifetime 0 yapılamıyor.

Buradaki diğer bir sorun ise modemlerin dhcpv6 kullanım şeklide tam oturmamıştır. Modemin LAN tarafı için dhcp kullanacağı kesindir. Dolayısı ile DHCPv6 için relay mı yapacağı veya server olarak mı davranacağı tasarım konusudur. Relay olarak davranması durumunda, BRAS tarafında zorluklar oluşabilir. Her bir DHCPv6 isteğine ayrı bir session gibi davranmak vs gibi durumlar vardır.   Buradaki ön görülen yöntem, modem’in Bras’den aldığı prefix’i dhcpv6 ile LAN tarafına dağıtmasıdır. Ayrıca DHCPv6 ile default route, çıkış noktası, gateway gönderilemez bu noktada RA ihtiyaç vardır.

Sorun BRAS ve Modem arasındaki prefix atama yöntemidir. IPCPv6 ile yerel olarak link üzerinde kullanılacak ipv6 adresi paylaşılır (link local). Ayrıca IPCPv6 ile framed-interface-id kullanımıda yapılır. Bu şekilde BRAS session için radius tarafından gönderilen bir değeri, IPCPv6 kullanarak karşı tarafa kullanımı için verebilir. Bu değer aynı zamanda accounting kayıtlarındada bulunur. Bir çok amaçla kullanılabilir (username’den türetilebilir, kullanıcıya atanan dhcpv6 ip prefix’i içerebilir, bunun kullanımı dhcpv6 kullanımında ileride belirtilecektir).

IPv6 ND ve DHCPv6 modem’e adres ataması için kullanılabilir. DHCPv6 kullanımındada stateless veya statefull sunucu kullanımına dikkat edilmelidir.

Cisco’nun DHCPv6 kullanımında bazı zorluklar vardır (ileride değişmesi umudu ile).

PPP LCP aşamasından sonra karşı uçdan alınan username/password radius authenticaiton ile gönderilir ve reply ile ipv6 prefix alınır (ISG bunu ilgili virtual-access interface’ine install eder). Daha sonra karşı uç DHCPv6 isteği gönderir (tabi modem/router ise slaac aşamasından sonra). Bu aşamada Cisco ISG (tabi eğer local pool tanımlı değil ise) radius’a access req gönderirir. Bu kullanıcı için hangi prefix’i kullanayım? Bu istek için username’i kullanıcının_username-dhcpv6 şeklinde oluşturarak gönderir (password boş). Radius’da kullanıcı için kullanılacak prefix’i delagated-ipv6-prefix attribute kullanarak geri döner.

http://blog.ipspace.net/2011/03/dhcpv6-radius-integration-cisco-way.html

Genelde esas zorluk burada başlamaktadır. Her bir kullanıcı için iki kere istek göndermek, radius’u dhcpv6 isteği sırasında gelen username’e göre uyum sağlaması vb işlemi karmaşıklaştırmaktadır. IPv4 kullanımında’da pool ve radius tabanlı ip ataması işlemlerinde ki mantık iznelebilse aslında oldukça uygun bir kullanım sağlanmış olur (Radius’dan ip geldi ise pool ignore et gibi. Buda radius’da statik ip tanımı yok ise pool’dan kullan gibi bir mantık kullanımına izin vermektedir). DHCPv6 uygulamasında ise buna benzer bir mantık veya konfigurasyon henüz yok. Dolayısı ile bu mantığı radius’a taşımak gerekiyor. Pool management’ı radius ile kurgulamak ise stalefull dhcpv6 kurmaya doğru gitmektedir.

Benim tercih ettiğim yöntem (mevcut olanak doğrultusunda) kullanıcıların hepsine statik ipv6 prefix atamaktır. Kullanıcılar host-id lerini dinamik olarak oluşturduğu için ip taramaya karşı kısmen güvenlik sağlanmıştır. Statik kullanılmış olsa bile IPv4 dinamik atamaya göre daha fazla taranması gereken ipv6 addresi oluşmaktadır 2^64 host-id. Tabi modem’in sıralı atama yapmadığı düşünülür ise!

Statik prefix atama ile aynı zamanda loglama sorunuda çözülmüş olur.

Cisco ISG kullanımında dhcpv6 kullanımındaki zorluk ise (dhcpv6 prefix’in radius’dan indirme) ikinci istek göndermesidir. Bununda ileride geliştirileceğini düşünmekteyim. Zira IOS tabanlı olarak bazı kısmı çözümler yapılabilmektedir.

http://blog.ipspace.net/2011/03/framed-ipv6-prefix-used-as-delegated.html

Benim kazara bulduğum diğer bir yöntem ise;

ipv6 dhcp pool dhcpv6
prefix-delegation aaa method-list default ! NOT DEFINED (tanımlı değil)
dns-server 2001:4860:4860::8888
dns-server 2001:4860:4860::8844

! Eğer burada tanımlı bir aaa method kullanılsa idi, dhcpv6 prefix için ikinci bir radius isteği gönderecekti. Aslında bu halen IOS tarafının tam olarak net olmadığını gösteriyor. Davranış IOS bazlı olarak değişmektedir.

interface Virtual-Template2
no ip address
no logging event link-status
load-interval 30
ipv6 unnumbered Loopback0
ipv6 enable
ipv6 mtu 1400
no ipv6 nd prefix framed-ipv6-prefix
ipv6 nd prefix default no-advertise
ipv6 nd other-config-flag
no ipv6 nd ra suppress
ipv6 dhcp server dhcpv6
ppp authentication pap pppoe
ppp authorization pppoe
ppp accounting pppoe
ppp multilink
ppp timeout idle 3600
end

Tabi bu yöntem gerçek ortamda kullanılamaz, büyük bir ihtimal ile bir bug ve bir sonraki sürüm içerisinde devam etmiyeceği belli değil.

Tüm bunların net olarak anlaşılması için ;

  • Framed-IPv6-Prefix (RADIUS IETF attribute 97)
  • Delegated-IPv6-Prefix (RADIUS IETF attribute 123)
  • Framed-IPv6-Pool (RADIUS IETF attribute 100)
  • Delegated-Ipv6-Pool (VSA 26-161)

attributelarının BRAS/BNG tarafından kullanımını tam olarak anlamak gerekir.

Junos için http://www.juniper.net/techpubs/en_US/junose14.3/information-products/topic-collections/broadband-access/index.html?topic-54451.html

Cisco’da henüz bu şekilde bir bilgi bulamadım. Kendi testlerim

Testler :

Modeme ipv6 ataması olarak dhcp kullandım, slaac’a hiç bakmadım.

1 – dhcp pool tanımı var ve pool ISG üzerinde tanımlı. Bu durumda dhcp ile atanan ipv6 prefix bilgisi accounting kayıtlarında bulunmuyor. Dolayısı ile dhcp logging yapmak gerekli.

ipv6 dhcp pool dhcpv6
prefix-delegation pool pppoe
dns-server 2001:4860:4860::8888
dns-server 2001:4860:4860::8844
ipv6 dhcp server dhcpv6
!
ipv6 local pool pppoe 2A02:FF0:200::/48 64
!
interface Virtual-Template2
no ip address
no logging event link-status
load-interval 30
ipv6 unnumbered Loopback10
ipv6 enable
ipv6 mtu 1400
no ipv6 nd prefix framed-ipv6-prefix
ipv6 nd prefix default no-advertise
ipv6 nd other-config-flag
no ipv6 nd ra suppress
ipv6 dhcp server dhcpv6
ppp authentication pap pppoe
ppp authorization pppoe
ppp accounting pppoe
ppp multilink
ppp timeout idle 3600
end

2 – dhcp server kısmında pool’u sildik ve radius ile atanacak prefix’i göndermeye çalıştık.Ayrı ayrı framed-ipv6-prefix ve delegated-ipv6-prefix attributelarını kullandık fakat dhcp sunucu bu atanan prefixleri kullanmadı.

3 –  Cisco’nun dhcpv6 aaa prefix delegation yöntemini ek olarak, framed-ipv6-prefix ve delegated-ipv6-prefix kullanımını denedik. Tek başına aaa prefix delegation, iknici ve değiştirilmiş useranem ile radius isteği kullandığı için pek mantıklı gelmedi. İlginç olan aaa methodu tanımlanmış olmasına rağmen eğer radius’dan framed-ipv6-prefix ve/veya delegated-ipv6-prefix birini almış ise iknici radius isteğini göndermeden bunlardan birini kullanıyor. Tek önemli nokta, delegated-ipv6-prefix ile atanan prefix accounting kaydı içerisinde bulunmuyor. Eğer iki attribute aynı anda var ise, ISG delagated ile atanmış olanı dhcp ile kullanıyor, framed-ipv6 ile atanan kullanılmıyor ama accounting kayıtları içinde bulunuyor, sadece framed-ipv6 bulunuyor. Eğer statik olarak bir atama methodu seçilmiş ise framed-interface-id attribute’da atanan prefix’e set edilmiş olması daha güvenli bir accounting kaydı anlamına gelir (delegated kullanılmış ise).

 

Yararlı linkler :

https://www.troopers.de/index.html