Raspberry Piでiptablesを使用すると問題が発生します。
PIにRaspbian Liteの新しいバージョンをダウンロードしたばかりで、iptablesルールを確認するだけですが、機能せず、次のエラーが発生します。>> iptables -L
iptables/1.8.2 Failed to initialize nft: Protocol not supported
どうすればよいかわかりませんか?古いバージョンのiptablesなどに戻すことはできますか?
念頭に置いて、私はITの世界の真の初心者です。
Raspbianは確かにそのDebianアップストリームをフォローしていました。デフォルトでは、新しいiptables
ユーザーランドツールは「レガシー」の代わりに nftables カーネルAPIを使用しています伝えられるように、iptablesカーネルAPI こちら :
現在の状態
注:Debian Busterはデフォルトでnftablesフレームワークを使用します。
Debian Buster以降、iptables-nftレイヤーを使用して(つまり、nf_tablesカーネルサブシステムでiptables構文を使用して)、iptablesを使用する場合のデフォルトのバックエンドはnf_tablesです。これは、ip6tables、arptables、ebtablesにも影響します。
nftables
はiptables
を拡張機能で完全に置き換えることを目的としていますが、実装がかなり異なります。とにかく、互換性レイヤーは、ほとんどがユーザーランドツールに保持されますが、一部はカーネルに保持されます。これは、長い間カーネルに残っている通常のiptables
"レガシー"レイヤーに追加されます。
iptables
の新しいバージョンは、この互換性レイヤーを使用しています。これは、(ルートとして)iptables -V
を実行することで簡単に確認できます。結果は間違いなく次のようになります。
# iptables -V
iptables v1.8.2 (nf_tables)
レガシーバージョンはまだ出荷されていますが、
# iptables-legacy -V
iptables v1.8.2 (legacy)
同時に、あなたのカーネルが何らかの理由でnftablesをサポートしていないと思います。
だからあなたはできる:
カーネルでのnftablesのサポートを取得します(そして、少なくとも NFT_COMPAT
も)。古いものを保持している場合は、再コンパイルまたはアップグレードが必要になる場合があります。このタスクに多大な労力が必要な場合は、他の方法を使用できます。
または、通常のiptablesカーネルAPIを使用するiptables
のレガシーバージョンを使用します。 前のリンク でその方法を説明しています。 rootユーザーとして(少なくともiptables
およびip6tables
、およびインストールされている場合はebtables
およびarptables
の場合):
レガシーバージョンへの切り替え:
# 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