나는 다음과 같은 상황에 처해 있습니다.
- - - - - - -
| namespace |-------o o------
- - - - - - - vethY ppp0
vethX
어디:
ppp0
PPP 인터페이스이고 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를 ping해도 응답이 없습니다(ARP 응답도 마찬가지).
요청 패킷이 vethY 인터페이스에 도착하지만(wireshark를 사용하여 본 적이 있음) 응답이 생성되지 않습니다.
내 arp 캐시가 비어 있으면 arp 요청이 전송될 때 arp 응답이 다시 전송되지 않습니다.
10.0.0.0/24 dev vethY scope link
대신 기본 테이블에도 규칙을 추가하면 모든 패킷이 올바른 방향으로 흐릅니다.
이 규칙을 기본 테이블에 추가하지 않으면 왜 답변을 받지 못합니까?
vethY 또는 ppp0에서 들어오는 모든 패킷에 대해 T1을 사용하도록 경로를 구성했는데 기본 테이블이 관련된 이유는 무엇입니까?