无法让 Chain“MASQUERADE” 在 WSL2 内核上运行

无法让 Chain“MASQUERADE” 在 WSL2 内核上运行

我正在尝试根据我的特定需求构建自定义内核,我需要该链MASQUERADE可用。我正在使用https://github.com/microsoft/WSL2-Linux-Kernel来构建我的内核。

我已将我能找到的所有配置设置MASQ为。MASQUERADEy

无论我如何构建内核,每次运行时iptables -t nat -C POSTROUTING -s 10.33.33.1 -j MASQUERADE --wait都会得到iptables v1.8.7 (nf_tables): Chain 'MASQUERADE' does not exist。 同样的情况也发生iptables-legacy

我无法使用insmod或加载任何定制的内核模块modprobe

有人让它工作或知道如何让它工作吗?我尝试从 kernel.org 构建 Linux 内核,但结果发现它无法与 WSL 一起使用。

答案1

这里的核心问题是 Ubuntu 22.04 现在默认使用nf_tables而不是旧版iptables。语法和默认规则完全不同。

虽然我鼓励您研究新的语法nf_tables(因为我们最终需要了解它),但您可以通过以下方式在短期内解决这个问题iptables-legacy

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy

请注意,您的规则所依赖的其他规则可能缺失nf_tables,因此可能需要额外的配置。

更新说明:我刚刚注意到,nftables目前尚未启用发布WSL2 内核。它已在新预览版本 5.15.57.1​​ 中提供(与0.65.3iptables昨天发布了旧版内核(预览版)。因此,目前,除了升级或编译自定义内核之外,恢复到旧版内核可能是唯一的解决方案。

相关内容