eth0
(IP 주소 192.168.1.16
)와 eth2
(IP 주소 10.10.10.73
) 의 두 가지 인터페이스가 있는 컴퓨터가 있습니다 . 또한 main
테이블에 있는 이 PC에는 대상 주소가 인터페이스를 172.16.1.1
사용 하는지 알려주는 호스트 경로가 있습니다.eth0
172.16.1.1
이제 10.10.10.73
(인터페이스)에서 ICMP "에코 요청"을 보낼 때 eth2
소스 IP를 사용하여 ICMP "에코 응답"을 보냅니다(RPF가 비활성화되어 있습니다). 해당 호스트 라우팅으로 인해 이 모든 것이 예상대로 작동합니다.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) 체인으로 라우팅됩니다. 입력 체인은 로컬 시스템 서비스로 향하는 패킷에 방화벽 기능을 제공합니다.
반대의 경우는 이전 단락에서 설명한 응답 패킷과 같이 외부 시스템으로 향하는 내부 서비스에서 발생하는 패킷의 패킷 경로입니다. 로컬 시스템을 종료하고 방화벽 기능을 제공하는 출력(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 주소가 사용됩니다.