
我正在嘗試運行以下 iptables 命令https://github.com/farukuzun/notsodeep在 ubuntu 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
關於在WSL2中安裝xt_NFQUEUE核心模組,您需要自訂自己的WSL核心。 https://gist.github.com/cerebrate/d40c89d3fa89594e1b1538b2ce9d2720
我必須添加一些關於在核心中包含“NFQUEUE”的內容,請參閱下圖 https://i.stack.imgur.com/FhGfy.png