
eth0
나는 (IP 주소 192.168.1.16
)와 eth2
(IP 주소 10.10.10.73
) 라는 두 가지 인터페이스를 가진 PC를 가지고 있습니다 . 또한 이 PC에는 main
대상 주소가 이면 인터페이스를 172.16.1.1
사용한다는 호스트 경로가 표에 있습니다 eth0
.
이제 ICMP "에코 요청"을 ( 인터페이스) 172.16.1.1
로 보내면 소스 IP를 사용하여 ICMP "에코 응답"이 (RPF가 비활성화되어 있음) 에서 전송됩니다 . 이 호스트 경로 때문에 이 모든 것이 예상된 대로입니다.10.10.10.73
eth2
eth0
192.168.1.16
그러나 규칙 번호 바로 뒤에 ip rule
선택기 from 10.10.10.73
와 작업을 추가하고 테이블에 인터페이스를 사용하는 기본 경로만 포함 하면 ICMP "에코 응답"이 인터페이스에서 전송됩니다 .lookup test
0
test
eth2
eth2
이 선택기가 어떻게 일치할 수 있는지 혼란스럽습니다 from 10.10.10.73
. ICMP "에코 응답" 메시지가 생성되는 동안 소스 IP가 10.10.10.73
일치하는 경우는 언제입니까?
답변1
에 따르면Linux를 사용한 정책 라우팅 책, 로컬 시스템에서 외부 시스템으로 향하는 패킷은 출력 체인을 통과한 후 라우팅 정책 데이터베이스에 들어가고, 여기에서 선택기가 목적지 from 10.10.10.73
에서 로 향하는 아웃바운드 에코 응답 패킷과 일치하게 됩니다 .10.10.10.73
172.16.1.1
에서http://www.policyrouting.org/PolicyRoutingBook/ONLINE/CH03.web.html:
내부 서비스를 대상으로 하는 외부 소스 패킷의 경로를 고려하십시오. 시스템에 진입하여 입구 패킷 맹글링 및 태깅 단계인 Pre-Route(1)를 통해 처리됩니다. 이 단계에서는 fwmark 및 TOS/QoS 태깅 또는 NetFilter NAT와 같은 패킷 맹글링 작업을 적용합니다. 그런 다음 패킷은 라우팅을 얻기 위해 RPDB로 들어가고 입력(2) 체인으로 라우팅됩니다. 입력 체인은 로컬 머신 서비스로 향하는 패킷에 대한 방화벽 기능을 제공합니다.
반대 시나리오는 이전 단락에서 설명한 응답 패킷과 같이 외부 시스템을 대상으로 하는 내부 서비스 소스 패킷의 패킷 경로입니다. 로컬 머신을 종료하고 방화벽 기능을 제공하는 Output(4) 체인으로 들어갑니다. 그런 다음 경로 처리를 위해 RPDB에 들어가고 종료 패킷 맹글링 및 태깅 단계인 Post-Route(5)를 통해 시스템을 종료합니다.
답변2
from 10.10.10.73
이 주소에서 에코 응답이 발행되므로 선택기가 일치합니다. 그러나 이 경우 진행하는 것이 권장되는 방법은 아닙니다. 왜냐하면 from 10.10.10.73
이 경우 잘못된 경로를 만드는 eth0 이외의 다른 인터페이스로 가는 모든 것에 적용할 수 있기 때문입니다 . to 172.16.1.1
대신 IP 규칙에 사용해야 합니다 .
소스 주소와 일치하는 것은 ip rule
전용 조회 테이블과 관련된 라우팅 결정을 사용하여 패킷이 src
이 인터페이스의 경로에 의해 지정된 기본 주소를 무시하도록 한다는 사실과 관련이 있습니다.ip route list table local
이 다이어그램의 빨간색 부분은 무슨 일이 일어나는지 보여줍니다.커널 패킷 이동 다이어그램
ip rule
패킷이 로컬 프로세스를 위해 시스템에 도착 하지 않으면 기본 경로로 인해 응답은 eth0(분명히 eth0 IP 주소)에서 옵니다. 라우팅 프로세스 변경 조회 테이블 로 인해 ip rule add from 10.10.10.73 table test
대상까지의 경로를 유지하는 인터페이스의 기본 IP 주소를 사용하지 않으므로 이제 응답 인터페이스의 IP 주소를 사용합니다.