iptables는 브리지 트래픽을 필터링하지 않습니다.

iptables는 브리지 트래픽을 필터링하지 않습니다.

3.10 커널을 실행하는 Linux 호스트가 있고 두 개의 브리지 인터페이스(eth0 및 eth1이 brid00이고 IP가 없음)가 있습니다.

브리지는 제대로 작동하지만 이제 브리지를 통과하는 일부 트래픽을 필터링하고 싶지만 iptables 규칙이 트리거되지 않습니다.

활성화했고 net.bridge.bridge-nf-call-iptables(모든 트래픽은 IPv4임) 다음을 net.ipv4.ip_forward사용하고 있습니다.신체 발달일치하는 모듈.

예를 들어 모든 ICMP 요청을 차단해 보세요.

iptables -A FORWARD -p icmp -m physdev --physdev-in eth0 --physdev-out eth1 -j DROP

효과가 없습니다. 무슨 일이 일어나고 있는지에 대한 단서가 있나요? 나는 ebtables를 사용하지 않고도 이런 종류의 필터링이 가능하다고 생각합니다(나의 향후 계획은 일부 고급 필터링에서 nfqueue를 사용하는 것이므로 브리징 트래픽 규칙을 트리거하려면 iptables가 필요할 것입니다).

답변1

커널 3.10의 버그로 간주됩니다(아마도 내 아키텍처인 arm64에만 해당). 4.x 커널에서 잘 작동하며 일부 커널에서 테스트되었습니다. 커널 다이어그램과 문서에 따르면 커널 3.x와 4.x 사이의 라우팅은 동일하며 둘 다에서 작동해야 하지만 그렇지 않습니다.

br_netfilter는 커널 4.x의 별도 모듈이므로 modprobe br_netfilter이 기능을 활성화해야 합니다.

관련 정보