Deneme ortamı
Önceki Linux Gezici IPv6 NASIL Sonraki
Deneme ortamı
Artık MIPL 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.
Şekil 6.2. 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. 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
# /etc/init.d/mobile-ip6 start
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
# /etc/init.d/mobile-ip6 start
R
Bizim Yönlendirici 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ı
Son yapılandırma network-mip6.conf dosyasındaki MIPv6 ayarlarıdır. Debian ve Slackware'de bu dosya /etc/ dizininde bulunur. (RedHat'de ise /etc/sysconfig/ dizinindedir.) Dosya, içeriğini kendi açıklayan türdedir.
HA
Ev yetkilisinin yapılandırma dosyası aşağıdaki ayarları içermelidir:
# cat /etc/network-mip6.conf

# Home Agent configuration file
FUNCTIONALITY=ha
DEBUGLEVEL=1
MIN_TUNNEL_NR=1
MAX_TUNNEL_NR=5
TUNNEL_SITELOCAL=yes
MN
Gezici Düğüm yapılandırma dosyası aşağıdaki gibi olmalıdır:
# cat /etc/network-mip6.conf

# Mobile Node configuration file
FUNCTIONALITY=mn
DEBUGLEVEL=1
TUNNEL_SITELOCAL=yes
MIN_TUNNEL_NR=1
MAX_TUNNEL_NR=3
HOMEDEV=mip6mnha1
HOMEADDRESS=fec0:106:2700::4/64  # MN's home adress
HOMEAGENT=fec0:106:2700::2/64    # HA's address
Artık gezici-IP'yi başlatabiliriz
# /etc/init.d/mobile-ip6 start
Starting Mobile IPv6: OK
Ev yetkilisi üzerinde, gezici-ip6'nın başladığını doğrulamak için ifconfig komutunu kullanabilirsiniz. Eğer tünel(ler)i, ip6tnl1, görüyorsanız gezici-ip6 başlamış demektir:
# ifconfig
eth1     Link encap:Ethernet  HWaddr 00:02:2D:2D:DE:79
          inet6 addr: fec0:106:2700::2/64 Scope:Site
          inet6 addr: fe80::202:2dff:fe2d:de79/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:618 errors:6 dropped:6 overruns:0 frame:6
          TX packets:1485 errors:22 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:87914 (85.8 KiB)  TX bytes:252596 (246.6 KiB)
          Interrupt:3 Base address:0x100

ip6tnl1  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00   
          UP POINTOPOINT RUNNING NOARP  MTU:1460  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:576 (576.0 b)  TX bytes:624 (624.0 b)

ip6tnl2  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00   
          UP RUNNING NOARP  MTU:1460  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

lo       Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)
1
Tünel faal ve bağlantılara hazırdır.
2
Diğer hazır tünel.
mipv6 çekirdek modüllerinin de yüklendiğini göreceksiniz (MN):
# lsmod
Module                  Size  Used by    Not tainted
mip6_mn                59888   0  (unused)
ipv6_tunnel            11448   1  [mip6_mn]
mip6_base              40728   0  [mip6_mn]
ipv6                  179764  -1  [mip6_mn ipv6_tunnel mip6_base]
...
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.
    -- page 8
Burada 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
#
# ifconfig eth0
eth0  Link encap:Ethernet  HWaddr 00:90:7D:F3:03:1A
      inet6 addr: fec0:106:2700:0:290:7dff:fef3:31a/64 Scope:Site   
      inet6 addr: fec0:106:2700::4/64 Scope:Site                    
      inet6 addr: fe80::290:7dff:fef3:31a/64 Scope:Link             
      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
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.
2
Asıl statik IPv6 adresimiz.
3
Sistem açılışında oluşturulan yerele özgü adres.
Önceki Üst Ana Başlık Sonraki
Linux için Gezici IPv6 Başlangıç Denemelerin Yapılması
Bir Linux Kitaplığı Sayfası