Neden Ubuntu'da localhost için bir rota yok?


12
$ sudo docker run --rm ubuntu:14.04 route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.42.1     0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

Bu 127.0.0.0/8'in geridöngü aygıtına değil, 172.17.42.1 ağ geçidine yönlendirildiği anlamına gelmiyor mu?


Demek istediğim: Neden Ubuntu'da geri döngü için bir yol yok?
Balazs Rau

Ben geri döngü ağ için açık yollar geçmişte olduğunu varsayalım. Sorunuzu görünce bazı sunucularımıza bir göz atıyorum ve geri döngü için yönlendirme tablosunda rota yok. Bu aynı zamanda Solaris 10 için de geçerlidir, Solaris 8 için değil (evet, hala Solaris 8 ile bazı kutularımız var).
alphamikevictor

Yanıtlar:


25

routeKomut kalkmıştır ve artık kullanılmaması gerekir.

Yeni yol, tümü çağrılan ipbir nesneyi izleyen iproute komut kümesini kullanmaktır . Örneğin:

$ ip route show
default via 192.168.1.254 dev eth0 
192.168.0.0/23 dev eth0  proto kernel  scope link  src 192.168.1.27 

Şimdi, duyduğunuzu duydum, bu temelde aynı bilgi! Evet, ama hikayenin tamamı bu değil. Yönlendirme tablolarından (evet, çoğul) önce kural tablosu gelir:

$ ip rule show
    0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default 

Daha önce baktığımız mainyönlendirme tablosu yönlendirme tablosudur. Sorunuz local, yerel bağlantılarla ilgili tüm yolları içeren yönlendirme tablosuyla ilgilidir . Bu tablo aşağıdaki gibi gösterilebilir:

$ ip ro sh table local
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
broadcast 192.168.0.0 dev eth0  proto kernel  scope link  src 192.168.1.27 
local 192.168.1.27 dev eth0  proto kernel  scope host  src 192.168.1.27 
broadcast 192.168.1.255 dev eth0  proto kernel  scope link  src 192.168.1.27

( ipSeçenekleri / parametreleri hala benzersiz oldukları sürece kısaltabilirsiniz, dolayısıyla ip ro shaynıdır ip route show.)

Burada geridönüş yollarını görebilirsiniz.

Bu politika tabanlı yönlendirme ile her türlü harika şeyi yapabilirsiniz , ihtiyacınız olan tüm bilgiler için Matthew G. Marsh tarafından Linux ile Politika Yönlendirme'yi okumanızı tavsiye ederim .


1
Sadece ifadenizle ilgili bir endişe: Sorusu aslında yerel adresler için yönlendirme ile ilgiliydi (127.0.0.0/8). table localcevap, ama soru değil. Cevap budur, çünkü herhangi bir 127. * adresine giden trafik 127.0.0.1 kaynak adresine sahip olur ve bence kullanmak da zorlanır dev lo.
Peter Cordes

1
Yani sorunun asıl cevabı “çünkü geridönüş özeldir ve ihtiyaç duymaz”, gerçek cevaptır. Örneğin, bu yönlendirme tablosu girişlerinin hiçbiri 127.1.1.1'e nasıl yönlendirileceği hakkında bir şey söylemez, ancak yine de çalışır (ping sürelerinden anlayabileceğiniz gibi). Tahminen ağ kodu özel kılıfı performans nedenleriyle yerel adresleri beri ip addrgöstermiyor lodaha adil daha sahip 127.0.0.1... kendi adresi olarak, ama aslında 127 herhangi ip için trafik alacaktır / 8
Peter Cordes

4
@PeterCordes Aslında çizgi local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1127.1.1.1'e giden rotayı kapsar; 127 ile başlayan her şeyin yerel olduğu anlamına gelir.
wurtel

Ah, tamam tablodaki bir localgirişin localima ettiği her şeyi anlamamıştım . Teşekkürler.
Peter Cordes

2

routeKomut 10 yıl önce bu yana eski ve birlikte gitmeli iproute2paketler.

Kullandığınız zaman tablo görüntülenir. Tabloyu görüntülemek için .ip route showmainlocalip route show table local

Umarım yardımcı olmuştur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.