
Я пытаюсь запустить следующую команду 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