경로가 잘못 일치함 - 네트워크에 연결할 수 없음

경로가 잘못 일치함 - 네트워크에 연결할 수 없음

목적지가 동일한 두 개의 경로가 있는 경우 시스템이 소스 주소와 일치하는 경로를 선택하면 안 되나요? from키워드를 사용하여 라우팅 테이블에 소스 주소 제한 경로를 추가 하려고 합니다 .

2001:db9:1::2예를 들어, 인터페이스에 주소가 있는 호스트가 있습니다 e1. 2001:db9:1::3아래와 같은 일반 경로를 추가하면 ping6정상적으로 작동합니다.

root@pc:/# ip -6 route add 2001:db9:1::3 dev e1
root@pc:/# ip -6 route
2001:db9:1::3 dev e1  metric 1024

from다음으로, 인터페이스에 할당되지 않은 일부 소스 주소를 사용 하여 키워드를 사용하여 소스 제한 경로를 추가합니다 .

root@pc:/# ip -6 route add 2001:db9:1::3 from 2001:db9:a::2 dev e1
root@pc:/# ip -6 route
2001:db9:1::3 from 2001:db9:a::2 dev e1  metric 1024
2001:db9:1::3 dev e1  metric 1024

지금 ping을 시도하면 네트워크에 연결할 수 없다는 메시지가 나타납니다. 시스템이 첫 번째 소스 제약 조건 항목이 작동하지 않는 것을 발견하면 두 번째 항목을 시도하고 성공해야 합니까?

흥미롭게도 지정자가 있지만 올바른 소스 주소를 사용하여 경로를 추가하면 from올바른 경로가 선택되고 핑이 성공합니다.

root@pc:/# ip -6 route add 2001:db9:1::3 from 2001:db9:1::2 dev e1
root@pc:/# ip -6 route
2001:db9:1::3 from 2001:db9:1::2 dev e1  metric 1024
2001:db9:1::3 from 2001:db9:a::2 dev e1  metric 1024
2001:db9:1::3 dev e1  metric 1024

(나도 2001:db9:1::1소스로 사용해 보았지만 여전히 작동하므로 사전 편찬 순서는 중요하지 않습니다.) 따라서 대상에 대해 소스 제한 경로가 존재하는 경우 소스 제한이 없는 경로는 무시되는 것 같습니다.

커널 구성(버전 4.9.13)을 확인한 결과 IPV6_SUBTREES활성화되어 있습니다. 어떤 아이디어가 있나요?

답변1

동일한 라우팅 테이블에서 일반 경로와 소스별 경로를 혼합하면 예기치 않은 동작이 발생할 수 있는 것 같습니다. 이는 Linux 커널 소스 코드의 net/ipv6/Kconfig에 언급되어 있습니다.

config IPV6_SUBTREES
    bool "IPv6: source address based routing"
    depends on IPV6_MULTIPLE_TABLES
    ---help---
      Enable routing by source address or prefix.

      The destination address is still the primary routing key, so mixing
      normal and source prefix specific routes in the same routing table
      may sometimes lead to unintended routing behavior.  This can be
      avoided by defining different routing tables for the normal and
      source prefix specific routes.

      If unsure, say N.

소스 제한 경로를 별도의 라우팅 테이블에 배치하면 올바른 동작이 제공됩니다.

관련 정보