iptables-legacy не может загрузить цели NFQUEUE, а параметры --queue-num и --queue-bypass неизвестны

iptables-legacy не может загрузить цели NFQUEUE, а параметры --queue-num и --queue-bypass неизвестны

Я пытаюсь запустить следующую команду iptables изhttps://github.com/farukuzun/notsodeepна убунту 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 (https://docs.microsoft.com/windows/wsl/install-win10)?

решение1

Проверьте вывод этих команд:

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

Каждая цель xtables состоит из двух частей:

  • Библиотека пользовательского пространства для инструмента iptables — она анализирует аргументы командной строки от пользователя и преобразует их в структуру данных, и наоборот, для вывода правил из ядра.
  • Модуль ядра, обрабатывающий пакеты.

Первые две команды проверяют наличие модуля ядра и его загрузку. Третье правило проверяет наличие библиотеки пользовательского пространства и список поддерживаемых опций.

Первая версия WSL имеет очень ограниченную поддержку собственных инструментов Linux, поскольку она не использует само ядро ​​Linux, а использует трансляцию системных вызовов в ядро ​​Windows NT.

Для полной поддержки iptables следует использовать WSL2. Он использует настоящее ядро ​​Linux, а не эмуляцию ядра Windows NT.

решение2

Что касается установки модуля ядра xt_NFQUEUE в WSL2, вам необходимо настроить свой собственный WSL kenel. Вы можете обратиться к следующему веб-сайту: https://gist.github.com/cerebrate/d40c89d3fa89594e1b1538b2ce9d2720

Я должен добавить кое-что о включении «NFQUEUE» в ядро, см. рисунок ниже. https://i.stack.imgur.com/FhGfy.png

Связанный контент