Ubuntu에 localhost에 대한 경로가없는 이유는 무엇입니까?


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

이것이 127.0.0.0/8이 루프백 장치가 아닌 172.17.42.1의 게이트웨이로 라우팅되는 것을 의미하지 않습니까?


우분투에서 루프백을위한 경로가없는 이유는 무엇입니까?
Balazs Rau

루프백 네트워크의 명시 적 경로가 과거의 것으로 가정합니다. 귀하의 질문을보고 일부 서버를 살펴보고 라우팅 테이블에 루프백을위한 경로가 없습니다. 그것은 Solaris 8이 아닌 Solaris 10에도 유효합니다 (그렇습니다. 우리는 여전히 Solaris 8이있는 상자가 있습니다).
alphamikevictor

답변:


25

route명령은 더 이상 사용되지 않으므로 더 이상 사용해서는 안됩니다.

새로운 방법은 iproute 명령 집합을 사용하는 것입니다.이 명령은 모두 ip개체 와 함께 호출됩니다 . 예를 들면 다음과 같습니다.

$ 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 

자, 당신이 말하는 것을 들었습니다. 이것은 기본적으로 동일한 정보입니다! 예, 그러나 이것은 전체 이야기가 아닙니다. 라우팅 테이블 (예, 복수)이 규칙 테이블에 오기 전에 :

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

이전에 살펴본 main라우팅 테이블 은 라우팅 테이블입니다. 귀하의 질문은 local라우팅 테이블에 관한 것이며 , 여기에는 로컬 연결과 관련된 모든 경로가 포함되어 있습니다. 이 테이블은 다음과 같이 표시 될 수 있습니다.

$ 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

( ip옵션 / 매개 변수가 여전히 고유하다면 옵션과 매개 변수를 약어로 사용할 수 있습니다 . 따라서 ip ro sh와 동일합니다 ip route show.)

여기서 루프백 경로를 볼 수 있습니다.

정책 기반 라우팅으로 모든 종류의 훌륭한 작업을 수행 할 수 있습니다 . 필자 는 Matthew G. Marsh의 Linux를 통한 정책 라우팅 을 읽어 보는 것이 좋습니다 .


1
당신의 표현에 대한 우려 : 그의 질문은 실제로 로컬 주소 (127.0.0.0/8) 라우팅에 관한 것입니다. table local답이지만 질문은 아닙니다. 모든 127. * 주소로의 트래픽이 127.0.0.1의 소스 주소를 갖도록 변환되기 때문에 답이됩니다 dev lo.
Peter Cordes

1
따라서이 질문에 대한 실제 답변은 "루프백이 특별하고 필요하지 않기 때문"입니다. 예를 들어 해당 라우팅 테이블 항목 중 127.1.1.1로 라우팅하는 방법에 대한 언급은 없지만 핑 시간에서 알 수 있듯이 여전히 작동합니다. 아마도 네트워킹 코드 특별한 경우 성능상의 이유로 로컬 주소, 때문에 ip addr표시되지 않습니다 lo더보다는 다만 가지고 127.0.0.1... 자신의 주소로하지만, 실제로는 127에서 모든 IP 트래픽을 받게됩니다 / 8
피터 코르

4
@PeterCordes 실제로이 라인 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1은 127.1.1.1로가는 경로를 포함합니다. 이는 127.로 시작하는 모든 것이 로컬임을 의미합니다.
wurtel

아, 좋아, 나는 테이블 의 local항목이 local암시 하는 모든 것을 이해하지 못했습니다 . 감사.
Peter Cordes

2

route명령은 10 년 전부터 오래 iproute2되었으므로 패키지 와 함께 가야 합니다.

사용 ip route show하면 main표가 표시됩니다. local표 를 표시하려면을 사용하십시오 ip route show table local.

도움이 되었기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.