사용자 정의 라우팅 테이블을 사용하도록 라우팅을 구성했는데 기본 테이블이 관련된 이유는 무엇입니까?

사용자 정의 라우팅 테이블을 사용하도록 라우팅을 구성했는데 기본 테이블이 관련된 이유는 무엇입니까?

나는 다음과 같은 상황에 처해 있습니다.

- - - - - - -
| namespace |-------o      o------
- - - - - - -     vethY   ppp0
          vethX

어디:

  • ppp0PPP 인터페이스이고 해당 IP 주소는 192.168.100.169/24입니다.
  • vethX네임스페이스 내부의 가상 이더넷 인터페이스이며 해당 IP 주소는 10.0.0.3/24입니다.
  • vethY다른 가상 이더넷 인터페이스이며 IP 주소는 10.0.0.5/24이고 네임스페이스의 기본 게이트웨이이기도 합니다.

실제로 네임스페이스의 라우팅 테이블은 다음과 같습니다.

$ sudo ip netns exec my_namespace ip route
default via 10.0.0.5 dev vethX
10.0.0.0/24 dev vethX proto kernel scope link src 10.0.0.3

이 시나리오에서는 정책 기반 라우팅을 사용하고 싶습니다. 특히 네트워크 패킷의 수신 인터페이스가 인터페이스일 때 사용자 정의 라우팅 테이블을 사용하고 vethY싶습니다 ppp0.

이름이 ''인 사용자 지정 라우팅 테이블을 만들었습니다.T1' 파일에 "T1" 항목을 추가합니다 /etc/iproute2/rt_tables.
그런 다음 이 새 라우팅 테이블을 사용할 시기를 시스템에 알려주는 정책 라우팅 규칙을 추가했습니다.
이제 정책 라우팅 규칙은 다음과 같습니다.

$ ip rule
0:      from all lookup local
32764:  from all iif ppp0 lookup T1
32765:  from all iif vethY lookup T1
32766:  from all lookup main
32767:  form all lookup default

그런 다음 사용자 정의 테이블에 다음 규칙을 추가했습니다.

$ ip route show table T1
default via 192.168.100.169 dev ppp0
10.0.0.0/24 dev vethY scope link
192.168.100.180 dev ppp0 scope link

마지막 줄은 지점 간 링크의 다른 끝점이 무엇인지 보여줍니다.
게다가 기본 라우팅 테이블도 비어 있습니다.

이 구성을 사용하면 네임스페이스에 있고 10.0.0.5를 핑하면 응답을 받지 못합니다(ARP 응답도 아님).
요청 패킷이 vethY 인터페이스에 도달하지만(wireshark를 사용하는 것을 본 적이 있음) 응답이 생성되지 않습니다.
내 arp 캐시가 비어 있으면 arp 요청이 전송될 때 arp 응답이 다시 전송되지 않습니다.

대신, 기본 테이블에도 규칙을 추가하면
10.0.0.0/24 dev vethY scope link
모든 패킷이 올바른 방식으로 흐릅니다.

이 규칙을 기본 테이블에 추가하지 않으면 왜 답변을 받지 못합니까?
vethY 또는 ppp0에서 들어오는 모든 패킷에 대해 T1을 사용하도록 라우팅을 구성했는데 기본 테이블이 관련된 이유는 무엇입니까?

관련 정보