それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

nftablesでルールを追加したら、Operation not supported になる

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