概括:
我的防火墙阻止了 WSL 服务器(Ubuntu 18.04)仅在 Visual Studio Code 上运行时。它还阻止我的 Hyper-V VM(Ubuntu 19.04)建立几乎例如每次连接互联网sudo apt update
或浏览(虽然出于某种原因我可以成功 ping 通,但目前我不会关注这一点)。
细节:
经过多次尝试和尝试,我终于找出了问题所在,并得出结论:我的防火墙 (Avast Premier) 是导致此问题的唯一罪魁祸首。禁用防火墙 10 分钟后,我就可以执行这两项不同的操作,从 Visual Studio Code 连接到 WSL 服务器,还可以从 Hyper-V 浏览和更新虚拟化 Ubuntu 中的软件包。
我目前所做的:
我已经检查过 VSCode 是否在所有端口(入站和出站)允许所有连接:
允许规则似乎已经到位:
并且还将 VSCode 添加到防病毒例外列表中:
上述操作均不起作用,仅禁用了防火墙。
问题:
我应该向防火墙添加哪些规则来允许:
- 来自 VSCode 的 WSL 服务器(Ubuntu 18.04.2)
- 通过 Hyper-V 在 Ubuntu 19.04 上建立互联网连接。
笔记:WSL 在 VSCode 之外完美运行。我甚至可以从中启动批处理终端(状态栏左侧的连接就是问题所在)。
更新:
这是我从 VSCode 中的 WSL 终端获得的输出:
Failed to connect to the remote extension host server (Error: connect ETIMEDOUT 127.0.0.1:62388)
答案1
Avast 论坛帖子 支持 WSL pico 进程 有以下有用的文字:
Avast。与 Windows Defender 非常相似,目前需要整个 Linux 发行版才能运行 pico 进程。这对任何企业环境的安全来说都是不可接受的风险。Avast 需要做的是将 Pico 进程与 Windows 进程一样对待。微软将很快在“Skip-Ahead Insiders”版本中发布 Windows Defender 的更新,该版本按进程/端口级别管理规则。Avast 应该实施类似的设置。微软在 2016 年提供了一篇博客,帮助 Avast 等第三方供应商与 WSL 集成。博客如下:https://blogs.msdn.microsoft.com/wsl/2016/11/01/wsl-antivirus-and-firewall-compatibility/
微软文章 Pico 工艺概述 进一步解释这个概念:
这篇文章讨论了 Pico 进程,即 WSL 的基础。它解释了 Pico 进程在 Windows 中的工作方式,并介绍了它们的诞生历史、我们决定实现的抽象以及 WSL 之外出现的各种用例。
据我所知,Windows 中的 Ubuntu 版本位于以下文件夹中:
C:\Program Files\WindowsApps\CanonicalGroupLimited.UbuntuonWindows_1804.2019.521.0_x64__79rhkp1fndgsc
C:\Users\USERNAME\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
C:\Windows\System32\lxss
如果 Avast 论坛帖子正确,这些就是 Avast 中需要免除的文件夹,以允许执行 Ubuntu。
就 Avast 设置而言, 建议 以启用以下功能:
- Internet 连接共享模式
- 在私人模式下允许与好友的所有连接
- 启用自动配置文件切换
- 启用自动端口扫描检测
启用这些设置后需要重新启动。
这些都只是权宜之计,直到 Avast 发布更新以支持 WSL。如果上述解决方法对您不起作用,则需要在使用 WSL 时禁用 Avast 防火墙,或暂停 Avast 直到他们解决问题。在此之前,Windows Defender 足以满足大多数用途。
答案2
要求:
- 在 WSL 中安装 GNU/Linux 发行版,并配备适合开发语言的工具链。例如,
build-essential
在基于 Debian 的发行版中,C/C++ 语言也适用。 - 最新的 Visual Studio Code远程 - WSL已安装扩展。
- 互联网连接,因为远程 WSL 扩展在前面提到的 WSL 发行版中下载了后端 NodeJS 服务器。
程序:
- 获取 Visual Studio Code 可执行文件的完整路径并允许其进入防火墙。通常这将是:
%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe
允许
/usr/lib/apt/methods/http
防火墙中的可执行文件用于apt
下载软件包。对于 Ubuntu 18.04,路径为:运行 VScode,安装远程 - WSL扩展。在命令提示符中从 WSL 启动 VSCode。它将要求连接到正在运行的发行版并静默安装后端。
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\usr\lib\apt\methods\http
- 允许
node
防火墙中的可执行文件连接 Remote - WSL 扩展的前端和后端。在 WSL 中,转到用户主文件夹~/.vscode-server-insiders/bin
并获取下一个文件夹名称(非常大的神秘数字,实际上它是提交哈希)。完整的 Windows 样式路径将如上所示:
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\test\.vscode-server-insiders\bin\0f73473c08055054f317c1c94502f7f39fdbb164\node
现在重新启动 VSCode,它可能会工作。不同的 GNU/Linux 发行版名称的完整文件夹路径会有所不同。不要在完整路径中混用斜线。请参阅此问答知道如何获取该路径。
进一步阅读:
答案3
实际上在 2021 年只需单击 avast 中 Brandmauer 页面设置中的“常规互联网访问模式”即可。截屏