Linux 브리지가 있는 IPtables DNAT(인터페이스 주소 없음)

Linux 브리지가 있는 IPtables DNAT(인터페이스 주소 없음)

저는 iptables와 브리지로 몇 가지 실험을 해왔습니다. 이 시나리오는 단지 실험실에 있지만 몇 가지 흥미로운 기능을 발견했고 무슨 일이 일어나고 있는지에 대한 설명을 원합니다(iptables와 비교하면 말이 안 되기 때문에). ).

Debian 11 서버 가상 머신에는 3개의 인터페이스가 있습니다. ens3은 "인터넷"(연구실 외부)에 연결되고, ens4는 연구실 라우터에 연결되며, ens5는 주소가 지정되어 연구실 내부 서브넷에 연결됩니다. ens3 및 ens4에는 IP 주소가 없습니다.

인터페이스 ens3 및 ens4를 사용하여 브릿지 br0을 만들었습니다. 이는 정상적으로 작동하며 "인터넷" 또는 랩 라우터의 트래픽이 ens3과 ens4 사이에서 올바르게 이동합니다.

br_netfilter 커널 모듈을 활성화했으며 net.bridge.bridge-nf-call-iptables = 1브리지 트래픽을 iptables에 표시하려고 합니다.

내가 설정한 목표는 특정 포트(22, SSH)와 일치하는 "인터넷"에서 오는 패킷을 잡고 대상 IP 주소를 ens5의 IP 주소로 변경하는 것입니다.

카운터 증가를 보기 위해 빈 규칙을 추가하면 iptables -t raw -A PREROUTINGpkt 카운터가 증가하기 시작합니다. 따라서 트래픽이 raw PREROUTING체인에 표시됩니다.

다른 빈 규칙을 추가하면 iptables -t mangle -A PREROUTINGpkt 카운터가 다시 증가하기 시작합니다. 지금까지 트래픽은 흐름도를 따르고 있습니다.

이것이 흥미로워지는 곳입니다. 갑자기 다른 빈 규칙을 추가 하면 iptables -t nat -A PREROUTINGpkt 카운터가 증가하지 않습니다. 하지만 흐름도는 트래픽이 어디로 갈지 보여 mangle PREROUTING줍니다 nat PREROUTING. 하지만 그런 일은 분명히 일어나지 않았습니다. Linux 브리지가 iptables 체인과 상호 작용하는 방법에 대한 순서도가 있습니까? 교통량이 어떻게/어디로 사라지는지/가는지 혼란스럽습니다.

DNAT 규칙에 대한 규칙을 작성했지만 해당 DNAT 규칙만 넣을 수 nat PREROUTING있으며 nat PREROUTING트래픽이 전혀 표시되지 않으면 대상 IP를 다시 쓸 수 없습니다. 원시 또는 맹글로 DNAT를 수행할 수 있는 방법이 없다면, 나는 그런 방법을 모릅니다.

관련 정보