연결 속도 측정기를 추가하려면 다음과 같은 nftable 규칙이 있습니다.
nft add rule ip filter input tcp dport @rate_limit meter syn4-meter \{ ip saddr . tcp dport timeout 5m limit rate 20/minute \} counter accept
오류가 발생합니다.
Error: syntax error, unexpected saddr, expecting comma or '}'
add rule ip filter input tcp dport @rate_limit ct state new meter syn4-meter { ip saddr . tcp dport timeout 5m limit rate 20/minute } counter accept
^^^^^
nftables 규칙 세트
table ip filter {
chain input {
type filter hook input priority 0; policy accept;
}
}
table inet filter {
set rate_limit {
type inet_service
size 50
}
chain input {
type filter hook input priority 0; policy accept;
}
}
처음에는 차이가 있는지 확인하기 위해 inet
오류를 추가했기 때문에 성공하지 못했습니다. ip
어떤 충고?
답변1
두 가지 질문이 있습니다.
너무 오래된 nftable 버전을 사용하고 있습니다.
오류를 재현할 수 있습니다
Error: syntax error, unexpected saddr, expecting comma or '}'
(Debian 9에서와 같이).미터(nftables 위키)제안nftables>= 0.8.1 및핵심>= 4.3.업그레이드nftables. 예를 들어 Debian 9에서는 다음을 사용합니다.뒤로 스트레칭 및 이식(뒤로 스트레칭 및 이식, 아니요구축함 백포트) 버전
0.9.0-1~bpo9+1
, 죄송합니다. 다른 배포판에서 이 작업을 수행하는 방법을 검색해야 합니다.명령에 표시된 대로 잘못된 테이블 사용(nftables 0.9.2 사용 시):
# nft add rule ip filter input tcp dport @rate_limit meter syn4-meter \{ ip saddr . tcp dport timeout 5m limit rate 20/minute \} counter accept Error: No such file or directory; did you mean set ‘rate_limit’ in table inet ‘filter’?
실제로 많은 개체가 해당 개체가 선언된 테이블에 대해 로컬입니다. 그러니 넌 들어갈 수 없어웹 필터"네임스페이스" 및IP 필터"네임스페이스". 이는 동일한 IPset이 있는 경우
iptables
+와 다릅니다.ipset
놓다어떤 테이블에서도 사용할 수 있습니다.이것은 작동합니다(충분한 새로운 nftable을 얻은 후에):
nft add rule inet filter input tcp dport @rate_limit meter syn4-meter \{ ip saddr . tcp dport timeout 5m limit rate 20/minute \} counter accept
또는 기기 정의를 다시 다음으로 이동할 수 있습니다.IP 필터테이블.