nftablesでruleを追加してたら、時々遭遇するこの記述である。
Error: Could not process rule: Operation not supported
になるのは、type nat のルールを type filter に入れたとき
再現例
filter に snat を入れる
# filter を作る nft add table sample nft add chain sample postrouting { type filter hook input priority 0 \; } # filter に nat を入れる nft add rule sample postrouting udp dport 53 snat to 192.168.1.100;
実行結果
Error: Could not process rule: Operation not supported add rule sample postrouting udp dport 53 snat to 192.168.1.100 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
さくらインターネットのnftablesの記事にも記載がある。
このうち「タイプ」「フック」「プライオリティ」は必須のパラメータだ。まず「タイプ」はそのチェーンがどのような動作を行うためのものかを指定するもので、また「フック」では紐付けるNetfilterのフックを指定する。各アドレスファミリごとに指定できるタイプは異なり、またタイプ毎に指定できるフックも異なる(表2、3)。さらに、たとえばNATに関連するステートメントはタイプとしてnatが指定されたチェーンでしか利用できないといった制約もある。 https://knowledge.sakura.ad.jp/22636/
filter でだいたいなんでもできるのついつい犯しがちなミスである。
また、公式 wiki にも記載がある。
https://wiki.nftables.org/wiki-nftables/index.php/Configuring_chains