2016-11-07 7 views
0

나는 다음과 같은 한 리눅스 다리에 패킷을 태그 IF 구성 :필터링 밖으로 VLAN은

eth0 --- br0 --- eth1 

내가 eth1에에 (포트 20000에) UDP 브로드 캐스트 전송을 수신하고 eth0를에게 전달하기 위해 다리를 싶지 않아 (내 유선 인터페이스). 따라서, 나는 신청한다

ebtables -t filter -A FORWARD -o eth0 -p 0x0800 --ip-protocol udp --ip-destination-port 20000 -j DROP 

그것은 나를 위해 크다. 나는 트래픽이의 eth1에 태그 도착하고 내가 드릴 수 없습니다 VLAN 100에 라디오를 관리 할 수있는 VLAN 지원 브리지를 추가 한

여기
eth0 --- br0 --- eth1 
      | 
     br0.100 

다음과 같은 구성으로 즉, VLAN 모드에서 내 장치를, 실행하고 때 그것이 다리를 통과 할 때 같은 규칙을 사용하여 그것을 탐지하십시오.

vlan 옵션을 사용하여 iptables 및 ebtable을 사용하여 패킷을 감지하려고 시도했습니다. ebtable을 통해 udp 포트로 필터링 할 수 없었습니다. 또한, iptables를 통해 포트를 표시하는 방법을 찾을 수 없습니다. 또한 physdev를 사용하여 성공하지 못하고 마킹을 시도했습니다.

태그가 지정된 스트림에 대해이 작업을 수행하는 올바른 방법이 있습니까?

+0

이것은 좋은 질문입니다 (흥미로운 것입니다!)하지만 stackoverflow (소프트웨어 개발 질문 용) 주제와 관련이 없습니다. 이것은 [serverfault] (http://serverfault.com)의 좋은 후보가 될 것입니다. – larsks

답변

1

802.1t 캡슐화 된 브리지 된 패킷 은 기본적으로 iptables와 함께 표시되지 않을 수 있습니다.

이 가능하려면, 수행

echo 1 > /proc/sys/net/bridge/bridge-nf-filter-vlan-tagged 

당신의 iptables와 그 패킷을 필터링 할 수 있습니다, 지금 http://ebtables.netfilter.org/documentation/bridge-nf.html

참조하십시오. 0x4E20이 포트 (20000)이며, W는 하여 4 바이트 경기의 오프셋

iptables -A FORWARD -m u32 --u32 "W&0xFFFF=0x4E20" -j DROP 

가 (당신이 참고 : 당신은 같은 뭔가 패킷의 대상 포트와 일치하는 방법을 찾아야한다 마지막 두 개의 바이트와 0x0000FFFF가 일치 함). W가 무엇인지 알아 내야합니다.

u32 일치에 대한 자세한 내용은 iptables 매뉴얼 페이지를 참조하십시오.