POSTROUTING 체인 내부 또는 이후의 아웃바운드 인터페이스 선택에 영향을 줍니까?

POSTROUTING 체인 내부 또는 이후의 아웃바운드 인터페이스 선택에 영향을 줍니까?

다수의 KVM 인스턴스를 호스팅하는 시스템이 있습니다. 이들 모두는 단일 브리지(예: brvirt)에 연결되어 있으며 이 브리지에도 연결되어 있습니다 eth1. 이 레이어 2 환경은 주소 변경을 위해 172.16.10.0/24를 사용하는 개인 네트워크에 있습니다. 시스템에는 eth0(10.10.10.10)과 eth2(10.10.20.20) 이라고 부르는 두 개의 다른 인터페이스가 있습니다 .

일반적으로 외부 연결은 SNAT다음 주소를 통해 제공됩니다 eth0(호스트의 기본 게이트웨이도 이 인터페이스 외부에 있음). 을 위한일부 시스템SNAT, 에 연결된 10.10.20.0/24 네트워크에서 명시적인 1-1 규칙을 원합니다 eth2.

POSTROUTING이는 아웃바운드 인터페이스 선택을 수행하기 위해 체인에 도달할 때 SNAT이미 완료되었기 때문에 문제가 됩니다. 커널은 이미 기본 경로를 선택했습니다(직접 연결된 네트워크가 아닌 다른 네트워크에 대한 연결을 가정). 이는 규칙이 SNAT소스 IP 주소를 수정하면 패킷이 잘못된 레이어 2에서 시작되기 때문에 로컬 라우팅 인프라가 패킷을 삭제한다는 것을 의미합니다. 회로망.

이 문제를 해결할 방법이 있나요? 내가 무엇을정말원하는 것은 체인이 끝날 때 패킷의 소스 주소를 기반으로 라우팅 결정을 내리는 것입니다 POSTROUTING. 하지만 그럴 만한 POSTROUTING이유가 있습니다.

답변1

이는 간단한 정책 기반 라우팅을 통해 수행할 수 있습니다.

스키마가 포함된 일련의 규칙과 경로가 필요합니다.

ip rule add from 172.16.10.X iif brvirt lookup 200
ip route add default via 1.2.3.4 src 4.3.2.1 dev ethY table 200

변수:

172.16.10.X = KVM's IP
200         = Example value for routing_table, has to be unique for each KVM
ethY        = either eth0 or eth2
1.2.3.4     = Example Gateway on iface ethY
4.3.2.1     = Example Source-IP for each KVM

이는 소스 주소를 사용하여 172.16.10.X지정된 iface를 통해 들어오는 모든 항목을 라우팅합니다.ethY4.3.2.1

더 복잡하게 수행할 수도 있지만 fwmarks이 경우에는 이것이 필요하지 않다고 생각합니다.

다음을 사용하여 경로를 확인할 수 있습니다 ip route get iif brvirt from 172.16.10.X 8.8.8.8. 그러면 커널이 에서 172.16.10.X으로 의 연결에 사용할 경로와 출력 장치가 표시됩니다 8.8.8.8.

귀하의 질문에 답변이 되었기를 바랍니다.

f0o

관련 정보