私は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
アイデアを持っている人はいますか?ありがとう
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に切り替えることには大きな利点があるため、それを行うことはできません。