下列的这个问题我通过 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
据我了解,第一个建议是重置代理在这个问题中
- 这个问题涉及另一个与 WSL2 无关的问题,答案适用于 Win8。
- 我犹豫着是否要运行,
netsh winhttp reset proxy
因为这台计算机的代理是由其他人设置的,并且该机器需要保留该配置。此外,Windows 本身与互联网通信没有问题。该命令可能会重置设置,但它所做的不仅仅是恢复一个命令:它甚至可能恢复数千个命令。 - 在控制面板 > Internet 选项 > 连接(选项卡)下,我看不到要删除的连接。
答案1
为了解决恢复netsh
命令的问题,我了解到
netsh interface portproxy ...
用于设置端口转发规则我可以使用 检查所有这些规则
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
给出的输出。
- 我可以使用以下命令删除此规则
netsh interface portproxy delete v4tov4 listenport=4000 listenaddress=0.0.0.0
- 这将删除所有 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
使用不同的互联网连接解决了这个问题。