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

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

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

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

어디:

  • ppp0PPP 인터페이스이고 IP 주소는 192.168.100.169/24 입니다.
  • vethX네임스페이스 내의 가상 이더넷 인터페이스이며 해당 IP 주소는 10.0.0.3/24입니다.
  • vethYIP 주소가 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를 ping해도 응답이 없습니다(ARP 응답도 마찬가지).
요청 패킷이 vethY 인터페이스에 도착하지만(wireshark를 사용하여 본 적이 있음) 응답이 생성되지 않습니다.
내 arp 캐시가 비어 있으면 arp 요청이 전송될 때 arp 응답이 다시 전송되지 않습니다.


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

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

관련 정보