web-dev-qa-db-ja.com

iptables / 1.8.2 nftの初期化に失敗しました:プロトコルはサポートされていません

私はDebianを実行していますが、iptablesを使用してファイアウォールルールを設定しようとしていますが、エラーが発生しています。

iptables/1.8.2 Failed to initialize nft: Protocol not supported

設定しようとしているルールの種類は関係ありません。同じエラーが発生するだけです。何も見つからずにエラーをグーグルで検索してみました。

これらは私が設定しようとしているルールです:

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

アイデアを持っている人はいますか?ありがとう

1
grabbhalf

Debian 10は デフォルトではnftablesよりもiptables を使用しています。つまり、別のiptablesコマンド( iptables-nft )はカーネルnftables APIと通信しています:実際にはすべてのiptablesルールをnftablesに変換しますルール、xtablesモジュール拡張の互換性を維持しながら、拡張の直接ネイティブ変換が存在しない場合。

どういうわけか、あなたのカーネルnftablesAPIは機能していません(おそらく、これは標準のDebian 10カーネルではなく、nftablesサポートが有効になっていないと思います。 uname -r?)、コマンドは失敗します。以前のリンクで説明したように、実際に実行されるuserlandコマンドを変更することで、iptablesカーネルAPIとのみ通信するレガシーiptablesコマンドに戻すことを選択できます。

# update-alternatives --set iptables /usr/sbin/iptables-legacy
# update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
# update-alternatives --set arptables /usr/sbin/arptables-legacy
# update-alternatives --set ebtables /usr/sbin/ebtables-legacy

非機能nftables機能については、引き続き調査する必要があります。 iptablesから(native)nftablesに切り替えることには大きな利点があるため、それを行うことはできません。

1
A.B