Por que não há uma rota para o localhost no Ubuntu?

10
$ 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

Isso não significa que 127.0.0.0/8 é roteado para o gateway de 172.17.42.1 e não o dispositivo de loopback?

    
por Balazs Rau 17.04.2015 / 16:01

2 respostas

23

O comando route está obsoleto e não deve mais ser usado.

A nova maneira é usar o conjunto de comandos iproute, que são todos invocados com ip seguido por um objeto. Por exemplo:

$ 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 

Agora, ouvi dizer que esta é basicamente a mesma informação! Sim, mas esta não é toda a história. Antes das tabelas de roteamento (sim, plural) vem a tabela de regras:

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

A tabela de roteamento que vimos antes é a tabela de roteamento main . Sua pergunta diz respeito à tabela de roteamento local , que contém todas as rotas relacionadas às conexões locais. Esta tabela pode ser mostrada da seguinte forma:

$ 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

(Você pode abreviar ip opções / parâmetros contanto que eles ainda sejam únicos, por isso ip ro sh é o mesmo que ip route show .)

Aqui você pode ver as rotas de loopback.

Você pode fazer todo tipo de coisa maravilhosa com esse roteamento baseado em política , eu recomendo que você leia Política de roteamento com o Linux de Matthew G. Marsh para todas as informações que você precisa.

    
por 17.04.2015 / 16:16
2

O comando route era antigo há 10 anos e você deveria usar os pacotes iproute2 .

Quando você estiver usando ip route show , a tabela main será exibida. Para exibir a tabela local use ip route show table local .

Espero que tenha ajudado.

    
por 17.04.2015 / 16:26

Tags