라우팅 규칙 선택

라우팅 규칙 선택

저는 Linux를 처음 접했고 Linux 라우팅 프로세스를 배우던 중 문제에 부딪혔습니다. 소스 IP가 서로 다른 두 개의 유사한 라우팅 규칙이 있고 두 IP가 이러한 규칙을 사용하여 호스트에 할당된 경우 올바른 규칙을 어떻게 선택합니까? 소스 IP가 애플리케이션에 의해 설정되는 경우를 배제하기 위해 ping 유틸리티를 사용하고 싶다고 가정해 보겠습니다. 이 경우 규칙은 어떻게 선택됩니까?

답변1

소스 IP는 라우팅 선택에 참여하지 않습니다. 경로는 라우팅 테이블을 순회하여 선택됩니다. 테이블의 각 항목에 대해 네트워크 대상 접두사(즉, 네트워크 대상 및 넷마스크)가 대상 IP 주소 및 넷마스크와 비교됩니다. 그들이 같으면 일치하는 것입니다. 라우팅 테이블의 각 항목을 시도한 후 일치하는 항목이 여러 개 있으면 접두사가 가장 긴 항목이 선택됩니다. 일치하는 항목이 없으면 목적지까지의 경로가 없습니다. 접두사 길이가 0이므로 기본 경로는 항상 일치합니다.

대상이 링크 로컬이 아닌 경우 일치하는 항목은 게이트웨이 주소를 알려주고 게이트웨이 주소에 대해 프로세스가 반복됩니다. 마지막으로 패킷을 보낼 때 소스 주소와 대상 주소를 입력합니다. 원래 대상 주소를 사용하여 최종 일치하는 라우팅 규칙( src출력의 필드 ) 에서 소스 주소를 가져옵니다 ip route.

답변2

ip rule선택 이 있습니다 priority. 우선순위 옵션은 라우팅 테이블을 선택하는 첫 번째 방법입니다. 더 낮은 값을 가진 규칙은 priority더 높은 값을 가진 규칙보다 먼저 사용됩니다. 에 전화하면 ip rule show왼쪽에 인쇄된 규칙과 우선순위를 볼 수 있습니다.

[priority]:    [rule]

완전성을 위해 다음이 인용됩니다 man ip-rule.

환경설정

이 규칙의 우선순위입니다. PREFERENCE는 부호 없는 정수 값입니다. 숫자가 클수록 규칙은 숫자가 증가하는 순서대로 처리됩니다.각 규칙에는 명확하게 설정된 고유한 우선순위 값이 있어야 합니다. 옵션 기본 설정과 순서는 우선 순위와 동의어입니다.

내 강조.

따라서 무엇보다도 모호함이 없도록 각 규칙에 고유한 우선순위를 사용하는 것이 가장 좋습니다. 우선순위가 동일한 규칙은 추가된 순서대로 평가됩니다. 규칙이 상호 배타적이면 위험이 줄어듭니다(예: 두 규칙이 다른 호스트의 다른 소스 IP에서 일치함). 규칙이 자동으로 추가되면 알파벳 순서의 첫 번째 규칙 파일이 사용된다는 의미일 수 있으며 이는 라우팅을 결정하는 좋은 방법이 아닙니다.

첫 번째 추가된 규칙을 사용하여 어떻게 결론에 도달합니까?

  1. 동일한 네트워크에 두 개의 인터페이스(192.168.0.1/24 및 192.168.0.2/24)가 있는 VM(vm1)을 만들었습니다.
  2. 네트워크(192.168.0.3/24)에 다른 가상 머신(vm2)을 생성합니다.
  3. 두 개의 라우팅 테이블이 생성되었고 table1vm1 table2

ip route add default dev eth0 table table1

ip route add default dev eth1 table table2

  1. 우선순위가 다른 두 개의 규칙이 생성됩니다.

ip rule add to 192.168.0.3 table table1 priority 10

ip rule add to 192.168.0.3 table table2 priority 11

  1. vm1에서 vm2를 ping합니다.
  2. tcpdump -i eth0 host 192.168.0.3핑 보여줘
  3. tcpdump -i eth1 host 192.168.0.3확실히

이는 예상된 동작입니다.priority

  1. 우선 순위가 10인 table2 규칙을 다시 추가했지만 ping은 여전히 ​​에만 나타납니다 eth0. 규칙 앞에 규칙을 ip rule show나열하십시오 .table1table2
  2. table1 규칙을 삭제하면 eth1에서 ping이 달성될 수 있습니다.
  3. table1 규칙을 다시 추가해도 ping은 여전히 ​​eth1에 있습니다. 이전의 규칙을 ip rule show나열하십시오 .table2table1

관련 정보