ebtables에서 테이블 BROUTING
의 체인에는 broute
특별한 동작 ACCEPT
과 DROP
작업이 있습니다. 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-legacy
에 ebtables-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
통해 배송됨 )iptables
nftables백엔드 변형)도 받았습니다.아직 출시되지 않은 다음 버전에 해당하는 패치:
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
)