Kurumsal Network Kurulumu

Yönlendirme Tablosu Nedir? Statik ve Varsayılan Rota

Yönlendirme tablosu nedir: bağlı, statik ve varsayılan rota, en uzun önek eşleşmesi, metrik ve yedek hat, dönüş rotası. Linux lab'ında ölçülmüş örneklerle.

İlker Pehlivan

Yönlendirme tablosu, bir cihazın her paket için “bu adres hangi kapıdan, kime gönderilecek?” sorusunun cevabını tuttuğu listedir. Her satır bir hedef ağ ve bir sonraki durak (ağ geçidi) ya da çıkış arayüzü taşır. Paket geldiğinde cihaz, hedef adresi kapsayan en dar satırı seçer ve paketi oraya verir. Bilgisayarın, sunucunun, switch’in ve firewall’un her birinde böyle bir tablo vardır.

Tabloyu bir Linux sunucusunda, birbirine bağlı beş ayrı ağ ortamıyla kurdum ve dört soruyu ölçtüm:

  1. Varsayılan rota yoksa paket ne oluyor?
  2. İki satır aynı adresi kapsıyorsa hangisi seçiliyor?
  3. Hat kopup geri gelince tablo ne oluyor?
  4. Dönüş rotası yazılmamışsa cevap nereye gidiyor?

En öğretici bulgu sonuncusu oldu: istek karşıya ulaştı ama karşı tarafın tablosunda dönüş satırı olmadığı için tek cevap çıkmadı.

Süpermarket şubesinin arka odasında bir duvar haritası düşünün. Harita iç içe üç çizgiden oluşur: ülke, bölge ve ilçe. Her bölgenin kendi aracı vardır. Görevli bir koliyi gönderirken adresi haritada bulur ve adresi kapsayan en küçük bölgenin aracına verir; haritadaki hiçbir çizginin içine düşmeyen adresler merkez depoya gider. Yönlendirme tablosu bu haritadır; satırlar bölgeler, araçlar da sonraki duraklardır.

Bu yazı ağ protokolleri rehberimizin “Taşımak” ailesine bağlıdır. Kurumsal Network Kurulumu hizmetimizde şubeleri, hatları ve firewall’ları birbirine bağlarken her cihazın tablosunu bu yazıdaki mantıkla okuyoruz.

Yönlendirme tablosu benzetmesi: süpermarket şubesinin arka odasında iç içe üç bölgeli duvar haritası, görevli en küçük bölgeyi gösterip koliyi o bölgenin küçük kamyonetine veriyor, arka kapıda üç araç bekliyor
Adres birden çok bölgenin içine düşüyorsa koli en küçük bölgenin aracıyla gider. Hiçbir bölgeye düşmeyen adres merkez depoya gider. Yönlendirme tablosu da paketi, adresi kapsayan en dar satıra göre gönderir.

Yönlendirme Tablosu Nedir? Hedef Ağ, Sonraki Durak ve Arayüz

Lab’daki yönlendiricinin (dört ağa bağlı bir Linux ad alanı) tablosu, rotaları ekledikten sonra şöyle görünüyor (ip route):

Çıktı
default via 192.0.2.2 dev r-u1 metric 10
default via 198.51.100.2 dev r-u2 metric 20
10.0.0.0/8 via 192.0.2.2 dev r-u1
10.1.1.0/24 dev r-a proto kernel scope link src 10.1.1.1
10.2.2.0/24 dev r-b proto kernel scope link src 10.2.2.1
10.20.0.0/16 via 198.51.100.2 dev r-u2
192.0.2.0/30 dev r-u1 proto kernel scope link src 192.0.2.1
198.51.100.0/30 dev r-u2 proto kernel scope link src 198.51.100.1

Her satır üç sorunun cevabıdır:

  1. Hedef ağ: 10.20.0.0/16 gibi bir önek. /16, adresin ilk 16 bitinin ağı belirlediğini söyler; önekin ne anlattığını IP adresi yazımızın CIDR bölümünde anlattık. default satırı her adresi kapsayan 0.0.0.0/0 önekidir.
  2. Sonraki durak: via 198.51.100.2, paketin teslim edileceği komşu yönlendiricinin adresi. Bağlı ağ satırlarında sonraki durak yoktur; paket doğrudan hedefe teslim edilir.
  3. Çıkış arayüzü: dev r-u2 paketin çıkacağı bacağı gösterir. metric de aynı hedefe giden satırlar arasında sırayı belirler.

Bağlı Rota, Statik Rota ve Varsayılan Rota

Tablodaki satırlar üç yerden gelir ve üçü de yukarıdaki çıktıda duruyor.

Bağlı rota kendiliğinden gelir. Bir arayüze adres verildiği anda o adresin ağı tabloya girer. Lab’daki istemci A’ya yalnız 10.1.1.10/24 adresini verdim ve tablosunda tek satır vardı:

Çıktı
10.1.1.0/24 dev a0 proto kernel scope link src 10.1.1.10

proto kernel, satırı kimsenin yazmadığını, çekirdeğin adresten türettiğini söylüyor.

Varsayılan rota, hiçbir satıra uymayan paketlerin gideceği yerdir. A’nın tablosunda o yokken, başka bir ağdaki B’ye ping attım:

Çıktı
ping: connect: Network is unreachable

Paket kabloya hiç çıkmadı; A, bu adresi nereye göndereceğini bilmediği için göndermeyi denemedi bile. Tabloya default via 10.1.1.1 ekleyince paket yönlendiriciye gitti. Bilgisayarlarda bu satırı çoğu zaman DHCP’nin verdiği ağ geçidi yazar; yönlendirici ve firewall’da ise satırı genellikle elle yazar ya da servis sağlayıcının hattından alırsınız.

Statik rota, belirli bir ağa giden yolu elle yazılan satırdır: 10.20.0.0/16 via 198.51.100.2 gibi. Şubeleri, VPN’leri ya da ikinci bir hattı olan ağlar bu satırlarla birbirine bağlanır. Çok sayıda şube ve hat olduğunda satırları elle yazmak yerine cihazların birbirine rota öğrettiği protokoller devreye girer (OSPF, BGP); bunlar ağ protokolleri rehberimizin Taşımak bölümünde duruyor.

Statik rotanın bir kuralı daha lab’da çıktı: sonraki durak, doğrudan bağlı bir ağda olmalıdır. Yönlendiriciye bağlı olmadığı bir ağdaki adresi sonraki durak olarak yazmayı denedim:

Çıktı
Error: Nexthop has invalid gateway.

Cihaz, paketi teslim edeceği komşuya kendi bacaklarından birinden ulaşabilmelidir; uzaktaki bir adres sonraki durak olamaz.

Paket Hangi Satırı Seçer? En Uzun Önek Eşleşmesi

Yukarıdaki tabloda bir adres birden çok satıra uyabilir. 10.20.5.5 adresi hem 10.0.0.0/8 satırının hem 10.20.0.0/16 satırının hem de varsayılan rotanın içine düşer. Cihazın hangisini seçtiğini ip route get ile sordum:

Çıktı
10.20.5.5 via 198.51.100.2 dev r-u2 src 198.51.100.1 uid 0
10.30.1.1 via 192.0.2.2 dev r-u1 src 192.0.2.1 uid 0
10.2.2.20 dev r-b src 10.2.2.1 uid 0
1.1.1.1 via 192.0.2.2 dev r-u1 src 192.0.2.1 uid 0
HedefUyan satırlarSeçilen
10.20.5.5/0, /8, /1610.20.0.0/16
10.30.1.1/0, /810.0.0.0/8
10.2.2.20/0, /8, /24 (bağlı)10.2.2.0/24
1.1.1.1yalnız /0varsayılan rota, metrik 10

Kural tek cümledir: en uzun önek kazanır. Önek uzadıkça satır daha az adresi kapsar, yani daha özeldir. Satırların tablodaki sırası ya da yazılış sırası seçimi etkilemez.

Örnekteki mağaza şubesinde bu, koliyi adresi kapsayan en küçük bölgenin aracına vermektir: adres ilçenin içindeyse bölge aracı beklemez, ilçenin aracı götürür.

Aynı Hedefe İki Rota: Metrik ve Yedek Hat

Önekler eşit olduğunda karar metriğe kalır. Yönlendiricide iki varsayılan rota vardı: birinci hat üzerinden metrik 10, ikinci hat üzerinden metrik 20. 1.1.1.1 metriği küçük olanı, birinci hattı seçti. Sonra birinci hattın arayüzünü kapattım ve tabloya yeniden baktım:

Çıktı
default via 198.51.100.2 dev r-u2 metric 20
10.1.1.0/24 dev r-a proto kernel scope link src 10.1.1.1
10.2.2.0/24 dev r-b proto kernel scope link src 10.2.2.1
10.20.0.0/16 via 198.51.100.2 dev r-u2
198.51.100.0/30 dev r-u2 proto kernel scope link src 198.51.100.1

Kapanan hattan giden iki satır (metrik 10’lu varsayılan rota ve 10.0.0.0/8) tablodan silindi. Metrik 20’li rota tek başına kaldı ve 1.1.1.1 artık ikinci hattan gidiyor. Bir yan etki de var: 10.30.1.1 için /8 satırı gittiği için adres varsayılan rotaya düştü ve o da ikinci hattan çıkıyor. Yedek hat, metriği yüksek tutulmuş ikinci bir rotadan ibarettir; birincisi tablodan düşünce devreye girer.

Asıl sürpriz hat geri gelince çıktı. Arayüzü yeniden açtım:

Çıktı
default via 198.51.100.2 dev r-u2 metric 20
10.1.1.0/24 dev r-a proto kernel scope link src 10.1.1.1
10.2.2.0/24 dev r-b proto kernel scope link src 10.2.2.1
10.20.0.0/16 via 198.51.100.2 dev r-u2
192.0.2.0/30 dev r-u1 proto kernel scope link src 192.0.2.1
198.51.100.0/30 dev r-u2 proto kernel scope link src 198.51.100.1

Birinci hattın bağlı ağı geri geldi, ama elle eklediğim iki rota gelmedi. Trafik, birinci hat sağlam olduğu hâlde ikinci hattan gitmeye devam ediyor. Sebep, ip route ile eklenen satırın yalnız çalışan tabloda durmasıdır; bir yapılandırmada yazılı değildir ve düştüğünde onu geri koyan kimse yoktur.

Kalıcı olması gereken rota cihazın yapılandırmasına yazılır: Ubuntu sunucuda ağ yapılandırmasına (Ubuntu Server kurulumu yazımızın ağ bölümü), firewall ve yönlendiricide kalıcı yapılandırmaya. Tablo ile yapılandırmayı ayırmak, bir hat kesintisinden ya da yeniden başlatmadan sonra kaybolan rotayı açıklar: tabloda olan her satır yapılandırmada yazılı değildir.

Gidiş Var, Dönüş Yok: Dönüş Rotası

A’ya varsayılan rotayı ekledim, yönlendirici iki ağı da biliyordu; A’dan B’ye ping attım ve cevap gelmedi. B’de paket yakaladım:

Çıktı
08:10:28.764031 IP 10.1.1.10 > 10.2.2.20: ICMP echo request, id 14488, seq 1, length 64
08:10:29.815884 IP 10.1.1.10 > 10.2.2.20: ICMP echo request, id 14488, seq 2, length 64

İki istek de B’ye ulaştı ve B hiçbirine cevap vermedi. B’nin tablosunda yalnız kendi ağı vardı (10.2.2.0/24); 10.1.1.10’a giden bir satır ya da varsayılan rota yoktu. Cevap paketinin gideceği yer tabloda olmadığı için B onu hiç göndermedi. B’ye default via 10.2.2.1 ekleyince aynı yakalamada cevap belirdi:

Çıktı
08:10:31.863424 IP 10.1.1.10 > 10.2.2.20: ICMP echo request, id 14494, seq 1, length 64
08:10:31.863438 IP 10.2.2.20 > 10.1.1.10: ICMP echo reply, id 14494, seq 1, length 64
Dönüş rotası. A (10.1.1.10) ile B (10.2.2.20) arasında bir yönlendirici var. A'nın tablosunda varsayılan rota yönlendiriciyi gösteriyor, bu yüzden istek B'ye ulaşıyor. B'nin tablosunda yalnız kendi bağlı ağı (10.2.2.0/24) var; 10.1.1.10'a giden bir satır ya da varsayılan rota olmadığı için B cevabı hiçbir yere gönderemiyor ve ping cevapsız kalıyor. A 10.1.1.10 Yönlendirici 10.1.1.1 · 10.2.2.1 B 10.2.2.20 1. istek B'ye ulaşıyor 2. cevabın gideceği satır yok A'nın tablosu default via 10.1.1.1 10.1.1.0/24 bağlı B'nin tablosu 10.2.2.0/24 bağlı varsayılan rota yok Dönüş rotası. A (10.1.1.10) ile B (10.2.2.20) arasında bir yönlendirici var. A'nın tablosunda varsayılan rota yönlendiriciyi gösteriyor, bu yüzden istek B'ye ulaşıyor. B'nin tablosunda yalnız kendi bağlı ağı (10.2.2.0/24) var; 10.1.1.10'a giden bir satır ya da varsayılan rota olmadığı için B cevabı hiçbir yere gönderemiyor ve ping cevapsız kalıyor. A 10.1.1.10 Yönlendirici 10.1.1.1 · 10.2.2.1 B 10.2.2.20 1. istek B'ye ulaşıyor 2. cevabın satırı yok A'nın tablosu default via 10.1.1.1 10.1.1.0/24 bağlı B'nin tablosu 10.2.2.0/24 bağlı varsayılan rota yok
İsteğin gitmesi için A'nın tablosu yeter; cevabın dönmesi için B'nin tablosunda da bir satır gerekir. Rota iki yönde de yazılır.

Bir paketin gidip gelmesi için iki tablo gerekir: gidenin tablosunda hedefin satırı, hedefin tablosunda da gidenin satırı. Ping “ulaşmıyor” gibi görünür, ama sorun yolun öbür ucundadır. Bu yüzden teşhiste karşı tarafta paket yakalamak belirleyicidir: istek oraya varıyorsa gidiş yolu sağlamdır, eksik olan dönüştür. Ping’in sessiz kaldığı durumların ne anlattığını ICMP nedir yazımızda anlattık.

Örnekteki mağaza şubesinde bu, tedarikçinin koliyi şubeye göndermesi ama şubenin iade adresini bilmemesidir: koli gelir, iade hiç yola çıkmaz.

Yönlendirme Tablosu Nasıl Okunur? Linux ve FortiGate

Aynı tablo her cihazda başka bir biçimde görünür, ama üç satır türü hep aynıdır. Linux’ta ip route tablonun tamamını, ip route get <adres> tek bir adres için seçilen satırı verir; Windows’ta route print aynı tabloyu gösterir. Bir switch de yönlendirme yapıyorsa aynı tabloyu tutar; Layer 3 switch nedir yazısında switch’in yönlendirmeyi neden üstlendiğini, switch’te VLAN’lar arası yönlendirme yazısında da tablosunu okuduk. Lab’daki FortiGate’te get router info routing-table all komutunun çıktısı şöyle (kısaltıldı):

Çıktı
Routing table for VRF=0
S*      0.0.0.0/0 [10/0] via 203.0.113.80, port3, [1/0]
...
S       10.0.0.0/8 [254/0] is a summary, Null, [1/0]
C       10.34.30.0/24 is directly connected, personel
C       10.34.60.0/24 is directly connected, misafir
...
C       192.168.10.0/24 is directly connected, port1
...
C       203.0.113.0/24 is directly connected, port3
Satır türüLinux (ip route)FortiGate
Bağlı rotaproto kernel scope linkC … is directly connected
Statik rota10.20.0.0/16 via ...S
Varsayılan rotadefault via ...S* 0.0.0.0/0
Kara delik rotasıblackhole 10.0.0.0/8is a summary, Null
Sıralama değerimetricköşeli parantezdeki mesafe, [10/0]

FortiGate’teki [10/0] satırında 10, rotanın mesafesidir (distance) ve Linux’taki metrik gibi, aynı hedefe giden rotalar arasında küçük olan seçilir.

Null yazan satır bir kara delik rotasıdır: özel adres bloğuna giden ve daha dar bir satırı olmayan paket hatta değil hiçliğe gönderilir. En uzun önek kuralı burada da işliyor: 10.34.30.0/24, 10.0.0.0/8 satırından dar olduğu için personel ağına giden paket kara deliğe düşmez. Kara delik rotasının neden yazıldığını statik rota yazımızda anlattık. Yönlendirmenin firewall’un kural kararından önce geldiğini VLAN yazısındaki paket izinde gördük: FortiGate önce rotayı buluyor, sonra kurala bakıyor.

Sonuç: Yönlendirme Tablosunda En Dar Satır Kazanır, Rota İki Yönde Yazılır

Yönlendirme tablosu, her hedef ağ için bir sonraki durağı tutar. Satırlar üç yerden gelir: bağlı ağlar kendiliğinden, statik rotalar elle, varsayılan rota da ağ geçidinden. Bir adres birden çok satıra uyuyorsa en uzun önek kazanır; önekler eşitse küçük metrik. Hat kopunca o hattın satırları düşer ve yedek rota devreye girer, ama elle eklenip yapılandırmaya yazılmayan satır hat geri gelince dönmez. Bir paketin gidip gelmesi için iki tablonun da birbirini bilmesi gerekir.

Örnekteki süpermarket şubesinde duvar haritası yönlendirme tablosu, iç içe bölgeler önekler, merkez depoya giden tır da varsayılan rotadır: koli adresi kapsayan en küçük bölgenin aracıyla gider. Bu tablonun bir firewall’da nasıl yazıldığını ve yedek hattın nasıl devreye girdiğini FortiGate Firewall statik rota yazımızda ölçtüm; o adım FortiGate Firewall yapılandırma rehberimizin 12. adımıdır.

Yönlendirme Tablosu Hakkında Sık Sorulan Sorular

Varsayılan rota (default route, 0.0.0.0/0), tablodaki hiçbir satıra uymayan paketlerin gönderileceği sonraki duraktır; çoğu cihazda ağ geçidini gösterir. Lab'da varsayılan rotası olmayan bir makine, kendi ağının dışındaki bir adrese paket göndermeyi hiç denemedi: ping komutu Network is unreachable hatasıyla bitti.
Önce en uzun önek kazanır: 10.20.0.0/16 satırı, 10.0.0.0/8 satırından daha dar olduğu için 10.20.5.5 adresi /16 satırından gider. Önekler eşitse küçük metrikli rota seçilir. Lab'da metrik 10 ve 20 olan iki varsayılan rotadan 10 olan kullanıldı; o hat kapanınca 20 olan devraldı.
Sık sebeplerden biri dönüş rotasının olmamasıdır. Lab'da istek karşı makineye ulaştı ve orada paket yakalamasında göründü, ama karşı makinenin tablosunda isteği gönderen ağa giden bir satır ya da varsayılan rota yoktu; cevap hiç gönderilmedi. Karşı makineye varsayılan rota eklenince ping cevap aldı.
Linux'ta ip route ile eklenen rota gelmedi. Lab'da hat kapanınca o hattan giden iki rota tablodan silindi; hat yeniden açılınca tabloya yalnız bağlı ağ döndü, elle eklenen iki rota yoktu. Kalıcı olması gereken rota, cihazın yapılandırmasına yazılır; firewall ve yönlendiricilerde bu, rotanın yapılandırmada durması demektir.
İlker Pehlivan
Yazan

BT Danışmanı | Ağ, Sistem ve Güvenlik Yönetimi

İlker Pehlivan, karmaşık BT altyapılarını ölçeklenebilir ve güvenli sistemlere dönüştürür. Buradaki rehberleri kendi laboratuvarında kurup ölçerek yazar.

LinkedIn

Benzer Makaleler

Kurumsal Network Kurulumu altındaki diğer 114 makale