iptables-legacy não pode carregar alvos NFQUEUE e as opções --queue-num e --queue-bypass são opções desconhecidas

iptables-legacy não pode carregar alvos NFQUEUE e as opções --queue-num e --queue-bypass são opções desconhecidas

Estou tentando executar o seguinte comando iptables dehttps://github.com/farukuzun/notsodeepno Ubuntu 20.04.1.

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

Mas o resultado da execução é o seguinte:

# 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.

E o seguinte resultado de execução faz parecer que o destino NFQUEUE não existe na minha máquina:

# 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.

Estou envergonhado porque é uma situação que nunca vi antes. Como eu esperava, todos os comandos devem funcionar bem.

Isso tudo porque o sistema Ubuntu que estou usando é baseado em WSL (https://docs.microsoft.com/windows/wsl/install-win10)?

Responder1

Verifique a saída destes comandos:

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

Cada destino xtables consiste em duas partes:

  • Biblioteca Userspace para ferramenta iptables - ela analisa argumentos de linha de comando do usuário e os traduz em uma estrutura de dados e vice-versa para imprimir regras do kernel
  • Módulo do kernel, que processa os pacotes.

Os dois primeiros comandos verificam a presença do módulo do kernel e o carregamento do mesmo. A terceira regra verifica a presença da biblioteca do espaço do usuário e a lista de opções suportadas.

A primeira versão do WSL tem suporte muito limitado às ferramentas nativas do Linux, pois não usa o kernel do Linux em si, mas usa a tradução de chamadas de sistema para o kernel do Windows NT.

Para obter suporte completo do iptables você deve usar o WSL2. Ele usa o kernel Linux real, não emulação do kernel do Windows NT.

Responder2

sobre a instalação do módulo do kernel xt_NFQUEUE no WSL2, você precisa personalizar seu próprio kenel WSL. https://gist.github.com/cerebrate/d40c89d3fa89594e1b1538b2ce9d2720

Devo acrescentar algo sobre a inclusão de "NFQUEUE" no kernel, consulte a figura abaixo https://i.stack.imgur.com/FhGfy.png

informação relacionada