Last active
July 3, 2024 11:10
-
-
Save libChan/3a804a46b532cc326a2ee55b27e8ac19 to your computer and use it in GitHub Desktop.
WSL2使用clash for windows代理
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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" |
我的问题比较奇怪,不知道有没有人有遇到过,直接用wsl2和clash的话,是可以访问外网的,但是使用apt-get update的时候,会一直卡在0%的进度,但是能ping通源的域名,单独关闭设置里的代理也不行,必须要把clash也关掉才能update成功。
If you are using the http_proxy variable, you need to check whether the http_proxy variable continues to be used after running sudo. Generally, sudo will clear the environment variables of the common user by default. Previously, I encountered this issue where
sudo curl ip.gs
could not use the proxy due to this reason. I eventually solved the issue by modifying the /etc/sudoers file usingsudo visudo
and addingDefaults env_keep += "http_proxy https_proxy ftp_proxy no_proxy"
, which allowed sudo to use the proxy correctly.
worked for me, thanks you
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
cat /etc/resolv.conf | grep nameserve查看内容 ,是否与Ethernet adapter vEthernet (WSL)地址一样 如果是其他,可能是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
其他解决方案:
和上面一样修改%USERPROFILE%.wslconfig配置
加入如下内容
在较新版本中,在mirror模式下,WSL2 已经支持和宿主机共享 IP
可以直接使用
127.0.0.1:port
的地址微软官方详细