web-dev-qa-db-ja.com

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

Raspberry Piでiptablesを使用すると問題が発生します。
PIにRaspbian Liteの新しいバージョンをダウンロードしたばかりで、iptablesルールを確認するだけですが、機能せず、次のエラーが発生します。
>> iptables -L
iptables/1.8.2 Failed to initialize nft: Protocol not supported
どうすればよいかわかりませんか?古いバージョンのiptablesなどに戻すことはできますか?
念頭に置いて、私はITの世界の真の初心者です。

4
Kenan

Raspbianは確かにそのDebianアップストリームをフォローしていました。デフォルトでは、新しいiptablesユーザーランドツールは「レガシー」の代わりに nftables カーネルAPIを使用しています伝えられるように、iptablesカーネルAPI こちら

現在の状態

注:Debian Busterはデフォルトでnftablesフレームワークを使用します。

Debian Buster以降、iptables-nftレイヤーを使用して(つまり、nf_tablesカーネルサブシステムでiptables構文を使用して)、iptablesを使用する場合のデフォルトのバックエンドはnf_tablesです。これは、ip6tables、arptables、ebtablesにも影響します。

nftablesiptablesを拡張機能で完全に置き換えることを目的としていますが、実装がかなり異なります。とにかく、互換性レイヤーは、ほとんどがユーザーランドツールに保持されますが、一部はカーネルに保持されます。これは、長い間カーネルに残っている通常の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
    
3
A.B