
接続速度メーターを追加するには、次の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
2つの質問があります。
古い nftable バージョンを使用しています。
エラーを再現できます
Error: syntax error, unexpected saddr, expecting comma or '}'
(Debian 9のように)。メーター(nftables wiki)提案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’?
実際、多くのオブジェクトは、そのオブジェクトが宣言されているテーブルに対してローカルです。だからあなたは入ることができないWebフィルタ「名前空間」と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フィルタテーブル。