WSL2 设置代理
WSL2 设置代理
WSL2 使用虚拟网络适配器,默认与 Windows 主机不在同一网段。要让 WSL2 内的命令行工具(apt、curl、git 等)走 Windows 上的代理软件,需要正确获取 Windows 主机的 IP 地址并配置环境变量。
核心思路
WSL2 中 Windows 主机的 IP 可以通过 ip route 获取(default 网关即为 Windows 主机)。代理软件(如 Clash、v2rayN)通常在 Windows 上监听 0.0.0.0:7890,WSL2 内通过该 IP + 端口即可访问。
配置别名
在 ~/.bashrc 或 ~/.zshrc 中添加:
1 | export hostip=$(ip route show | grep -i default | awk '{ print $3}') |
逐段说明
| 部分 | 作用 |
|---|---|
hostip=$(ip route show | grep default | awk '{print $3}') |
获取 Windows 主机在 WSL2 虚拟网中的 IP |
http_proxy / https_proxy |
设置 HTTP/HTTPS 代理,curl、wget、git 等工具会读取 |
all_proxy |
设置 SOCKS5 代理,部分工具(如 ssh)会读取 |
/etc/apt/apt.conf.d/proxy.conf |
apt 的代理配置文件,单独设置 |
使用方式
1 | source ~/.bashrc # 重新加载配置 |
验证代理
1 | curl -v https://www.google.com 2>&1 | grep -i proxy |
注意事项
- 代理软件监听地址:确保 Windows 代理软件允许 LAN 连接(监听
0.0.0.0而非127.0.0.1) - 端口一致:上面示例用
7890,如果你的代理软件用其他端口(如1080、8080),请修改别名中的端口号 - 防火墙:Windows 防火墙可能会阻止 WSL2 访问 Windows 端口,需要在防火墙中放行
- WSL1 用户:WSL1 与 Windows 共享网络栈,直接用
127.0.0.1:7890即可,不需要获取 hostip
小结
通过 ip route 动态获取 Windows 主机 IP,配合 alias 快速切换代理状态,是 WSL2 下最省心的代理配置方案。不需要手动查 IP,也不受 WSL 重启后 IP 变化的影响。