VRF 및 IP 규칙이 정의된 경우 패킷 경로는 어떤 순서로 정의됩니까?

VRF 및 IP 규칙이 정의된 경우 패킷 경로는 어떤 순서로 정의됩니까?

시스템에는 VRF, 여러 라우팅 테이블 및 규칙이 정의되어 있습니다. 로컬 서비스(SSH)는 하나의 인터페이스(VRF의 WAN 인터페이스)를 통해 액세스할 수 없지만 다른 인터페이스에서는 액세스할 수 있습니다. 패킷 필터가 비활성화되었습니다.

정확히 어디가 붙어 있는지 디버깅하고 싶습니다.

VRF와 IP 규칙은 동시에 정의됩니다. 경로는 어떻게 결정됩니까?

로서, VRF 없이:

# ip rule show
101:    from all lookup local
102:    from all lookup main
103:    from all lookup vrf_wan
170:    from all fwmark 0x800000a9 lookup vrf_wan
254:    from all fwmark 0x800000fd lookup main
1000:   from all lookup [l3mdev-table]
2000:   from all lookup [l3mdev-table] unreachable
32765:  from all lookup local
32766:  from all lookup main
32767:  from all lookup default

커널은 가장 낮은 규칙으로 시작됩니다. 규칙이 소스, 대상 또는 fwmark와 일치하면 테이블에서 조회됩니다. 일치하는 항목이 있으면 프로세스가 중지되고 경로가 선택됩니다. 테이블에 일치하는 항목이 없으면 다음 규칙이 처리됩니다(틀린 경우 수정해 주세요).

이제 특정 인터페이스 및/또는 프로세스에 VRF가 할당되어 있다면 어떻게 될까요? 이것은 완전히 직교하는가 ip rule show? 둘 중 하나를 선택해야 하나요? 아니면 둘 다 동시에 사용할 수 있나요?

논평: 내 시스템은 VyOS입니다. 규칙 1000, 2000, 32765-32767은 VyOS에 의해 생성되며 삭제할 수 없습니다. 규칙 170과 254도 VyOS의 정책 규칙에 의해 생성되지만 다른 정책(규칙 101-103)에 의해 재정의됩니다.

답변1

기본적으로 VRF에는 다음과 같이 우선순위가 1000인 연관된 라우팅 규칙이 있습니다.VRF 문서는 다음과 같습니다OP의 예와 같습니다.

  1. l3mdev FIB 규칙은 장치와 관련된 테이블에 대한 조회를 지시합니다.모든 VRF에는 단일 l3mdev 규칙으로 충분합니다.. 첫 번째 장치가 VRF 상태에 있으면 VRF 장치는 IPv4 및 IPv6에 대한 l3mdev 규칙을 추가합니다.기본 환경설정 1000으로 생성됨. 사용자는 다음을 수행할 수 있습니다.필요한 경우 규칙을 삭제하고 다른 우선순위를 추가하거나 각 VRF 규칙을 설치하십시오..

따라서 우선순위가 1000인 규칙을 삭제하고 수동 규칙을 만들거나 필요에 따라 자신만의 규칙을 조정할 수 있습니다(예: pref < 1000 또는 pref > 1000).

VRF에 대한 자세한 내용은 다음 블로그에서 확인할 수 있습니다. Linux에서 VRF(가상 라우팅 및 전달)를 사용하는 Stefan의 블로그, VyOS가 pref 2000 규칙을 만든 이유와 로컬 테이블 조회가 pref 0에서 pref 32765로 이동된 이유를 포함합니다.


업데이트: OP의 질문을 해결합니다.논평.

무엇인가요 ip vrf exec blue ...? 그것은 설정합니다소켓 옵션을 강제하는 BPF 필터영향을 받는 프로세스가 소켓을 생성할 때마다:

[...]

BPF 필터는 vrf/NAME cgroup2에 연결되어 sk_bound_dev_if를 VRF 장치 인덱스로 설정합니다. [...] 이렇게 하면 모든 AF_INET/AF_INET6(ipv4/ipv6) 소켓이 자동으로 VRF 도메인에 바인딩됩니다.

VRF 인식 프로세스를 사용하는 것과 동일하다는 것을 알고 있습니다.setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, "vrf-blue", ...).

이는 oif내가 이해하는 규칙이 l3mdev이에 의해 구체적으로 선택되고(이전에 경로를 해결하기 전에 사용된 경우) 그렇지 않으면 장치와 일치하는 나머지 경로만 일치된다는 것을 의미합니다.

(또한 경험상(VRF 외부) 인터페이스에 바인딩할 때 대상까지의 경로가 없으면 바인딩할 때 패킷을 내보낼 수 있도록 경로를 추가한 것처럼 동작하는 것으로 알고 있지만 경로는 그렇지 않습니다. 게이트웨이이므로 거의 작동하지 않습니다).

이해하기가 더 쉽다는 점 참고하세요커널 4.8 이전에는 체계적으로 수행해야 했습니다.:

v4.8 커널 이전에는 각 VRF 장치에 iif 및 oif 규칙이 필요했습니다.

ip ru add oif vrf-blue table 10
ip ru add iif vrf-blue table 10

이 규칙은 표준 규칙(없음)을 사용하여 pref 1000의 규칙을 단락시키려는 경우에 oif작동합니다 .l3mdev

관련 정보