iptables-legacy no puede cargar objetivos NFQUEUE y las opciones --queue-num y --queue-bypass son opciones desconocidas

iptables-legacy no puede cargar objetivos NFQUEUE y las opciones --queue-num y --queue-bypass son opciones desconocidas

Estoy intentando ejecutar el siguiente comando de iptables desdehttps://github.com/farukuzun/notsodeepen ubuntu 20.04.1.

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

Pero el resultado de la ejecución es el siguiente:

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

Y el siguiente resultado de ejecución hace que parezca que el objetivo NFQUEUE no existe en mi máquina en absoluto:

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

Me da vergüenza porque es una situación que nunca antes había visto. Como esperaba, todos los comandos deberían funcionar bien.

¿Es todo esto porque el sistema Ubuntu que estoy usando está basado en WSL (https://docs.microsoft.com/windows/wsl/install-win10)?

Respuesta1

Verifique el resultado de estos comandos:

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

Cada objetivo de xtables consta de dos partes:

  • Biblioteca de espacio de usuario para la herramienta iptables: analiza los argumentos de la línea de comandos del usuario y los traduce a una estructura de datos, y viceversa para imprimir reglas desde el kernel.
  • Módulo kernel, que procesa los paquetes.

Los dos primeros comandos verifican la presencia del módulo del kernel y su carga. La tercera regla verifica la presencia de la biblioteca del espacio de usuario y la lista de opciones admitidas.

La primera versión WSL tiene un soporte muy limitado de las herramientas nativas de Linux, porque no utiliza el kernel de Linux en sí, sino que utiliza la traducción de llamadas del sistema al kernel de Windows NT.

Para obtener soporte completo de iptables, debe utilizar WSL2. Utiliza el kernel de Linux real, no una emulación del kernel de Windows NT.

Respuesta2

Para instalar el módulo del kernel xt_NFQUEUE en WSL2, debe personalizar su propio WSL kenel. Puede consultar el siguiente sitio web: https://gist.github.com/cerebrate/d40c89d3fa89594e1b1538b2ce9d2720

Debo agregar algo sobre la inclusión de "NFQUEUE" en el kernel; consulte la figura siguiente https://i.stack.imgur.com/FhGfy.png

información relacionada