WSL2的网,连上了但还没完全连上
Contents
[NOTE] Updated August 27, 2023. This article may have outdated content or subject matter.
无特别说明,本文以下内容所提到的 WSL 皆指 WSL2。
起因是为了在Windows10运行docker,这个暑假就开始使用WSL进行开发,无论是 Python/C++/Golang 都是用 VSCode Remote WSL 进行开发的,体验非常好。
WSL2虽然日常轻度使用已经很流畅舒适了,在网络配置方面有一些绕不开的深坑。
首先需要了解以下内容:
前置知识
- Windows 和 WSL2 算是在同一个局域网内,这个局域网是由 Hyper-V 创建的。
- WSL2 使用的网络适配器是 ‘Default Hyper-V Switch’,这个适配器每次重启都会被删除重建,这就是 WSL2 为什么 IP 不固定的原因。
- WSL2 内有些微软特意做的东西: 向 WSL2 的 IP 发送的请求都会被转发到 Windows 的 IP 上,但是这个时灵时不灵。
既然是开发工具,免不了要连GitHub,为了加快访问速度,自然就要WSL2 中连接到主机代理让 WSL2 里能连上 Windows 上的代理软件。
目前采用的方式流程是:
- 获取 Windows 的 ip
- Windows 上的代理软件允许局域网访问
- 设置 WSL2 的代理
获取主机的 ip
由于 WSL2 是使用 Hyper-V 虚拟机实现的,也就不能跟 Windows 共享同一个 localhost 了,而且每次重启 ip 都会变。目前在 WSL 中可以用以下两个命令来获取主机的 ip:
|
|
原理参考: User Experience Changes Between WSL 1 and WSL 2
设置代理
Windows 的 IP 都已经拿到了,比如说我的代理软件是监听在 7890 端口的,那我只要设置代理链接为 $windows_ip:7890 即可。
我目前采用在.bashrc中增加配置
|
|
不要忘了source .bashrc