Linux에서 메트릭이없는 경로가있는 메트릭은 무엇입니까?


11

Linux에 다음 두 경로가있는 경우 :

default via 192.168.1.1 dev enp58s0f1
default via 192.168.16.1 dev wlp59s0  proto static  metric 600

첫 번째 것이 사용되기를 기대하지만, 그렇지 않습니다. 두 번째 것이 대신 사용됩니다.

이것을 이것을 바꾸면 :

default via 192.168.1.1 dev enp58s0f1  proto static  metric 100 
default via 192.168.16.1 dev wlp59s0  proto static  metric 600

그런 다음 예상대로 작동합니다. "메트릭 없음"은 메트릭 0 대신 숫자보다 나쁜 (높은) 메트릭 인 것 같습니다.

무슨 일이야? Linux 또는 네트워킹 표준에만 해당됩니까?

미리 감사드립니다.

답변:


6

첫 관찰에 대해 확신하십니까? 무엇 않습니다 ip route show또는 route -n다음 보여? proto static첫 번째 경우에 추가하면 결과가 변경됩니까 ?

나는 그것이 0리눅스에서 기본값 이라고 명시 적으로 적어도 두 가지 자원을 발견했다 .

  • http://0pointer.de/lennart/projects/ifmetric/ : Linux 커널에서 라우트의 기본 메트릭은 0이며 가장 높은 우선 순위를 의미합니다.
  • http://www.man7.org/linux/man-pages/man8/route.8.html : 이 옵션을 지정하지 않으면 inet6 (IPv6) 주소 패밀리에 대한 메트릭의 기본값은 '1'이며, inet (IPv4)의 경우 기본값은 '0'입니다. (사용할 때 기본값이 다를 수 iproute2있지만 이러한 소스를 분석 하면 기본값이 표시되지 않음 을 암시합니다 )

리눅스 커널 해커는 분명히 그것을 분류해야합니다.

또한 기본적으로 선택되는 것은 OS마다 다릅니다. 예를 들어이 기사 ( https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes )는 Windows가 기본 메트릭을 선택 함을 보여줍니다. 링크의 대역폭을 기반으로합니다.


내 컴퓨터 에서이 동작을 다시 보지 못했기 때문에 귀하의 답변을 올바른 답변으로 표시하고 있습니다. 나는 적어도 질문 당시에 가지고 있었던 버전으로 우분투가있는 데스크탑 컴퓨터에서 발생하는 이상한 일로 그것을 비난하고 있습니다. 우분투 LTS를 실행하는 다른 상자에서 발생하는 것을 보지 못했습니다. 그래서 X-File (요즘 너무 오래된 참조입니까?) 답변 주셔서 감사합니다!
rsuarez

6

이러한 경로는 서로 다른 서브넷에 있기 때문에 여기에는 메트릭보다 더 많은 관련이 있습니다. 원래 트래픽이 192.168.1.1 서브넷에있는 경우, 예를 들어, 경로를 통해 일치 그런 다음, 당신의 라우팅 테이블에서 일치하는 비 기본 경로가 긴 접두사 일치 메트릭이 적으로 간주되기 전에.

기본이 아닌 경로가 일치하지 않는다고 가정하면 메트릭 없는 것은 커널에서 메트릭이 0 인 것으로 해석되므로 우선 순위가 가장 높은 경로 해석 해야 합니다. 일부 라우팅 데몬은 나중에 기본 메트릭을 1024와 같은 다른 값으로 변환하기 때문에 단순한 견해이지만, 이것이 당신과 당신의 이름없는 배포판에서 일어나는 일이라고 생각합니다.

ip route메트릭이 전혀 표시되지 않으면 route -nnet-tools 패키지 또는에서 이전 명령을 사용하여 실제로 0인지 확인할 수 있습니다 cat /proc/net/route. 그러나이 출력이 라우팅 데몬이 0 메트릭 값을 발견했을 때 내부적으로 사용하는 것과 반드시 ​​일치하지는 않습니다.

또한 경로를 만드는 방법도 중요합니다. ip routenetlink API를 route사용하고 ioctl 을 사용합니다. 두 접근 방식간에 기본 메트릭을 작성하는 방법에 대한 코드는 다른 메트릭 값을 생성합니다. 예를 들어 ip routeRHEL 7에서 IPv6 기본 경로를 만들면 메트릭 값이 1024가되고 동일한 경로를 만들면 route메트릭이 1이됩니다.

에서 레드햇 :

  • route 메트릭으로 route 명령에 전달 된 것이 없으면 명령 자체에서 값 1이 사용됩니다.
  • 라우팅 메트릭으로 ip 명령에 아무것도 전달되지 않으면 속성이 전혀 작성되지 않으며 커널은이를 0으로 이해하며 나중에 기본값으로 1024로 변환됩니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.