iptables-legacy kann NFQUEUE-Ziele nicht laden und die Optionen --queue-num und --queue-bypass sind unbekannte Optionen

iptables-legacy kann NFQUEUE-Ziele nicht laden und die Optionen --queue-num und --queue-bypass sind unbekannte Optionen

Ich versuche, den folgenden iptables-Befehl auszuführen vonhttps://github.com/farukuzun/notsodeepauf Ubuntu 20.04.1.

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

Das Ergebnis der Ausführung ist jedoch wie folgt:

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

Und das folgende Ausführungsergebnis lässt es so aussehen, als ob das NFQUEUE-Ziel auf meinem Computer überhaupt nicht existiert:

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

Es ist mir peinlich, weil ich so eine Situation noch nie erlebt habe. Wie erwartet sollten alle Befehle einwandfrei funktionieren.

Liegt das daran, dass das von mir verwendete Ubuntu-System auf WSL basiert (https://docs.microsoft.com/windows/wsl/install-win10)?

Antwort1

Überprüfen Sie die Ausgabe dieser Befehle:

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

Jedes xtables-Ziel besteht aus zwei Teilen:

  • Userspace-Bibliothek für das iptables-Tool - es analysiert Befehlszeilenargumente des Benutzers und übersetzt sie in eine Datenstruktur und umgekehrt, um Regeln vom Kernel aus zu drucken.
  • Kernelmodul, das die Pakete verarbeitet.

Die ersten beiden Befehle prüfen, ob das Kernelmodul vorhanden ist und ob es geladen wurde. Die dritte Regel prüft, ob die Userspace-Bibliothek und die Liste der unterstützten Optionen vorhanden sind.

Die erste Version von WSL bietet nur eine sehr eingeschränkte Unterstützung der nativen Linux-Tools, da sie nicht den Linux-Kernel selbst verwendet, sondern die Übersetzung von Systemaufrufen in den Windows NT-Kernel nutzt.

Um vollständige Unterstützung für iptables zu erhalten, sollten Sie WSL2 verwenden. Es verwendet den echten Linux-Kernel, keine Emulation über den Windows NT-Kernel.

Antwort2

Informationen zur Installation des xt_NFQUEUE-Kernelmoduls in WSL2 finden Sie auf der folgenden Website: https://gist.github.com/cerebrate/d40c89d3fa89594e1b1538b2ce9d2720

Ich muss noch etwas zum Einbinden von "NFQUEUE" in den Kernel hinzufügen, siehe Abbildung unten https://i.stack.imgur.com/FhGfy.png

verwandte Informationen