iptables v1.6.1无法初始化iptables表`filter'Ubuntu 18.04 Bash Windows

Joh*_*Joe 9 bash ubuntu firewall iptables filter

我正在从Windows Bash运行Ubuntu 18.04:

uname -a
Linux DESKTOP-M87DGAS 4.4.0-17134-Microsoft #112-Microsoft Thu Jun 07 22:57:00 PST 2018 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我需要打开一些端口:

sudo ufw allow 22/tcp
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

错误:initcaps
[Errno 2] iptables v1.6.1:无法初始化iptables表`filter':表不存在(您需要insmod吗?)
也许iptables或您的内核需要升级。

通过输入我得到相同的错误:

iptables -L
Run Code Online (Sandbox Code Playgroud)

我已经用以下命令升级了内核:

sudo apt-get update
sudo apt-get full-upgrade
Run Code Online (Sandbox Code Playgroud)

我试图重新启动系统,但是没有用。

如何启动iptable过滤器?

Jon*_*Jon 6

根据github.com上的Microsoft WSL页面,不支持iptables。

https://github.com/Microsoft/WSL/issues/767

有一个uservoice页面,可以在以下位置请求支持

https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/32025199-support-iptables

  • 是的,我正在尝试在 Windows Bash 上运行 docker,但遇到了同样的错误。 (4认同)
  • 我注意到 github.com 上的 WSL 页面表示 WSL 现在在最新版本中支持 iptables,尽管很明显有些人仍然遇到问题。 (3认同)

小智 6

Windows 在未经管理员授权的情况下限制 WSL 中的该命令。

您只需CMD/Powershell/Ubuntu.exe以管理员身份运行 WSL,然后再次尝试此命令:

sudo iptables -L -v
Run Code Online (Sandbox Code Playgroud)

我在 WSL v1 上进行了测试,但它也应该适用于 WSL v2。