nftables: ebtables 레거시와 같은 BROUTING 동작을 얻는 방법은 무엇입니까?

nftables: ebtables 레거시와 같은 BROUTING 동작을 얻는 방법은 무엇입니까?

ebtables에서 테이블 BROUTING의 체인에는 broute특별한 동작 ACCEPTDROP작업이 있습니다. ACCEPT브리징/전달 경로를 의미하고 DROP라우팅/입력 경로를 의미합니다. 예를 들어 IPv6 패킷이 모두 직접 브리지되는 동안 적절한 iptables 설정을 사용하여 IPv6가 아닌 모든 패킷이 NAT를 통과하도록 강제하려면 다음을 수행할 수 있습니다.

ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i wan

nftables에서 이 동작을 어떻게 얻을 수 있습니까?

여러 게시물과 오래된nftables 매뉴얼 페이지구현되지 않는다고 제안했습니다. 또한,nftables 메일링 리스트의 스레드결국 실제로 유효한 응답을 얻지 못했습니다.

아직 구현되지 않은 상태인가요? 그렇다면 해결 방법이 있습니까? 아니면 ebtables-legacy를 사용해야 합니까? 감사해요.

답변1

아직 구현되지 않은 상태인가요?

예, 하지만 아직 몇 주 동안만 가능합니다 (Linux 커널 6.4는 2023-06년 말 또는 2023-07년 초에 출시되어야 함). 사용에 대해 허용된 제안(몇 번의 반복 후)브루트~와 함께nftablesnetfilter-devel의 출처는 다음과 같습니다.2023-02-24.

업데이트: 이제 공식적으로 nft(nftables) >= 1.0.8 및 ebtables-nft>= 1.8.10인 경우 이 답변 끝에 있는 업데이트를 참조하세요.

되었습니다아직 출시되지 않은 항목에 추가됨리눅스 커널 6.42023년 4월 26일:

넷필터:

  • 패킷이 브리지되는 대신 라우팅되도록 nf_tables 'brouting' 지원 추가

아직 출시되지 않은 차기작을 준비 중입니다.nftables버전, 아마도 1.0.8:

메타: 메타 브루트 지원 소개

라우팅을 위해 패킷을 IP 스택으로 전환하기 위해 브리지 사전 라우팅 후크에 사용할 수 있습니다.

이는 ebtables -t broute기능을 대체하는 것입니다.

없다ebtables특수한 수락/드롭 사용에 대한 특이성브루트유형. 을 설정하여 사용됩니다.브루트규칙에 플래그를 지정합니다.다리가족 유형필터그리고사전 라우팅훅:

meta broute set 1

따라서 (를 사용하는 대신 ebtables-legacyebtables-nft대한 지원이 부족했습니다.브루트최근까지):

ebtables-legacy -t broute -A BROUTING -p ! ipv6 -j DROP -i wan

대신에 다음과 같이 할 것입니다:

table bridge b {
    chain prerouting {
        type filter hook prerouting priority -250; policy accept;
        ether type != ip6 iifname wan meta broute set 1 accept
    }
}

또한 ( 소스를 ebtables-nft통해 배송됨 )iptablesnftables백엔드 변형)도 받았습니다.아직 출시되지 않은 다음 버전에 해당하는 패치:

ebtables-nft: broute 테이블 에뮬레이션 추가

meta broute set 1에뮬레이트하려면 new를 사용하세요 -t broute. 가 주어 지면 -t broute자동으로 내부적 -j DROP으로 번역됩니다 meta broute set 1 accept .

이는 (여전히 커널 >= 6.4) 대신에 있는 ebtables-nft그대로 받아들이 는 것을 허용합니다 :ebtables-legacy

ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i wan

업데이트

  • 위에서 쓴 것처럼 커널6.4는 2023년 6월 25일경에 출시되었습니다.기능을 받았습니다

  • 위에 쓴 것처럼,nftables1.0.8은 2023년 7월 14일경에 출시되었습니다.이제 broute를 지원합니다:

    • 브리지 사전 라우팅 후크에서 단락 브리지 논리에 대한 지원을 제공하고 패킷을 로컬 IP 스택에 전달합니다.

      ... meta broute set 1
      
  • iptables: 1.8.10 2023-10-10쯤 출시(또한 바이너리 제공ebtables)는 이제 다음을 통해 broute를 지원합니다 ebtables-nft.

    • ebtables-nft의 Broute 테이블 지원

    이 버전부터는 아래 명령이 성공합니다.

    ebtables-nft -t broute -A BROUTING -p ! ipv6 -j DROP -i wan
    

    위에 쓰여진 것처럼 DROP실제로는 broute set 1 accept아래에 표시된 대로 나타납니다(표시는 일반적으로 괜찮지만 변경은 일반적으로 좋지 않습니다).

    # nft list ruleset
    table bridge broute {
      chain BROUTING {
          type filter hook prerouting priority -2147483648; policy accept;
          iifname "wan" ether type != ip6 counter packets 0 bytes 0 meta broute set 1 accept
      }
    }
    

    (우선순위 -2147483648 이상해 보일 수도 있지만 마찬가지입니다.다음에서 사용하는 후크 우선순위ebtables-legacy:NF_BR_PRI_FIRST)

관련 정보