为了复现一篇论文的实验结果,我需要在 Linux 环境下配置深度学习的开发环境,为此需要配置 WSL 的网络代理以实现科学上网。

网络上绝大部分教程都是获取 Windows 主机的 IP 并通过配置全局变量进行代理的方式,这种方式配置最大的问题是一旦网络环境改变, IP 地址也会发生改变,还需要重新配置。不过文章WSL2 中访问 Windows 的代理的最简易方案中则提到了一种利用 Windows 自带的 mDNS 实现建议配置的方法,经过测试在 Win 11 的 WSL2 上稳定可用。

准备工作

  • 首先,需要得到你的代理工具的端口并打开其局域网功能,在代理工具中一般都能查看。我使用的是 Clash ,其默认端口为 7890

  • 你还需要找到你的主机名称(电脑名称),推荐以下两种方法

    • Win 11 下打开 设置\系统\系统信息\设备规格 ,设备名称即为主机名称
    • 控制台输入 systeminfo ,输出的主机名即为主机名称

测试 mDNS 是否可用

在 WSL 中执行

1
ping <你的主机名>.local

能够收到返回包则继续接下来的步骤,否则说明你的 Windows 版本不支持 mDNS 。

修改全局变量配置代理

用以下命令打开 .bashrc

1
sudo vim .bashrc

使用 vim 在第一行插入:

1
2
export HTTP_PROXY="http://<你的主机名>.local:<端口>"
export HTTPS_PROXY="http://<你的主机名>.local:<端口>"

这里我的端口就是 7890 ,主机号就是前文查到的字符串。

测试

自此, WSL 的代理就一劳永逸配置好了,重启也不用担心失效了。为了测试是否成功,在 Windows 主机中打开代理工具。再打开 WSL ,输入以下指令:

1
wget google.com

成功通过代理返回 HTML 则说明代理成功了。

不建议使用 ping 测试,因为有些网页不允许被 ping 通。因此使用 wget 即可。