为 WSL2 一键设置代理

本文详细介绍了WSL1和WSL2环境下网络的不同以及如何在WSL2中配置Linux子系统访问Windows代理。方法包括获取WindowsIP、设置ALL_PROXY环境变量,并提供了一键设置代理的步骤。
摘要由CSDN通过智能技术生成

tags:

  • 环境配置

WSL1 和 WSL2 网络的区别

在 WSL1 时代,由于 Linux 子系统和 Windows 共享了网络端口,所以访问 Windows 的代理非常简单。例如 Windows 的代理客户端监听了 8000 端口,那么只需要在 Linux 子系统中执行如下命令,就可以让当前 session 中的请求通过代理访问互联网。

export ALL_PROXY="http://127.0.0.1:8000"

但是 WSL2 基于 Hyper-V 运行,导致 Linux 子系统和 Windows 在网络上是两台各自独立的机器,从 Linux 子系统访问 Windows 首先需要找到 Windows 的 IP。

配置 WSL2 访问 Windows 上的代理

有两个关键步骤: 1. WSL2 中配置的代理要指向 Windows 的 IP; 2. Windows 上的代理客户端需要允许来自本地局域网的请求;

由于 Linux 子系统也是通过 Windows 访问网络,所以 Linux 子系统中的网关指向的是 Windows,DNS 服务器指向的也是 Windows,基于这两个特性,我们可以将 Windows 的 IP 读取出来。

例如,在 Ubuntu 子系统中,通过 cat /etc/resolv.conf 查看 DNS 服务器 IP。

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.24.128.1

可以看到 DNS 服务器是 172.24.128.1,通过环境变量 ALL_PROXY 配置代理:

export ALL_PROXY="http://172.24.128.1:7890"

7890 是 Windows 上运行的代理客户端的端口,记得要在 Windows 代理客户端上配置允许本地局域网请求。

写入 ~/. bashrc:

echo "export ALL_PROXY=http://172.24.128.1:7890" >> ~/.bashrc
source ~/.bashrc

为 WSL2 一键设置代理

基于以上说明,为 WSL2 一键设置代理操作如下:

~/.bashrc 尾部追加如下内容:

hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
export https_proxy="http://${hostip}:7890"
export http_proxy="http://${hostip}:7890"
export all_proxy="socks5://${hostip}:7890"

保存后终端输入命令 source ~/.bashrc 使环境变量生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AWei_i_i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值