背景
Win10 中 WSL2 环境是一个 HyperV 管理的独立容器,其网络相对宿主系统独立,不像 WSL1 环境那样是和宿主系统网卡直接桥接起来的。WSL2 这样的架构虽然运行效率提高不少,但却无法像 WSL1 那样能直接使用宿主系统提供的代理服务,造成了不少麻烦。
解决方案
解决办法很简单,只要允许代理服务为非 localhost 来源地址服务,然后直接使用宿主系统的 IP 地址就能访问到代理了。以 Ubuntu WSL2 环境访问 Shadowsocks 代理为例,步骤如下:
- 允许 Shadowsocks 服务非本地来源地址:

- 在
.bashrc中加入如下的函数方便打开/关闭代理(假设宿主系统 IP 地址为192.168.175.173,Shadowsocks SOCKS5 代理在1080端口):
1 | proxy () { |
这样在终端上就可直接用 proxy 开启代理,noproxy 关闭代理。
- 对于那些不使用全局代理服务器环境变量的应用,可以安装
proxychains来实现拦截其网络通信强制走代理的目的:
1 | $ sudo apt install proxychains tor |
安装完毕后,向 /etc/proxychains.conf 增加如下配置:
1 | [ProxyList] |
然后就能用 proxychains <app_path> <cmdline> 的形式强制应用使用代理了。