작동하지 않는 ebtables 규칙에 대해 혼동됨: 로컬 LAN 트래픽만 허용

작동하지 않는 ebtables 규칙에 대해 혼동됨: 로컬 LAN 트래픽만 허용

특정 MAC이 로컬 LAN에 있는 장치와만 통신하도록 제한하고 싶습니다. 내 시도는 다음과 같습니다( "ebtables -t nat -L"명령 출력).

Bridge table: nat

Bridge chain: PREROUTING, entries: 0, policy: ACCEPT

Bridge chain: OUTPUT, entries: 0, policy: ACCEPT

Bridge chain: POSTROUTING, entries: 1, policy: ACCEPT
-d f0:de:f1:1e:e4:83 -j LOCAL

Bridge chain: LOCAL, entries: 1, policy: DROP
-p IPv4 --ip-src 192.168.6.0/24 -j OKAY

Bridge chain: OKAY, entries: 1, policy: ACCEPT
-j ACCEPT

이러한 규칙이 적용되면 Linux 라우터는 IP 주소 192.168.6.70을 사용하는 f0:de:f1:1e:e4:83 장치에서 액세스할 수 없습니다. ICMP ping은 다른 모든 서비스와 함께 중지됩니다.

LOCAL이라는 체인의 정책을 "ACCEPT"로 변경하면 모든 서비스가 f0:de:f1:1e:e4:83에 대한 작업으로 되돌아갑니다. 이는 POSTROUTING 규칙이 실행 중이고 LAN의 패킷만 통과하도록 허용하는 LOCAL 규칙을 평가하고 있음을 알려줍니다.

그렇다면 "-p IPv4 --ip-src 192.168.6.0/24 -j OKAY"192.168.6.70과 192.168.6.254 사이의 ICMP 핑 교환을 허용하지 않는 이유는 무엇입니까?

답변1

이더넷(ebtables에 의해 제어됨)은 IPV4 외에도 많은 프로토콜을 지원하는 것으로 나타났습니다. 결정적으로 ARP 패킷은 위의 LOCAL 체인의 기본 정책에 의해 삭제됩니다.

수정 사항은 POSTROUTING에서 IPv4 패킷을 LOCAL 체인으로만 보내고 POSTROUTING에서 기본 ACCEPT를 허용하여 브리지를 통해 ARP 이더넷 프레임을 허용하는 것입니다.

Bridge chain: POSTROUTING, entries: 1, policy: ACCEPT
-p IPv4 -d f0:de:f1:1e:e4:83 -j LOCAL

관련 정보