Deneme ortamı

Artık MIPv6 ile yamanmış çalışan bir çekirdeğiniz, kurulu araçlarınız ve başlangıç betikleriniz hazır olmalı. Eğer yolunda gitmeyen bir şeyler varsa önceki bölümleri dikkatlice gözden geçirmelisiniz.

Deneme

Denemelerimiz için kullanacağımız adresler yerel adresler olacaktır. Küresel adresleri de kullanmanız mümkündür ama yerel adreslere bağlantıların çalışmayacağını unutmayın! Deneme ortamımız şekilde görüldüğü gibi dört düğümden oluşuyor.

HA - Ev Yetkilisi
HA ev ağında bulunur ve adresi fec0:106:2700::2'dir, bir kablosuz arabirime sahiptir.

MN - Gezici Düğüm
MN "ev ağında" iken adresi fec0:106:2700::4'dir. Başka bir ağa gittiğinde ise yeni bir "konuma bağlı" adres üretir.

R - Bizim Yönlendirici
Ev ağından internete bağlayan yönlendiricidir. Sahip olduğu kablosuz arabirimin adresi fec0:106:2700::1, kablolu arabirimin adresi ise fec0:106:2300::2'dir.

AR - Erişilen Yönlendiricisi
AR ile R arasındaki bağlantı "internet" olması gerekirken deneme ortamımızda sadece çapraz kablo olacaktır (aslında herhangi bir ağ olabilir). AR iki arabirime sahiptir; R ile bağlantıyı sağlayan kablolu arabirimin adresi fec0:106:2300::1, kablosuz arabirimin adresi ise fec0:106:1100::1'dir.

Gezici IPv6 deneme ortamı

Gezici IPv6 deneme ortamı

Adım adım yapılandırma

Tamamen işlevsel IPv6 ağının hazırlanması

Gezici IP'yi denemeye başlamadan önce tamamen işlevsel bir IPv6 ağına ihtiyacımız var.

Not

Tüm düğümler birbirlerini pingleyebilmelidir. Burası kritiktir. Eğer, örneğin, AR HA'yı pingleyemiyor ise, bağlama (binding) güncellemesi olmayacaktır.

IPv6 kullanarak ağ oluşturmak için sadece özet bilgiler vereceğim. IPv6 ağı oluşturmakla ilgili daha fazla bilgi için Peter Bieringer'in yazdığı harika Linux IPv6 NASIL belgesini okuyabilirsiniz.

Burada basitlik için şifrelemeyi gözardı ettim - AMA kablosuz ağlarla ilgilendiğinizde HER ZAMAN şifreleme kullanmalısınız!

Uyarı

Farklı kablosuz ağların farklı ESSID'leri olacağını da unutmayın!

MN
Gezici Düğümün bir kablosuz arabirimi vardır. forwarding kapatılmalı fakat autoconf ve ra'lar kabul edilmelidir:

# iwconfig eth0 mode ad-hoc essid homenet enc off
# ifconfig eth0 inet6 add fec0:106:2700::4/64
# echo 0 > /proc/sys/net/ipv6/conf/eth0/forwarding
# echo 1 > /proc/sys/net/ipv6/conf/eth0/autoconf
# echo 1 > /proc/sys/net/ipv6/conf/eth0/accept_ra
# echo 1 > /proc/sys/net/ipv6/conf/eth0/accept_redirects

HA
Ev Yetkilisinin bir kablosuz arabirimi vardır. Fiziksel arabirimden aldığı paketleri sanal tünel arabirimine teslim etmek için normal yönlendirme kullanacağından forwarding açık olmalıdır.

Not

Bir öntanımlı rota (route) eklemelisiniz, aksi halde HA ziyaret edilen yerel ağdaki MN ile bağlantı sorunu yaşar. Mümkün olan çözümlerden biri HA'nın ev ağında öntanımlı yönlendirici olarak kullanılmasıdır.

# iwconfig eth0 mode ad-hoc essid homenet enc off
# ifconfig eth0 inet6 add fec0:106:2700::2/64
# echo 1 > /proc/sys/net/ipv6/conf/eth0/forwarding
# echo 0 > /proc/sys/net/ipv6/conf/eth0/autoconf
# echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra
# echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_redirects
# ip  route add ::/0 via fec0:106:2700::1

R
Ev Yönlendiricisi biri kablolu diğeri kablosuz iki arabirime sahiptir. Yönlendericide forwarding açık olmalıdır.

# ifconfig eth0 inet6 add fec0:106:2300::2/64
# iwconfig eth1 mode ad-hoc essid homenet enc off
# ifconfig eth1 inet6 add fec0:106:2700::1/64
# echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
# echo 0 > /proc/sys/net/ipv6/conf/all/autoconf
# echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
# echo 0 > /proc/sys/net/ipv6/conf/all/accept_redirects
# ip route add fec0:106:1100::/64 via fec0:106:2300::1

AR
Erişilen Yönlendirici de (ziyaret edilen ağdaki) biri kablolu diğeri kablosuz iki arabirime sahiptir. forwarding açık olmalıdır.

# ifconfig eth0 inet6 add fec0:106:2300::1/64
# iwconfig eth1 mode ad-hoc essid visitnet enc off
# ifconfig eth1 inet6 add fec0:106:1100::1/64
# echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
# echo 0 > /proc/sys/net/ipv6/conf/all/autoconf
# echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
# echo 0 > /proc/sys/net/ipv6/conf/all/accept_redirects
# ip route add fec0:106:2700::/64 via fec0:106:2300::2

Proc değişkenlerini değiştirmek yerine sysctl kullanabilirsiniz.

Not

Deneme ortamımızda statik rotalar oluşturduğumuz için her konaktan diğerlerini pingleyebilmeniz gerekir.

Gezici IPv6 Yapılandırması

make install komutunu çalıştırdığınızda ne init betikleri ne de yapılandırma dosyaları yüklenmeyecektir. Örnek yapılandırma dosyaları kaynak kodun extra/ dizininde bulunabilir. mip6d.conf(5) kılavuz sayfası da yardımcı olabilir. Dosya, içeriğini kendi açıklayan türdedir.

HA
Ev yetkilisinin yapılandırma dosyası aşağıdaki ayarları içermelidir:

# Mobile IPv6 configuration file: Home Agent
#
# filename: /etc/mip6d.conf         

NodeConfig HA;
         
## If set to > 0, will not detach from tty
DebugLevel 10;
         
## List of interfaces where we serve as Home Agent
Interface "eth0";

##
## IPsec configuration
##
UseMnHaIPsec enabled;

IPsecPolicySet {
        HomeAgentAddress fec0:106:2700::2;
        HomeAddress fec0:106:2700::2/64;

        IPsecPolicy HomeRegBinding UseESP;
        IPsecPolicy MobPfxDisc UseESP;
        IPsecPolicy TunnelMh UseESP;
  }

MN
Gezici Düğüm yapılandırma dosyası aşağıdaki gibi olmalıdır:

# Mobile IPv6 configuration file: Mobile Node
#
# filename: /etc/mip6d.conf         

NodeConfig MN;

## If set to > 0, will not detach from tty
DebugLevel 10;

MnDiscardHaParamProb enabled;

Interface "eth0";

MnHomeLink "eth0" {
        HomeAgentAddress fec0:106:2700::2;
        HomeAddress fec0:106:2700::4/64;
 }

##
## IPsec configuration
## 

UseMnHaIPsec enabled;

IPsecPolicySet {
        HomeAgentAddress fec0:106:2700::2;
        HomeAddress fec0:106:2700::4/64;

        IPsecPolicy HomeRegBinding UseESP;
        IPsecPolicy MobPfxDisc UseESP;
        IPsecPolicy TunnelMh UseESP;
 }

IPSec Yapılandırması

Yazılacak.

Erişilen Yönlendirici üzerinde radvd yapılandırması

MN (gezici düğüm) yeni bir ağa geldiğinde, bu ağın yerel adreslerine göre yapılandırmasını yapar. Eğer başarılı olursa sıradaki aşamaya geçer. Bu aşamayı [RFC2462] (IPv6 Stateless Address Autoconfiguration) belgesinden aktarıyorum:

 

Otomatik yapılandırmanın sıradaki aşaması bir Yönlendirici Bilgilendirmesinin bulunmasını ya da Yönlendirici bulunmadığı bilgisinin edinilmesini kapsar. Eğer yönlendirici mevcut ise, istemcinin otomatik yapılandırmasının tipini de içeren Yönlendirici Bilgilendirmesini göndermelidir. Yönlendirici yoksa duruma bağlı otomatik yapılandırma kullanılmalıdır.

Yönlendiriciler Yönlendirme Bilgilendirmesini periyodik olarak gönderirler ama başarılı bilgilendirmeler arasındaki gecikmeler genellikle otomatik yapılandırma yapan istemcinin beklemek istediğinden daha uzun sürer. İstemciler bilgilendirmeyi çabucak alabilmek için bir ya da daha fazla Yönlendirici Talebini tüm yönlendiricilerin çoklu gönderim grubuna gönderirler.

 
--sayfa 8 

Burada Linux IPv6 Router Advertisement Daemon (RADVD) kullanıyoruz.

IPv6 Durumsuz Adres Yapılandırması hakkında ayrıntılı bilgi edinmek için [RFC2462] belgesini okuyun.

RADVD'yi AR'nin kablosuz arabirimi üzerinde yapılandıracağız. radvd.conf dosyası aşağıdakileri içermelidir:

    # cat /etc/radvd.conf
    interface eth1
    {
          AdvSendAdvert on;
          AdvIntervalOpt on;

          MinRtrAdvInterval 3;
          MaxRtrAdvInterval 10;
          AdvHomeAgentFlag off;

          prefix fec0:106:1100::/64
          {
              AdvOnLink on;
              AdvAutonomous on;
              AdvRouterAddr on;
          };
    };

radvd'yi başlatın:

# /etc/init.d/radvd start

Artık radvd iletilerinin gerçekten düzenli olarak gönderilip gönderilmediğini kontrol etmek için radvdump komutunu kullanabiliyor olmalısınız:

    # radvdump
    Router advertisement from fe80::202:2dff:fe54:d1b2 (hoplimit 255)
    Received by interface eth1
          # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
          AdvCurHopLimit: 64
          AdvManagedFlag: off
          AdvOtherConfigFlag: off
          AdvHomeAgentFlag: off
          AdvReachableTime: 0
          AdvRetransTimer: 0
          Prefix fec0:106:1100::/64
                  AdvValidLifetime: 2592000
                  AdvPreferredLifetime: 604800
                  AdvOnLink: on
                  AdvAutonomous: on
                  AdvRouterAddr: off
          AdvSourceLLAddress: 00 02 2D 54 D1 B2

Not

HA üzerinde radvd kullanır ve autoconf'u (proc içinde) yetkilendirirseniz statik adresinizin yanı sıra MN üzerinde otomatik oluşturulan (gereksiz) bir IPv6 adresiniz daha olacaktır.

Ev yetkilisi üzerinde radvd yapılandırması

MN'nin ne zaman evde olduğunu bilebilmesi için HA, RA'lar da göndermelidir. Bu yüzden HA üzerinde de radvd'yi yetkilendirilmeliyiz. /etc/radvd.conf dosyası aşağıdakileri içermelidir:

     # cat /etc/radvd.conf
     interface eth0
     {
        AdvSendAdvert on;
        MaxRtrAdvInterval 3;
        MinRtrAdvInterval 1;
        AdvIntervalOpt off;
        AdvHomeAgentFlag on;
        HomeAgentLifetime 10000;
        HomeAgentPreference 20;
        AdvHomeAgentInfo on;
        prefix fec0:106:2700::2/64
        {
          AdvRouterAddr on;
          AdvOnLink on;
          AdvAutonomous on;
          AdvPreferredLifetime 10000;
          AdvValidLifetime 12000;
        };
      };

HA üzerinde radvd iletilerinin gönderilip gönderilmediğini kontrol etmek için radvdump komutunu kullanın:

# radvdump
Router advertisement from fe80::202:2dff:fe54:d11e (hoplimit 255)
Received by interface eth0
    # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
    AdvCurHopLimit: 64
    AdvManagedFlag: off
    AdvOtherConfigFlag: off
    AdvHomeAgentFlag: on
    AdvReachableTime: 0
    AdvRetransTimer: 0
    Prefix fec0:106:2700::2/64
            AdvValidLifetime: 12000
            AdvPreferredLifetime: 10000
            AdvOnLink: on
            AdvAutonomous: on
            AdvRouterAddr: on
    AdvSourceLLAddress: 00 02 2D 54 D1 1E
    AdvHomeAgentInfo:
            HomeAgentPreference: 20
            HomeAgentLifetime: 1000

Ayrıca MN'nin (evdeyken) RADVD mesajlarına dayanan yeni bir adres ürettiğini göreceksiniz.

# ifconfig eth0
    eth0  Link encap:Ethernet  HWaddr 00:90:7D:F3:03:1A  
          inet6 addr: fec0:106:2700::4/64 Scope:Site                  1
          inet6 addr: fe80::290:7dff:fef3:31a/64 Scope:Link           2
          inet6 addr: fec0:106:2700:0:290:7dff:fef3:31a/64 Scope:Site 3
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:513 errors:89 dropped:89 overruns:0 frame:85
          TX packets:140 errors:41 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:56084 (54.7 Kb)  TX bytes:19212 (18.7 Kb)
          Interrupt:3 Base address:0x100

1

Asıl statik IPv6 adresimiz.

2

Sistem açılışında oluşturulan yerele özgü adres.

3

Otomatik oluşturulan yeni (gereksiz) adres. autoconf değerini /proc/sys/net/ipv6/conf/eth0/autoconf dosyasında 1 yaptığımız için MN HA'nın öneki ve kendi MAC adresini birleştirerek bu yeni adresi oluşturur. Bu adresin oluşturulmasından kaçınılabileceğini sanmıyorum.