NETSH + WSL2:恢复 netsh 命令并恢复 WSL2 网络功能

NETSH + WSL2:恢复 netsh 命令并恢复 WSL2 网络功能

下列的这个问题我通过 PowerShell 以管理员身份发出了以下命令:

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=(wsl hostname -i)

不幸的是,我对代码一无所知netsh,并且盲目地运行了我不理解的代码。

现在,在我的 Alpine WSL2 中我无法apk update

~# apk update
fetch https://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz
WARNING: updating https://dl-cdn.alpinelinux.org/alpine/edge/main: Permission denied
fetch https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
WARNING: updating https://dl-cdn.alpinelinux.org/alpine/edge/community: Permission denied
v20231219-2427-gd0dda5e6861 [https://dl-cdn.alpinelinux.org/alpine/edge/main]
v20231219-2427-gd0dda5e6861 [https://dl-cdn.alpinelinux.org/alpine/edge/community]
0 unavailable, 2 stale; 23217 distinct packages available

据我了解,第一个建议是重置代理在这个问题中

  1. 这个问题涉及另一个与 WSL2 无关的问题,答案适用于 Win8。
  2. 我犹豫着是否要运行,netsh winhttp reset proxy因为这台计算机的代理是由其他人设置的,并且该机器需要保留该配置。此外,Windows 本身与互联网通信没有问题。该命令可能会重置设置,但它所做的不仅仅是恢复一个命令:它甚至可能恢复数千个命令。
  3. 在控制面板 > Internet 选项 > 连接(选项卡)下,我看不到要删除的连接。

答案1

为了解决恢复netsh命令的问题,我了解到

  1. netsh interface portproxy ...用于设置端口转发规则

  2. 我可以使用 检查所有这些规则netsh interface portproxy show all。就我而言,我发现:

Abfragen auf ipv4:             Verbinden mit ipv4:

Adresse         Anschluss   Adresse         Anschluss
--------------- ----------  --------------- ----------
...
0.0.0.0         4000        127.0.1.1       4000
...

127.0.1.1就是wsl.exe hostname -i给出的输出。

  1. 我可以使用以下命令删除此规则
netsh interface portproxy delete v4tov4 listenport=4000 listenaddress=0.0.0.0 
  1. 这将删除所有 listenport=4000 listenaddress=0.0.0.0 的规则并“恢复”
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=(wsl hostname -i)

现在,谈到 WSL2 网络功能,我不得不说这与 Windows 防火墙有关。请参阅: https://gitlab.alpinelinux.org/alpine/aports/-/issues/11824

使用不同的互联网连接解决了这个问题。

相关内容