我正在尝试为我的特定需求构建自定义内核,在这里我需要链式MASQUERADE才能可用。我正在使用https://github.com/microsoft/WSL2-Linux-Kernel构建我的内核。
我已经将MASQ和MASQUERADE所能找到的所有配置设置为y。
无论我如何构建内核,每次运行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中是不可用的。
发布于 2022-08-01 18:56:25
这里的核心问题是Ubuntu22.04现在默认为nf_tables而不是遗留的iptables。语法和默认规则是完全不同的。
虽然我鼓励您研究nf_tables的新语法(因为我们最终需要了解它),但您可以通过以下方法在短期内解决这个问题:
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy请注意,您的规则所依赖的nf_tables中可能缺少其他规则,因此可能需要额外的配置。
更新注意:我刚刚注意到在当前发布的nftables内核中没有启用WSL2。它在昨天发布的新预览版本5.15.57.1 (可与0.65.3预览捆绑在一起)中提供。因此,目前,遗留iptables的退步可能是升级或编译自定义内核的唯一解决方案。
https://askubuntu.com/questions/1421466
复制相似问题