记录WSL2使用Windows端口来访问代理的操作

一、前言

最近访问GitHub似乎又出现问题了,windows开发还好,有挺多成熟的软件来实现通过代理访问(其实是我比较熟悉),但wsl2当中想要访问代理对我来说就有些困难了,拉取GitHub仓库的时候经常出现卡顿,连接失败的情况。所以就想到使用代理端口来实现将wsl2的流量转发到windows的代理端口。

WSL2 实际上运行在一个轻量级虚拟机中,拥有独立的网络堆栈和私有 IP 地址,因此与 Windows 主机的网络环境并不直接共享。当 Windows 上的服务只绑定在 127.0.0.1(回环地址)时,这些服务只能从 Windows 内部访问,WSL2 无法直接通过 Windows 主机的 IP 访问到这些服务。
因此,为了让 WSL2 能访问 Windows 上仅绑定在 localhost 接口的服务,需要使用端口代理。端口代理将 Windows 主机上的某个外部 IP 和端口的流量转发到对应的 localhost 端口上,使得在 WSL2 中通过该外部 IP 和端口访问时,实际上能够连接到 Windows 上的服务。这样就打通了 WSL2 与 Windows 服务之间的网络隔离问题。

二、需要解决的问题

转发需要解决的问题就是两个:

  • windows端口的提供者
  • wsl2的转发
    这些就是我们需要解决的问题

三、windows端口的提供者

这里提供端口的应用是Clash-verge,
GitHub仓库是:clash-verge-rev的GitHub仓库
当然也有镜像:clash-verge-rev镜像
安装完软件之后,导入订阅的地址(需要自己找渠道购买),然后打开软件的设置界面,选择端口设置:
image

将HTTP(S)代理端口打开,然后点击保存。

image

这样windows就提供了一个端口可以供外部HTTP代理访问了。

四、wsl2的转发

在wsl2终端当中输入

cat /etc/resolv.conf

可以查询到当前 Windows 主机的 DNS 服务器地址,显示内容一般如下:

# 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.31.412.43

这里的 172.31.412.43 表示 WSL2 将使用 Windows 主机(或虚拟网络接口)的 IP 地址 172.31.176.1 作为 DNS 服务器。根据你的网络配置,这个 IP 地址可能会有所不同。

之前我们设置了windows上的HTTP代理端口,此时我们只需要设置一下WSL2的HTTP环境变量,让其走 nameserver 的HTTP代理端口即可。
终端输入:

export HTTP_PROXY=http://172.31.412.43:7899

windows记得打开代理,然后我们就可以在wsl2当中使用curl工具访问一下外网内容了,这里拿ifconfig.me做例子。
image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值