wsl2 网络代理设置

2023-10-26

在 WSL2 环境中 clone 一个很大的 git 项目,不走代理速度很慢,所以研究了一下怎么让 WSL2 走 Windows 的代理客户端。

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 = falsenameserver 172.19.80.1
可以看到 DNS 服务器是 172.19.80.1,通过环境变量 ALL_PROXY 配置代理:

export ALL_PROXY="http://172.19.80.1:7890"
7890 是 Windows 上运行的代理客户端的端口,记得要在 Windows 代理客户端上配置允许本地局域网请求。

一键配置脚本
将上面的过程写入一个 bash 脚本,可以轻松的实现一键配置代理:

#!/bin/bash
host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
export ALL_PROXY="http://$host_ip:7890"
# @jayce: 直接将这段追加到 ~/.bashrc, 这样每次打开终端就自动设定了
# 获取wsl虚拟机的ip, 并代理至windows 7890 端口,让wsl可以访问外网
echo "设定wsl网络代理到7890外网访问端口......"

host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
export ALL_PROXY="http://$host_ip:7890"
# curl 命令检查,并仅输出状态码
echo "尝试通过curl命令检查 google 是否可以访问......返回状态码为:"
curl -s -o /dev/null -w "%{http_code}\n" https://www.google.com

脚本通过 cat /etc/resolv.conf 来获取 DNS 服务器,也就是 Windows 的 IP,再将其中的 IP 部分截取出来,加上代理客户端的端口(我的是 7890,可以根据自己实际情况修改),使用 export 写入环境变量中。

脚本也可以从这里下载.proxyrc,使用时只需要 source .proxyrc 就可以生效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wsl2 网络代理设置 的相关文章

随机推荐

  • 烽火星空- 笔试

    烽火星空笔试 Java结合数据结构进行出题 无任何网络知识 无任何操作系统知识 无任何框架知识 Collection除外 选择题 Java结合数据结构 没有Java基础知识 全部结合数据结构 数据结构占比60 Java 40 链表占比极高
  • SELECT CASE WHEN 的用法

    1 SELECT CASE WHEN 的用法 select 与 case结合使用最大的好处有两点 一是在显示查询结果时可以灵活的组织格式 二是有效避免了多次对同一个表或几个表的访问 下面举个简单的例子来说明 例如表 students id
  • Android和H5那些不可描述的事情...

    今日科技快讯 近日 代表了750家移动运营商利益的全球移动通信系统协会的行业分析报告显示 禁止从中国供应商购买通信设备 将使欧洲5G网络成本增加约550亿欧元 并将导致该技术的推出延迟18个月左右 在路透社报道中提到的中国供应商 除了华为
  • 深度之眼(五)——Python组合数据类型

  • springcloud----负载均衡--Ribbon与LoadBalance

    简介 Spring Cloud Ribbon 是 Netflix Ribbon 实现的一套客户端 负载均衡工具 简单的说 Ribbon 是 Netflix 发布的开源项目 主要功能是提供 客户端的复杂均衡算法和服务调用 Ribbon 客户端
  • Pico-I / O嵌入式模块提供48点数字I / O接口

    WinSystems的PCO UIO48 G是具有中断事件检测功能的48点数字I O接口 Pico I O嵌入式模块旨在为Pico ITXe单板计算机提供低成本的I O扩展 该产品的主要功能之一是 它可以监视24个上升和下降的数字边沿转换
  • spring容器使用接口注入

    spring为何要注入接口 而注入实现类就会报错 如果只是单纯注入是可以用实现类接收注入对象的 但是往往开发中会对实现类做增强 如事务 日志等 实现增强的AOP技术是通过动态代理实现的 而spring默认是JDK动态代理 对实现类对象做增强
  • Linux(V4L2驱动)下获得Opencv摄像头属性(图像输出格式和是否发生往RGB的转换)的方法

    Opencv可通过cvGetCaptureProperty函数 或者VideoCapture get int proID 来获取摄像头输出图像的属性 但返回的是个double的值 如何查看图像输出的编码格式呢 其实可以看到 编码格式是个宏定
  • 通信仿真软件SystemView安装全流程详细解释(下载,安装,闪退,读条无反应)

    systemview简介 systemview 通信仿真软件 5 0 是一款模拟软件 这款软件主要是进行信号仿真的操作 支持支持滤波器设计 信号仿真和通信系统统计分析 软件内的功能非常丰富 操作也很简单 是一款非常不错的软件 有需要的小伙伴
  • HDFS读数据流程

    准备工作 1 首先客户端进入分布式文件系统去寻找数据块的位置 利用得到的文集文件块位置来要求名称节点返还部分块这些返还的节点会按照HADOOP中关于集群拓扑来得出客户端的距离然后进行排序 开始读取数据 1客户端利用FSDataInputSt
  • 聚观早报

    聚观365 9月14日消息 iPhone 15系列正式发布 月饼专利申请超10000项 五个女博士 自建研究院 2023中国民营企业研发十强公布 华为和小米达成全球专利交叉许可协议 iPhone 15系列正式发布 2023年苹果秋季新品发布
  • hook库

    detourattach detourRestoreAfterWith detourTransactionBegin detourUpdatethread getcurrentthread
  • 使用ChatGPT生成代码

    无需翻墙 1 下载安装cursor 首先进入官网 https www cursor so 点击 Download for windows 下载并安装好cursor 2 使用方法 打开后界面如下 打开 py或者 json文件 然后点击按键盘
  • echarts初始化宽度小于容器宽度

    查找资料是因为echarts的容器还没有创建出来的时候echarts就已经加载出来了 因为获取不到容器的宽高就会默认宽高100 是100px 所以会缩小在一起 因为我的代码中 echarts的容器的最外层的div给的样式是display n
  • 分布式事务学习总结

    1 基础概念 1 1 什么是事务 事务可以看做是一次大的活动 它由不同的小活动组成 这些活动要么全部成功 要么全部失败 1 2 本地事务 在计算机系统中 更多的是通过关系型数据库来控制事务 这是利用数据库本身的事务特性来实现的 因此叫数据库
  • echarts报错:Error in mounted hook: “TypeError: Cannot read properties of undefined (reading ‘init‘)“

    echarts安装创建图表时报这种错误 Error in mounted hook TypeError Cannot read properties of undefined reading init 1 具体报错内容 2 解决办法 原先大
  • Java基本数据类型

    Java中有以下几种基本数据类型 这些类型都是值类型 类型 值范围 大小 范围 boolean true或false 1位 char Unicode字符 16位 u0000 uFFFF byte 有符号整数 8位 128 127 short
  • [Linux打怪升级之路]-环境变量

    前言 作者 小蜗牛向前冲 名言 我可以接受失败 但我不能接受放弃 如果觉的博主的文章还不错的话 还请点赞 收藏 关注 支持博主 如果发现有问题的地方欢迎 大家在评论区指正 目录 一 认识环境变量 二 获取环境变量的三种方法 1 通过gete
  • 贝叶斯分类器(贝叶斯决策论,极大似然估计,朴素贝叶斯分类器,半朴素贝叶斯分类器,贝叶斯网)学习笔记

    贝叶斯分类器 贝叶斯决策论 极大似然估计 朴素贝叶斯分类器 半朴素贝叶斯分类器 贝叶斯网 学习笔记 一 条件概率 全概率公式 贝叶斯公式 二 贝叶斯决策论 贝叶斯决策论是概率框架下实施决策的基本方法 对分类任务来说 在所有相关概率都已知的理
  • wsl2 网络代理设置

    在 WSL2 环境中 clone 一个很大的 git 项目 不走代理速度很慢 所以研究了一下怎么让 WSL2 走 Windows 的代理客户端 WSL1 和 WSL2 网络的区别 在 WSL1 时代 由于 Linux 子系统和 Window