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:
Çekirdek içerisinde her iki kart için destek bulunmalıdır.
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
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.