Linux가 더 짧은 접두사를 선택하는 이유는 무엇입니까? (strongSwan, 테이블 220)

Linux가 더 짧은 접두사를 선택하는 이유는 무엇입니까? (strongSwan, 테이블 220)

다음과 같은 2개의 경로가 있습니다.

# ip ro show table 0|grep 10.250
10.250.0.0/16 via 10.80.1.1 dev ens5 table 220 proto static src 10.80.1.76 
10.250.1.4 via 10.80.1.45 dev ens5 

첫 번째는 StrongSwan에서 관리하는 테이블 220에서 가져온 것이고, 다른 하나는 테스트를 위해 수동으로 만든 것입니다.

나는 명시적인 /32경로가 항상 승리할 것으로 기대하지만,

# ip ro get 10.250.1.4
10.250.1.4 via 10.80.1.1 dev ens5 table 220 src 10.80.1.76 uid 0 
    cache 

Linux는 여전히 /16.

왜 그런가요?

답변1

이는 StrongSwan이 정책 라우팅을 사용하기 때문입니다. 이것을 설명하기 위해 누락된 부분은ip ruleStrongSwan에 의해 설정된 추가 항목은 일반적으로 다음과 같습니다.

# ip rule
0:  from all lookup local
220:    from all lookup 220
32766:  from all lookup main
32767:  from all lookup default

라우팅규칙다양한 라우팅을 참조하기 위해 우선 순위(위에 표시된 순서)로 탐색됩니다.테이블, 경로가 발견될 때까지(또는 없음(기본 경로가 어디에도 없거나 "부정적" 경로가 존재하는 경우 가능)) Network is unreachable반환과 같은 오류가 발생할 때까지. 라우팅 규칙 pref 220은 표준 라우팅 규칙 pref 32766보다 먼저 실행되므로 라우팅 테이블 220을 먼저 확인합니다. 라우팅 테이블 220 10.250.0.0/16은 10.250.1.4와 일치하므로 경로가 발견되었습니다. 경로 평가는 여기에서 중지되며 이후 테이블에서 선택할 수 있었던 것은 무엇이든 됩니다. 그만큼기본이 대상에 대한 라우팅 테이블에 도달하지 않습니다.

결과 ip route get ...가 아닌 다른 라우팅 테이블을 표시하는 경우현지의,기본(또는 테이블기본일반적인 경우처럼 비어 있지 않은 경우) 이는 이 테이블을 참조하는 라우팅 규칙이 있어야 하며 를 사용하여 표시된다는 의미입니다 ip rule.

다른 많은 사람들을 위해정책 기반 라우팅경우에는 "와일드카드" 대신 추가 선택기가 있습니다 from all. 일반적으로 소스 IP 주소/네트워크 또는 수신 인터페이스가 사용됩니다. 다시 일반 라우팅 결과를 변경합니다. 포트, uid 등과 같은 다른 가능성도 있습니다. 대상 IP 주소/네트워크는 이미 일반적인 경로 항목에 의해 선택되어 있으므로 라우팅 규칙에서 선택기로 거의 사용되지 않습니다.

관련 정보