← man/network
route — man route — 80×24
ugur@toprak:~/man/network$man route
Bölüm 8

route

yönlendirme tablolarını manuel olarak işler

Özet

      route [-dnqtv] command [[modifiers] args]

Açıklama

route, ağ yönlendirme tablolarını (routing tables) manuel olarak işlemek için kullanılan bir araçtır.

route aracı sınırlı sayıda genel seçeneği destekler, ancak zengin bir komut diline sahiptir; bu da kullanıcının route(4) kılavuzunda ele alınan programlama arayüzü vasıtasıyla iletilebilecek her türlü isteği belirtebilmesini sağlar.

Aşağıdaki seçenekler kullanılabilir:

  • -d: Yalnızca hata ayıklama (debug) modunda çalıştırır, yani yönlendirme tablosunu gerçekten değiştirmez.

  • -n: Eylemleri bildirirken ana bilgisayar (host) ve ağ adlarını sembolik olarak yazdırma girişimlerini atlar. (Sembolik adlar ile sayısal eşdeğerleri arasında çeviri işlemi oldukça zaman alıcı olabilir ve ağın düzgün çalışmasını gerektirebilir; bu nedenle, özellikle ağ işlemlerini onarmaya çalışırken bunu yoksaymak faydalı olabilir).

  • -t: Yalnızca test modunda çalıştırır. Soket yerine /dev/null kullanılır.

  • -v: (verbose) Ek ayrıntıları yazdırır.

  • -q: Tüm çıktıları bastırır.

route aracı altı komut sağlar:

add Bir rota ekler. flush Tüm rotaları kaldırır. delete Belirli bir rotayı siler. change Bir rotanın belirli yönlerini (geçit/gateway gibi) değiştirir. get Bir hedef için rotayı arar ve görüntüler. monitor Yönlendirme bilgi tabanındaki (routing information base) herhangi bir değişikliği, yönlendirme araması ıskalamalarını (misses) veya şüphelenilen ağ bölünmelerini sürekli olarak bildirir.

monitor komutunun sözdizimi şöyledir:

route [-n] monitor

flush komutunun sözdizimi şöyledir:

route [-n] flush [family]

Eğer flush komutu belirtilirse, route tüm geçit (gateway) girdilerinin yönlendirme tablolarını "temizleyecektir" (flush). Adres ailesi -osi, -xns, -atalk, -inet6 veya -inet niteleyicilerinden herhangi biriyle belirtildiğinde, yalnızca tanımlanan ailedeki adreslere sahip hedefleri olan rotalar silinecektir.

Diğer komutların sözdizimi aşağıdaki gibidir:

route [-n] command [-net | -host] [-ifscope boundif] destination gateway [netmask]

burada destination (hedef) hedef ana bilgisayar veya ağ, gateway (geçit) ise paketlerin yönlendirilmesi gereken bir sonraki atlama (next-hop) aracısıdır. Belirli bir ana bilgisayara giden rotalar, destination argümanı olarak belirtilen internet adresi yorumlanarak ağa giden rotalardan ayırt edilebilir. İsteğe bağlı -net ve -host niteleyicileri, hedefin sırasıyla bir ağ veya bir ana bilgisayar olarak yorumlanmasını zorunlu kılar. Aksi takdirde, hedefin INADDR_ANY (0.0.0.0) şeklinde bir "yerel adres kısmı" varsa veya hedef bir ağın sembolik adıysa, rotanın bir ağa giden rota olduğu varsayılır; aksi takdirde, bir ana bilgisayara giden rota olduğu kabul edilir. İsteğe bağlı olarak, hedef ağ/bit (net/bits) biçiminde de belirtilebilir.

Örneğin, 128.32 ifadesi -host 128.0.0.32 olarak yorumlanır; 128.32.130 ifadesi -host 128.32.0.130 olarak yorumlanır; -net 128.32 ifadesi 128.32.0.0 olarak yorumlanır; -net 128.32.130 ifadesi 128.32.130.0 olarak yorumlanır; ve 192.168.64/20 ifadesi -net 192.168.64 -netmask 255.255.240.0 olarak yorumlanır.

default (varsayılan) hedefi, varsayılan rota olan -net 0.0.0.0 ile eş anlamlıdır.

Eğer hedefe, geçit (gateway) görevi görecek herhangi bir aracı sisteme ihtiyaç duymayan bir arayüz (interface) üzerinden doğrudan ulaşılabiliyorsa, -interface niteleyicisi belirtilmelidir; verilen geçit, bu ana bilgisayarın ortak ağdaki adresidir ve iletim için kullanılacak arayüzü gösterir. Alternatif olarak, arayüz noktadan noktaya (point to point) ise arayüzün kendi adı verilebilir, bu durumda yerel veya uzak adresler değişse bile rota geçerli kalır.

AF_INET ve AF_INET6 için -ifscope niteleyicisi, boundif arayüzünden türetilen arayüz kapsamıyla ilgili rotanın ek özelliğini belirtir. Bu özellik, her rotanın benzersiz bir arayüzle ilişkilendirildiği, aynı hedefe sahip birden fazla rota girdisinin bulunmasına olanak tanır. Bu niteleyici, RTF_IFSCOPE bayrağıyla işaretlenmiş rota girdilerini işlemek için gereklidir.

İsteğe bağlı -link niteleyicisi, sonraki tüm adreslerin bağlantı düzeyinde (link-level) adresler olarak belirtildiğini ve adların sembolik adlar yerine sayısal belirtimler olması gerektiğini belirtir.

İsteğe bağlı -netmask niteleyicisi, netmask seçeneğiyle bir OSI ESIS yönlendirmesi etkisi elde etmeyi veya manuel olarak, ima edilen ağ arayüzünkinden farklı ağ maskelerine sahip alt ağ rotaları eklemeyi amaçlar (aksi takdirde OSPF veya ISIS yönlendirme protokolleri kullanılarak iletilirdi). Kullanıcı, takip eden ek bir adres parametresi (ağ maskesi olarak yorumlanacak) belirtir. AF_INET durumunda oluşturulan örtük ağ maskesi, bu seçeneğin destination parametresini takip etmesi sağlanarak geçersiz kılınabilir.

AF_INET6 için, IPv6'da sürekli olmayan maskelere izin verilmediğinden -mask belirteci yerine -prefixlen niteleyicisi kullanılabilir. Örneğin, -prefixlen 32, kullanılacak ffff:ffff:0000:0000:0000:0000:0000:0000 ağ maskesini belirtir. Birleştirilebilir (aggregatable) adresle uyumlu olması için varsayılan prefixlen değeri 64'tür. Ancak default belirtilmişse 0 varsayılır. Bu niteleyicinin yalnızca AF_INET6 adres ailesi için çalıştığını unutmayın.

Rotalar, rotalarla eşleşen hedeflere gönderim yaparken protokollerin çalışmasını etkileyen ilişkili bayraklara sahiptir. Bu bayraklar, aşağıdaki ilgili niteleyiciler belirtilerek ayarlanabilir (veya bazen temizlenebilir):

  • -cloning: RTF_CLONING - kullanımda yeni bir rota oluşturur
  • -xresolve: RTF_XRESOLVE - kullanımda mesaj gönderir (harici arama için)
  • -iface: ~RTF_GATEWAY - hedefe doğrudan ulaşılabilir
  • -static: RTF_STATIC - manuel olarak eklenen rota
  • -nostatic ~RTF_STATIC: - çekirdek (kernel) veya arka plan programı (daemon) tarafından eklenmiş gibi davranan rota
  • -reject: RTF_REJECT - eşleştiğinde bir ICMP ulaşılamaz (unreachable) mesajı gönderir
  • -blackhole RTF_BLACKHOLE: - paketleri sessizce atar (güncellemeler sırasında)
  • -proto1: RTF_PROTO1 - protokole özgü yönlendirme bayrağı #1'i ayarlar
  • -proto2: RTF_PROTO2 - protokole özgü yönlendirme bayrağı #2'yi ayarlar
  • -llinfo: RTF_LLINFO - protokol adresini bağlantı adresine (link addr) geçerli bir şekilde çevirir

İsteğe bağlı -rtt, -rttvar, -sendpipe, -recvpipe, -mtu, -hopcount, -expire, ve -ssthresh niteleyicileri, TCP veya TP4 gibi taşıma seviyesi protokolleri tarafından yönlendirme girdisinde tutulan miktarlara başlangıç değerlerini sağlar. Bunlar, kilitlenecek her bir niteleyicinin önüne -lock meta-niteleyicisi getirilerek ayrı ayrı kilitlenebilir veya takip eden tüm metriklerin -lockrest meta-niteleyicisi ile kilitleneceği belirtilebilir.

Hedefin ve geçidin rotayı belirtmek için yeterli olmadığı bir change veya add komutunda (birkaç arayüzün aynı adrese sahip olabildiği ISO durumunda olduğu gibi), arayüzü veya arayüz adresini belirlemek için -ifp veya -ifa niteleyicileri kullanılabilir.

İsteğe bağlı -proxy niteleyicisi, RTF_LLINFO yönlendirme tablosu girdisinin arp(8) tarafından bildirildiği üzere "yayınlanmış (yalnızca proxy)" ARP girdisi olduğunu belirtir.

Bir hedef veya geçit için belirtilen tüm sembolik adlar, önce gethostbyname(3) kullanılarak bir ana bilgisayar adı olarak aranır. Bu arama başarısız olursa, adı bir ağ adı olarak yorumlamak için getnetbyname(3) kullanılır.

route bir yönlendirme soketi ve RTM_ADD, RTM_DELETE, RTM_GET, ve RTM_CHANGE adlı yeni mesaj türlerini kullanır. Bu nedenle, yönlendirme tablolarını yalnızca süper kullanıcı (super-user) değiştirebilir.

monitor komutu, yalnızca niteleyicilerle eşleşen yönlendirme mesajlarını görüntülemek için isteğe bağlı niteleyicileri kabul eder.

İsteğe bağlı -ifindex niteleyicisi, o arayüz için yönlendirme mesajlarının görüntülenmesini sınırlamak üzere bir arayüz dizini (index) veya bir arayüz adı alır.

monitor komutunun isteğe bağlı niteleyicileri; -blackhole, -cloning, -gateway, -host, -llinfo, -local, -reject, -router, -static, -wascloned gibi bazı spesifik yönlendirme bayraklarına sahip mesajları seçmek için kullanılabilir.

Ve monitor komutu, -add, -delete, -newmaddr gibi belirli bir türdeki mesajları yazdırmak için de kullanılabilir.

Niteleyici, niteleyici adına no öneki eklenerek niteleyici ile eşleşen mesajları hariç tutabilir.

Teşhisler

add [host | network ] %s: gateway %s flags %x Belirtilen rota tablolara ekleniyor. Yazdırılan değerler, ioctl(2) çağrısında sağlanan yönlendirme tablosu girdisindendir. Eğer kullanılan geçit adresi, geçidin birincil adresi değilse (gethostbyname(3) tarafından döndürülen ilk adres), geçit adresi sembolik olarak yazdırılmasının yanı sıra sayısal olarak da yazdırılır.

delete [ host | network ] %s: gateway %s flags %x Yukarıdaki gibidir, ancak bir girdi silinirken geçerlidir.

%s %s done flush komutu belirtildiğinde, silinen her yönlendirme tablosu girdisi bu biçimdeki bir mesajla gösterilir.

Network is unreachable Bir rota ekleme girişimi başarısız oldu çünkü listelenen geçit doğrudan bağlı bir ağda değildi. Sonraki atlama (next-hop) geçidi verilmelidir.

not in table Tablolarda bulunmayan bir girdi için silme işlemi yapılmaya çalışıldı.

routing table overflow Bir ekleme işlemi yapılmaya çalışıldı, ancak sistem kaynakları yetersizdi ve yeni girdiyi oluşturmak için bellek tahsis edemedi.

gateway uses the same route Bir değiştirme işlemi, geçidi değiştirilmekte olan rota ile aynı rotayı kullanan bir rotayla sonuçlandı. Sonraki atlama geçidine farklı bir rota üzerinden erişilebilmelidir.

route aracı başarı durumunda 0, bir hata oluşursa >0 değeriyle çıkar.

Örnekler

     Bir geçit üzerinden varsayılan bir IPv4 rotası ekleme:

	   route add default 192.168.1.1

     Bir geçit üzerinden bir IPv6 önek rotası ekleme:

	   route add -inet6 2001:db8::/32 2001:db8::1

     Doğrudan bir arayüze bir IPv6 önek rotası ekleme:

	   route add -inet6 2001:db8:1234::/64 -interface en0

     Bir IPv6 rotasını silme:

	   route delete -inet6 2001:db8:1234::/64

Ayrıca Bakınız

netintro(4), route(4), arp(8)

Tarihçe

route komutu ilk olarak 4.2BSD sürümünde ortaya çıkmıştır.

BSD 4.4 Haziran 8, 2001 BSD 4.4