WSL 2 中配置终端走主机代理

文章目录

微软在 WSL 2 中更改了 Linux 子系统与 Windows 主机的通信方式,以往通过 localhost 即可互相访问,现在则不行,具体内容见 WSL 1 与 WSL 2 的用户体验差异

之前可以在 Windows 主机内通过 Clash 或者其它软件开启一个本地代理,并允许通过 LAN 连接,来实现 WSL 终端魔法上网,经由 WSL 2 的更改后就需要加上获取 Windows 主机 IP 这一步。

1
2
3
# 获取主机 IP
# 主机 IP 保存在 /etc/resolv.conf 中
export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')

假设 Windows 上的 Clash 已允许 LAN 连接,监听在 8888 端口,SOCKS5 代理监听在 8889 端口,设置终端代理的方法与以往相同:

1
2
3
export https_proxy="http://${hostip}:8888";
export http_proxy="http://${hostip}:8888";
export all_proxy="socks5://${hostip}:8889";

为了方便日常使用,可以将以上命令保存为 alias。添加以下内容到 ~/.bashrc 或者 ~/.zshrc

1
2
export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
alias setss='export https_proxy="http://${hostip}:8888";export http_proxy="http://${hostip}:8888";export all_proxy="socks5://${hostip}:8889";'

之后就可以在 WSL 2 中使用 setss 设置终端代理。