| |||||||
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.
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.
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! | |
# 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 |
![]() | 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 |
# 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 |
# 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. | |
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.
# 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;
} |
# 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;
} |
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. | |
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.
| ||||||||||