簡體   English   中英

用於前/后路由的 WSL 內核 Netfilter 鈎子不可用

[英]WSL Kernel Netfilter hooks for Pre/Post Routing not available

我使用的是 Windows 11、WSL2、內核 5.10.60.1-microsoft-standard-WSL2。

我正在使用 RHEL 發行版,並且正在嘗試啟用 netfilter NAT 規則。 問題是,如果我嘗試向 NAT 表添加規則以進行 Pre 或 PostRouting,則會收到此錯誤:

[root@rhel8 nftables]# nft add chain nat prerouting { type nat hook prerouting priority 0 \; }
Error: No such file or directory
add chain nat prerouting { type nat hook prerouting priority 0 ; }
          ^^^

我的谷歌搜索使我相信我需要添加一些內核配置才能使其工作,但從我從 Microsoft 默認設置中可以看出,一切似乎都已打開。 如果有內核專家可以給我一個提示,我將不勝感激!

為了任何遇到此錯誤的人的繁榮:

我拉取了 microsoft WSL 內核( https://github.com/microsoft/WSL2-Linux-Kernel.git ),然后將 ./Microsoft/config-wsl 復制到 .config 以作為內核編譯的種子。

Ran make config逐步完成答案,直到編譯的 netfilter 部分,然后對 netfilter 的整個部分(包括 NAT 等)回答是。

make -j $(nproc)

內核編譯后,我將 x86(不是 x86_64) ./arch/x86/boot/bzImage 復制到 Windows 文件系統( /mnt/c/users/me/xxxx )上可訪問的內容。

然后備份,然后編輯你的c:\\users\\me\\.wslconfig並將內核更新為新內核(記住你必須在內核路徑中使用\\\\例如c:\\\\users\\\\me\\\\bzimage_custom . 最后重啟 WSL 以啟動新內核:

wsl --shutdown
wsl -d mydistro

然后你將有可用的 NAT :)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM