tc 트래픽 조절을 사용하여 ethtype별로 필터링

tc 트래픽 조절을 사용하여 ethtype별로 필터링

eth 유형을 기반으로 트래픽을 필터링하고 지정된 트래픽을 삭제하는 qdisc를 만들려고 합니다. 하지만 현재 필터가 작동하지 않고 트래픽을 캡처하지 않습니다.

'# tc 필터는 dev eth2 prio 100 프로토콜을 추가합니다. 모든 상위 1: u32는 12 flowid 1:2에서 u16(eth 유형)(마스크)과 일치합니다.'

그래서 내 질문은 eth 유형을 기반으로 트래픽을 얻도록 필터를 어떻게 변경합니까?

답변1

참조(0)는 네트워크 부분(계층 3)에 대한 것입니다. 따라서 EtherType을 얻으려면 네트워크 계층 직전에유효 탑재량, -2(u16이 고려되는 경우 또는 u32 및 충분한 마스킹이 있는 -4). 따라서 EtherType 0x9000을 일치시키려면(루프백이라고 함):

tc filter add dev eth2 prio 100 protocol all parent 1: u32 match u16 0x9000 0xffff at -2 flowid 1:2

이는 다음과 동일합니다(실제로 다음과 같이 번역됩니다).

tc filter add dev eth2 prio 100 protocol all parent 1: u32 match u32 0x00009000 0x0000ffff at -4 flowid 1:2

그러나 실제로 이것은 약간 과잉입니다. 여기의 매개변수 protocol는 이미 EtherType 필터이므로 이것으로 충분합니다.

tc filter add dev eth2 prio 100 protocol 0x9000 parent 1: matchall flowid 1:2

별도의 처리 없이 바로 드랍하고 싶다면 flowid 1:2로 교체하세요 action drop.

관련 정보