Yönlendirme
Önceki TCP/IP Sonraki
Yönlendirme
Daha önce de belirtildiği gibi birden fazla ağa fiziksel bağlantısı bulunan ve ağlar arası bilgi paketlerinin geçişine olanak tanıyan araçlara yönlendirici (router) adı verilir.
İki ayrı ağda yeralan makinaların haberleşmesine imkan tanıyan yönlendiriciler, kendilerine gönderilen paketleri bir ağdan diğerine iletirler.
Herhangi bir ağ içerisinde yer alan makinalar aynı IP ağ içerisinde bulunan makinalarla (ağ yapılandırması doğru olduğu sürece) haberleşebilirler. Başka adreslere ulaşabilmek için bulunulan ağ dışındaki ağlarla bağlantısı olan ve o ağ üzerinde bulunan bir makina ile haberleşmeleri gereklidir. Bu makina bilgisayar tanımlarında gateway (yönlendirici, arabirim, arayol) olarak verilir.
Minimum yönlendirme, bir ağa bağlı olmayan makinalarda, ifconfig yardımıyla yapılan yönlendirmedir. En çok kullanılan statik yönlendirme çeşidinde, az sayıda arayol ile dışarıya bağlı olan bir makinada, route komutuyla yapılır. Aynı adrese ulaşan birden fazla arayol olması durumunda ise, kendi yönlendirme tablosunu ağın durumuna göre değiştirebilen dinamik yönlendirmeye başvurulabilir.
Linux'un yönlendirici olarak kullanılmasına bir örnek verilebilir. Elimizde var olduğunu bildiğimiz iki ağ olsun. Bu ağlardan birincisini, 144.122.71.0 ağı, diğeri de 144.122.1.0 ağı olarak kabul edelim. 144.122.71.0 ağının İnternet'e bağlanabilmesi için 144.122.1.0 ağına ulaşması gereklidir. Yönlendirici olarak kullanılacak makinayı 71.0 ağında kurup gerekli yönlendirme talimatları verildiği anda bu ağa bağlı olan diğer makinalar da İnternet'e açılabilecektir.
Örnek olarak 144.122.71.0 ağı üzerindeki bir makina için ifconfig satırı
ifconfig eth0 144.122.71.1 broadcast 144.122.71.255 netmask 255.255.255.0
olarak görünüyor. Bu makinanın yönlendirici görevi yapabilmesi için route komutu kullanılır. Bu sayede bu bilgisayar, diğerlerine ulaşacaktır.
route add -net 144.122.71.0 netmask 255.255.255.0 dev eth0
Bu, 144.122.71.0 ağında olan makinaların eth0 kartı üzerinden erişilebileceğini gösterir. Diğer adreslere erişebilmek için ise bir çıkışa (gateway) ihtiyaç duyulmaktadır.
route add default gw 144.122.71.1 dev eth0
Bu satır sayesinde eldeki tablo yardımıyla çözümlenemeyen adreslere gitmesi gereken tüm paketler 144.122.71.1 üzerinden gönderilmektedir. Bu durumda bu makinanın paketleri nereye göndereceğini bildiği varsayılmaktadır.
Bu makina içinde iki adet ethernet bağlantısı bulunmaktadır. Bunlardan biri yönlendiriciyi 144.122.71.0 ağına bağlarken diğeri 144.122.1.0 ağına bağlamaktadır. İlk olarak bu iki kart için gereken tanımlamalar /etc/rc.d/rc.inet1 içerisinde aşağıdakine benzer şekilde tanımlanmıştır.
ifconfig eth0 144.122.71.1 broadcast 144.122.71.255 netmask 255.255.255.0
ifconfig eth1 144.122.1.200 broadcast 144.122.71.255 netmask 255.255.255.0
Birinci ethernet kartı için eth0, ikinci ethernet kartı için de eth1 kısaltmaları kullanılabilir. Doğal olarak her iki ağ için bir 'route' satırı gerekmekte:
route add -net 144.122.71.0 netmask 255.255.255.0 dev eth0
route add -net 144.122.1.0 netmask 255.255.255.0 dev eth1
Bu sayede diğer makinalardan farklı olarak yönlendirici hem 144.122.1.0 ağı, hem de 144.122.71.0 ağı üzerindeki adreslere direk ulaşabilmektedir. Diğer adreslere ulaşabilmek için benzer bir yöntem ile 144.122.1.0 ağı üzerindeki arayola (gateway) yönlendirme yapılır.
route add default gw 144.122.1.200 dev eth1
Bu çeşit yönlendirmeye statik yönlendirme adı verilir. Burada tüm bağlantılar bir tablo halinde verilmiştir. Birbiri arkasına ağ eklendiği zaman statik yönlendirme basitlik avantajını kaybetmeye başlar. Bu amaçla yönlendiricilerin kendi aralarında bildikleri yolları (yönlendirme bilgilerini) birbirlerine aktardıkları dinamik yönlendirme kullanılır.
Ağa bağlanmak amacıyla birden fazla kart kullanıyorsanız, arp komutunu incelemenizi tavsiye ederim. Bu komut pekçok seçenek alır ve sistem yöneticisinin Linux üzerindeki ağı kontrolünü kolaylaştırır.
# arp -a
           IP address      HW type                 HW address
           191.72.1.3      10Mbps Ethernet         00:00:C0:5A:42:C1
           191.72.1.2      10Mbps Ethernet         00:00:C0:90:B3:42
           191.72.2.4      10Mbps Ethernet         00:00:C0:04:69:AA
Birden Fazla Ethernet Kartının Tanıtılması
Yukarıda örneğini verdiğimiz Linux yönlendirici üzerinde iki ethernet kartı bulunuyor. Bu sayede Linux makinası iki ethernet ağı arasında bir yönlendirici olarak kullanılabilmektedir. Bir Linux'a birden fazla ethernet kartı takmak mümkündür. Bu kartları takarken aşağıdaki maddelere dikkat etmek gerekir:
  1. Çekirdek içerisinde her iki kart için destek bulunmalıdır.
  2. Ethernet kartları sistemdeki diğer IO ve IRQ ayarlarını çakışmayacak şekilde ve farklı değerlerde olmalıdır.
Birden fazla ethernet kartı (ya da gibi herhangi iki veya daha fazla PPP, SLIP gibi ağ bağlantısı) olan makina bir yönlendirici olarak kullanılacaksa, çekirdek IP FORWARDING desteğiyle derlenmelidir. Bunun yanı sıra Linux'unuzun birinci görevi yönlendiricilik olacaksa optimize as router sorusuna da `y' yanıtı vermeniz yararlı olacaktır.
IP: forwarding/gatewaying (CONFIG_IP_FORWARD) [N/y/?] y
...
IP: optimize as router not host (CONFIG_IP_ROUTER) [N/y/?] y
Linux açılırken çekirdek tanıdığı donanımları teker teker arayarak bulmaya çalışır (probing). Birden fazla ethernet kartı kullanımına sık raslanmadığından Linux ilk ethernet kartını bulduktan sonra ikinci ve daha fazla ethernet kartı aramadığından iki kartınız bile olsa Linux sadece birini görecektir. Çekirdeğe ethernet kartı ile ilgili parametreler vererek birden fazla ethernet kartının açılışta bulunması sağlanabilir. LILO kullanıldığı zaman /etc/lilo.conf içinde
append="ether=0,0,eth1"
Yukarıdaki paramatre ile çekirdek ikinci bir ethernet kartını (eth1) da arayacaktır. Ayni şekilde arka arkaya ether=.... parametreleri vererek varsa üçüncü, dördüncü ve daha fazla ethernet kartının aratılması da mümkündür. Ethernet kartlarınızın adreslerini biliyorsanız, kartların yanlış sırayla bulunması tehlikesini de önlemek için,
append="ether=5,0x340,eth0 ether=15,0x300,eth1"
gibi bir satır eklenmesi yeterli olacaktır. Burada eth0 isimli bağlantı IRQ 5 ve IOBASE 0x340 ve diğer ethernet bağlantısı eth1 IRQ 15 ve IOBASE 0x300 olacak şekilde ayarlanır, bu durumda çekirdek bir daha kartların hangi adres ve IRQ'da olduğuna dair tahmin yürütmez, girilen değerlerde bulunan kartları bulmaya çalışır.
Sistem açıldıktan sonra gerçekten istenen kartların istenen adreste çalıştığına emin olmak için /var/adm/messages dosyasına bakabilirsiniz ya da dmesg komutuyla çekirdek mesajlarını görebilirsiniz.
Önceki Üst Ana Başlık Sonraki
Internet'e Bağlanma Başlangıç NFS
Bir Linux Kitaplığı Sayfası