Saddr 및 Daddr에 대해 동일한 nftable 세트를 재사용하는 방법은 무엇입니까?

Saddr 및 Daddr에 대해 동일한 nftable 세트를 재사용하는 방법은 무엇입니까?

라우터를 사용할 수 있는 컴퓨터를 허용 목록에 추가하기 위해 다음 nftables 구성을 사용합니다.

table bridge filter {
    set authorized {
        typeof ether saddr
        flags constant
        elements = {
            aa:aa:aa:aa:aa:aa,
            ff:ff:ff:ff:ff:ff
        }
    }

    set authorized2 {
        typeof ether daddr
        flags constant
        elements = {
            aa:aa:aa:aa:aa:aa,
            ff:ff:ff:ff:ff:ff
        }
    }

    chain input {
            type filter hook input priority 0; policy drop;
            ether saddr @authorized accept
            ether daddr @authorized2 accept
    }

}

유형을 제외하면 두 그룹은 동일합니다.

saddr둘 다에 대해 하나의 세트만 지정 및 사용 하고 daddr중복된 MAC 주소를 방지할 수 있는 방법이 있습니까 ?

답변1

단순함: 매뉴얼 페이지에서 확인할 수 있는 것과 typeof ether saddr동일한 유형typeof ether daddrnft(8):

이더넷 헤더 표현

ether {daddr | saddr | type}

표 37. 이더넷 헤더 표현 유형

핵심 단어 설명하다 유형
아빠 대상 MAC 주소 에테르 주소
사드르 소스 MAC 주소 에테르 주소
유형 에테르형 에테르형

이는 아래의 3가지 동등한 방법 중 하나를 사용하여 단일 컬렉션을 정의하고 동일한 결과를 얻을 수 있음을 의미합니다. 이전에는 시각적인 구별이 없었습니다.nftables0.9.4첫 번째 열의 정의를 사용하는 새 키워드는 typeof세 번째 열의 정의를 사용하는 키워드의 대안으로 소개됩니다.type

  • 원시 type키워드(정확한 유형에 대해서는 문서를 확인해야 함)

    type ether_addr
    
  • 또는 새로운 typeof키워드(이를 사용하는 규칙에서 어휘를 어느 정도 재사용할 수 있음)

    • 누구나

      typeof ether saddr
      
    • 또는

      typeof ether daddr
      

따라서 최종 규칙 세트는 다음과 같이 작성할 수 있습니다.

table bridge filter {
    set authorized {
        typeof ether saddr
        flags constant
        elements = {
            aa:aa:aa:aa:aa:aa,
            ff:ff:ff:ff:ff:ff
        }
    }

    chain input {
            type filter hook input priority 0; policy drop;
            ether saddr @authorized accept
            ether daddr @authorized accept
    }
}

참고: 현재 규칙 세트는 이 세트의 모든 항목 또는 이 세트의 모든 항목을 허용합니다. 불일치둘 다동시에. 또한 그렇기 때문에입력하다대신 후크앞으로대상 MAC 주소가 자신의 MAC 주소라는 것을 후크가 수락해야 한다는 점이 조금 이상해 보입니다. (물론 난독화할 때 첫 번째 바이트 멀티캐스트 비트를 설정하면 안 되며 소스로서 효과가 없습니다. 하지만 대상이 일치하는 방송 대상을 찾는 방법입니다).

관련 정보