-
Star
(102)
You must be signed in to star a gist -
Fork
(24)
You must be signed in to fork a gist
-
-
Save libChan/3a804a46b532cc326a2ee55b27e8ac19 to your computer and use it in GitHub Desktop.
| # WSL通过Win访问网络,所以WSL的网关指向的是Windows,DNS服务器指向的也是Windows,设置WSL的proxy为win的代理ip+端口即可 | |
| # WSL中的DNS server在/etc/resolv.conf中查看,该文件是由/etc/wsl.conf自动生成的。 | |
| # 如果关闭了wsl.conf中自动生成resolve.conf并自行修改了resolve.conf,DNS nameserver并不是本机win ip | |
| # 需要开启wsl.conf的自动生成,再运行以下命令 | |
| # https://zhuanlan.zhihu.com/p/153124468 | |
| # 添加到环境变量设置中,例如~/.zshrc | |
| export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*') | |
| export https_proxy="http://${hostip}:7890" | |
| export http_proxy="http://${hostip}:7890" |
cat /etc/resolv.conf | grep nameserve查看Wsl的网关(通常是在 Windows-WSL 2 这一体系中,Windows 的 IP 地址,即Wsl将Windows作为Dns服务器) ,是否与ipconfig命令获得的Ethernet adapter vEthernet (WSL)中的Windows IP地址一致,如果是其他,可能是resolv.conf文件中内容不一致,导致没办法正常提取到地址以下为我的解决方案
powershell.exe -Command "(ipconfig)"# 此命令的结果和在windows中 ipconfig结果是一样的 可以看到这里是有Ethernet adapter vEthernet (WSL),然后抓取地址powershell.exe -Command "(ipconfig)" | grep -a IPv4 | grep -a 17 | awk '{print $16}'# 我这里是16,可能需要修改shell脚本中:
hostip=$(powershell.exe -Command "(ipconfig)" | grep -a IPv4 | grep -a 172 | awk '{print $16}')hostip=$(echo -e "$hostip" | tr -d '\r') #将从powershell获得的CRLF 类型的转换为LF其他解决方案: Windows中修改
%USERPROFILE%\.wslconfig配置 加入如下内容[wsl2] networkingMode=mirrored dnsTunneling=true firewall=true autoProxy=true [experimental] # requires dnsTunneling but are also OPTIONAL bestEffortDnsParsing=true useWindowsDnsCache=true在较新版本中,在mirror模式下,WSL2 已经支持和宿主机共享 IP 可以直接使用
127.0.0.1:port的地址 微软官方详细
有用!!!!!!!在试了防火墙等等N种方法后,你的方法解决了我的问题
可以,防火墙问题