iptables-legacy は NFQUEUE ターゲットをロードできず、--queue-num および --queue-bypass オプションは不明なオプションです

iptables-legacy は NFQUEUE ターゲットをロードできず、--queue-num および --queue-bypass オプションは不明なオプションです

私は次のiptablesコマンドを実行しようとしていますhttps://github.com/farukuzun/notsodeepUbuntu 20.04.1 上。

iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK --sport 443 -j NFQUEUE --queue-num 200 --queue-bypass

しかし、実行結果は次のようになります。

# iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK --sport 443 -j NFQUEUE --queue-num 200 --queue-bypass
iptables v1.8.4 (legacy): unknown option "--queue-num"
Try `iptables -h' or 'iptables --help' for more information.

次の実行結果では、NFQUEUE ターゲットがマシン上にまったく存在しないように見えます。

# iptables -A INPUT -j NFQUEUE
iptables v1.8.4 (legacy): Couldn't load target `NFQUEUE':No such file or directory

Try `iptables -h' or 'iptables --help' for more information.

今までに見たことのない状況なので恥ずかしいです。予想通り、すべてのコマンドは正常に動作するはずです。

これは私が使用しているUbuntuシステムがWSL(マイクロソフト)?

答え1

次のコマンドの出力を確認します。

  • modinfo xt_NFQUEUE
  • lsmod | grep NFQUEUE
  • iptables -j NFQUEUE --help

すべての xtables ターゲットは 2 つの部分で構成されます。

  • iptables ツールのユーザー空間ライブラリ - ユーザーからのコマンドライン引数を解析してデータ構造に変換し、その逆を行ってカーネルからのルールを出力します。
  • パケットを処理するカーネル モジュール。

最初の 2 つのコマンドは、カーネル モジュールの存在とそのロードをチェックします。3 番目のルールは、ユーザー空間ライブラリの存在とサポートされているオプションのリストをチェックします。

最初のバージョンの WSL では、Linux カーネル自体を使用せず、システム コールを Windows NT カーネルに変換して使用するため、ネイティブ Linux ツールのサポートが非常に制限されています。

iptables の完全なサポートを得るには、WSL2 を使用する必要があります。これは、Windows NT カーネルのエミュレーションではなく、実際の Linux カーネルを使用します。

答え2

WSL2 に xt_NFQUEUE カーネル モジュールをインストールするには、独自の WSL カーネルをカスタマイズする必要があります。次の Web サイトを参照してください。 https://gist.github.com/cerebrate/d40c89d3fa89594e1b1538b2ce9d2720

カーネルに「NFQUEUE」を含めることについて追加する必要があります。下の図を参照してください。 https://i.stack.imgur.com/FhGfy.png

関連情報