6. iproute2 multiple routing tables - Çoklu ( katlı ) routing tabloları

25 March, 2009 (22:43) | iproute2 | By: alper

Linux Policy Routing Structures yazımda Multiple Routing tables’in ne olduğundan bahsetmiştim şimdi iproute2 ile bunun nasıl yönetildiğine bakalım.

Multiple Routing tables’i kullanmak için kernel’in CONFIG_IP_ROUTE_MULTIPATH=y olarak derlenmiş olması gerekiyor. güncel linux sürümlerinin hepsinde mevcuttur. Yapmış olduğum tüm örnekler Archlinux’da uygulanmıştır. Debian,Ubuntu,Slackware,Centos,Fedora üzerinde sadece genel kontrolleri yaptım herhangi bir soruna rastlamadım.

Mevcut tabloların görüntülenmesi :

Mevcut olan tablolar  /etc/iproute2/rt_tables dosyası içerisinde yer alır,

bash-3.2# cat /etc/iproute2/rt_tables
#
# reserved values
#
255    local
254    main
253    default
0    unspec
#
# local
#
#1    inr.ruhep
bash-3.2#

Yeni Tablo eklenmesi :

Bundan pek tatmin olmadığımı açıkça belirteyim, yani iproute2 paketinin bukadar ayrıntılı ve kapsamlı düşünülmüş olmasına karşın, table in sadece dosyaya eklenerek yönetilmesi, ve default routing priority gibi özelliklerin tanımlananaması ilginç…

örnek bir network yapalım :

örnek

Şimdi networka ve networkb için iki yeni tablo ekleyelim.

bash-3.2# echo “10 networka” >> /etc/iproute2/rt_tables
bash-3.2# echo “20 networkb” >> /etc/iproute2/rt_tables
bash-3.2# cat /etc/iproute2/rt_tables
#
# reserved values
#
255    local
254    main
253    default
0    unspec
#
# local
#
#1    inr.ruhep
10 networka
20 networkb
bash-3.2#

Tabloların oluşturulması bukadar basit, ilerde oluşabilecek ekstra ihtiyaçlarda okunabilirliği bozmamak için 10 ve 20 nolu tablo isimleri verdim tabiki 1 ile 252 arası istediğiniz tablo numarasını kullanmakta özgürsünüz. peki ekstra nasıl bir ihtiyaç olabilir ? local e eklediğimiz bir web server i olduğunu düşünelim yada mail server’i dışarıdan gelen paketleri bu hostlara yönlendirmek için ekstra tablo kullanmak isteyebilirsiniz, yada en azından DMZ tablosu. Şimdilik örneğimizi basit tutalım.

tablolarla ilgili routing eklenmesi :

ip route add from 192.168.0.1/24 via 1.1.1.1 dev eth0 table networka prio 100

ip route add from 192.168.0.1/24 via 2.2.2.2 dev eth1 table networkb prio 200

şimdi kendi sistemimde bu komutlar hata vereceği için benzer bir örneği interface ve gateway i değiştirerek yaptım (olası hatalara karşı  tüm yazılarımdaki örnekleri mutlaka uygulayıp deneyerek koyuyorum ):

bash-3.2# ip route add from 192.168.0.1/24 via 10.70.20.1 dev wlan0 table networka prio 100
bash-3.2# ip route show table networka
default via 10.70.20.1 dev wlan0  metric 100
bash-3.2#

Sanırım ayrıntılara ip route2 ile temel static routing tablosu yönetmek yazımda değinmiştim. burada priority tanımlaması yaptık ekstradan.

Not : Yeni bir routing girdisi yaptığınızda Route Cache Flush yapmayı unutmayınız.

Comments

Comment from ali korkmaz
Time 06/10/2009 at 7:35 pm

tesekkurler, cok guzel bir kaynak

Comment from Yavuz ALNIAK
Time 12/30/2009 at 9:33 pm

Selamlar! Dökümanlarınız çok açıklayıcı doyurucu.
Benim size bir sorum olacak.
http://yvz.ath.cx/programs/multihome-loadbalancing/natforwarding.pps adresindeki şemada bir sorunum var. Cevaplayabilirseniz veya telefonla temasa geçebilirsek sevirim.

Comment from alper
Time 12/31/2009 at 10:29 am

Dökümana baktım aslında sorunun zamanlaması süper :) şu an yazdığım bir yazı var bugün veya yarın yayınlicam o yazı senin sorununu tamamen çözer, yazıyı çabuk yayınlamaya çalışıcam tek linux server ile de bu işi çözebilirsin , senin yapına benzer bir örnek de oraya ekliyeceğim bakarsın takıldığın yer varsa yeniden sorarsın ona göre bir şeyler daha ekleriz.

Comment from Yavuz ALNIAK
Time 01/04/2010 at 5:03 pm

hocam yazıyı yazdığınızda bana mail atabilirseniz linkini sevinirim. teşekkürler şimdiden

Comment from alper
Time 01/04/2010 at 11:18 pm

ayın 31 inde yazdım yazıyı ama haber veremedim kolay gelsin

Write a comment