WSL配置网络说明
重要的事,先配置WSL网络
1. 创建WSL配置文件:
在Windows中,按 Win + R
,输入 %USERPROFILE%
,打开用户文件夹。
用记事本创建文件 .wslconfig
(注意前面有个点),内容如下:
[wsl2]
networkingMode=mirrored
localhostForwarding=true
2. 重启WSL:
wsl --shutdown
等待几秒钟后,重新打开WSL。
3. 在WSL中测试新的网络配置:
# 现在应该可以直接使用终端代理或者windos上网提供的ip进行配置
export https_proxy=http://127.0.0.1:33210
export http_proxy=http://127.0.0.1:33210
export all_proxy=socks5://127.0.0.1:33211# 测试连接
curl -I https://www.google.com
curl -I https://raw.githubusercontent.com
4. 如果成功,安装Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
这个networkingMode=mirrored
配置会让WSL2使用与Windows相同的网络接口,这样127.0.0.1就能正确工作了。
请先创建.wslconfig文件并重启WSL
好问题!让我详细解释为什么需要这样配置:
WSL2的网络架构问题
WSL2的默认网络模式:
- WSL2运行在一个轻量级虚拟机中
- 它有自己的虚拟网络适配器和IP地址段
- WSL2和Windows主机之间通过NAT(网络地址转换)通信
- 这就是为什么你看到
10.255.255.254
这样的内部IP地址
默认模式的问题:
- IP地址隔离:WSL2的
127.0.0.1
和Windows的127.0.0.1
是不同的 - 端口转发限制:Windows上的代理端口默认不会自动转发到WSL2
- 防火墙阻拦:Windows防火墙可能阻止WSL2访问主机端口
配置文件的作用
[wsl2]
networkingMode=mirrored # 镜像网络模式
localhostForwarding=true # 本地主机转发
networkingMode=mirrored的作用:
- 让WSL2直接使用Windows的网络接口
- WSL2和Windows共享相同的IP地址和网络栈
- 这样WSL2中的
127.0.0.1
就真正指向Windows本机了
localhostForwarding=true的作用:
- 确保localhost/127.0.0.1的请求能正确转发
- 让WSL2能访问Windows上监听127.0.0.1的服务
镜像模式解决的问题: - WSL2变成真正的"本机"环境
- VPN代理服务认为WSL2的请求来自本机
- 网络请求能正常通过代理转发
其他解决方案的缺点
手动配置IP方式:
export http_proxy=http://10.255.255.254:33210 # 需要找到正确的Windows IP
- IP地址可能会变化
- 需要额外的防火墙配置
镜像模式的优势:
- 一次配置,永久生效
- 不需要关心IP地址变化
- 完美兼容各种网络应用
- 就像直接在Windows上运行命令一样
这就是为什么networkingMode=mirrored
是最优雅的解决方案!