Mengapa tidak ada rute untuk localhost di Ubuntu?


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

Apakah ini tidak berarti bahwa 127.0.0.0/8 / 8 diarahkan ke gateway 172.17.42.1 dan bukan perangkat loopback?


Maksud saya: Mengapa tidak ada rute untuk loopback di Ubuntu?
Balazs Rau

Saya kira rute eksplisit untuk jaringan loopback berasal dari masa lalu. Melihat pertanyaan Anda, saya melihat beberapa server kami dan tidak ada rute pada tabel routing untuk loopback. Itu juga berlaku untuk Solaris 10, bukan untuk Solaris 8 (ya, kami masih memiliki beberapa kotak dengan Solaris 8).
alphamikevictor

Jawaban:


25

The routeperintah usang, dan tidak boleh digunakan lagi.

Cara baru adalah dengan menggunakan seperangkat perintah iproute, yang semuanya dipanggil dengan ipdiikuti oleh objek. Sebagai contoh:

$ 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 

Sekarang, saya mendengar Anda berkata, ini pada dasarnya info yang sama! Ya, tapi ini bukan keseluruhan cerita. Sebelum tabel routing (ya, jamak) datang tabel aturan:

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

Tabel routing yang kami lihat sebelumnya adalah maintabel routing. Pertanyaan Anda menyangkut localtabel perutean, yang berisi semua rute yang berkaitan dengan koneksi lokal. Tabel ini dapat ditampilkan sebagai berikut:

$ 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

(Anda dapat menyingkat ipopsi / parameter selama masih unik, karenanya ip ro shsama dengan ip route show.)

Di sini Anda dapat melihat rute loopback.

Anda dapat melakukan segala macam hal luar biasa dengan perutean berbasis kebijakan ini , saya sarankan Anda membaca Perutean Kebijakan dengan Linux oleh Matthew G. Marsh untuk semua info yang Anda perlukan.


1
Hanya kekhawatiran tentang kata-kata Anda: Pertanyaannya sebenarnya tentang perutean untuk alamat lokal (127.0.0.0/8). table localadalah jawabannya, tetapi bukan pertanyaannya. Ini jawabannya karena lalu lintas ke 127. * alamat dikonversi menjadi memiliki alamat sumber 127.0.0.1, dan saya pikir juga dipaksa untuk menggunakan dev lo.
Peter Cordes

1
Jadi jawaban sebenarnya untuk pertanyaan itu adalah "karena loopback itu spesial dan tidak perlu satu", adalah jawaban yang sebenarnya. Tidak ada entri tabel perutean yang mengatakan apa pun tentang cara merutekan ke 127.1.1.1, misalnya, tetapi masih berfungsi (seperti yang Anda tahu dari waktu ping). Agaknya kode jaringan menangani kasus-kasus alamat lokal untuk alasan kinerja, karena ip addrtidak menunjukkan lomemiliki lebih dari sekedar 127.0.0.1alamatnya sendiri, tetapi sebenarnya akan menerima lalu lintas untuk ip apa pun di 127 ... / 8
Peter Cordes

4
@PeterCordes Sebenarnya garis tersebut local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1mencakup rute ke 127.1.1.1; itu berarti apa pun yang dimulai dengan 127. adalah lokal.
Wurtel

Ah, oke saya tidak mengerti semua yang tersirat localdalam localtabel. Terima kasih.
Peter Cordes

2

The routeperintah berusia sejak 10 tahun yang lalu dan Anda harus pergi dengan iproute2paket.

Bila Anda menggunakan ip route showsatu maintabel ditampilkan. Untuk menampilkan localtabel gunakan ip route show table local.

Semoga ini bisa membantu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.