首页 > 其他分享 >wsl2 网络代理设置

wsl2 网络代理设置

时间:2023-04-27 22:57:52浏览次数:51  
标签:Windows WSL2 Linux 代理 设置 IP wsl2 7890

【转载文章】原文链接

在 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 就可以生效。

标签:Windows,WSL2,Linux,代理,设置,IP,wsl2,7890
From: https://www.cnblogs.com/jaycethanks/p/17360464.html

相关文章

  • Three.js教程:设置Geometry顶点位置、顶点颜色数据
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生  前面几篇文章通过缓冲类型几何体BufferGeometry给大家讲解了顶点位置、颜色、法向量、索引数据,本节课给大家引入一个新的threejs几何体APIGeometry。几何体Geometry和缓冲类型几何体BufferGeometry表达的......
  • 使用CGLIB生成代理
    知识点【使用前提条件:【/**如果这个代理的类没有实现接口就不能使用JDK中的动态代理*这时需要使用第三方的.jarCGLIB实现代理**/】publicclassCGLIBProxyimplementsMethodInterceptor{privateObjecttar......
  • JDK动态代理
    知识点【publicclassJDKProxyimplementsInvocationHandler{privateObjecttargetObject;//代理的目标对象publicObjectcreateProxyInstance(ObjecttargetObject){this.targetObject=targetObject;/**第一个参数设置代码使......
  • 【工具软件】Postman 设置登陆全局 token
    先设置Tests脚本constres=pm.response.json()pm.globals.set('token',res.data.token)使用......
  • python+playwright 学习-59 设置默认允许麦克风和摄像头等权限
    前言有些场景在使用的时候,会弹出一些权限框,比如麦克风和摄像头等,通过监听alert是没法捕获的。正确做法是给浏览器设置默认允许麦克风和摄像头等权限,不让弹窗出来。使用context的grant_permissions方法加权限。权限框弹窗示例这种弹窗是权限窗,不是alert解决办法contex......
  • python-docx设置docx文档表格样式
    使用python-docx,设置docx文档第4行表格第3行第2列单元格的字体对齐方式、加粗fromdocximportDocumentfromdocx.enum.textimportWD_ALIGN_PARAGRAPH#加载Word文档doc=Document('example.docx')#获取表格并定位到指定单元格table=doc.tables[3]cell=table.ce......
  • 发布Flash跨域策略,CORS跨域资源共享漏洞,设置访问白名单
    1      问题描述:跨域策略文件配置问题:<allow-access-fromdomain="*"/>,允许从任何域进行访问 2      解决方案:找到对应的文件,正确配置白名单,配置样例如下: ......
  • 博客园自定义皮肤设置2
    博客园自定义皮肤设置-21.选择皮肤LessIsMore2.博客侧边栏公告<style>#back-top{position:fixed;bottom:10px;right:5px;z-index:99;}#back-topspan{width:50px;height:64px;display:block;background:url(htt......
  • java js JavaScript 设置html:radio的默认选中, js也可以用el表达式
    <html:radioproperty="consumptionClass"value="花了">花了</html:radio><html:radioproperty="consumptionClass"value="赚了">赚了</html:radio><html:radioproperty="consumptionClass"va......
  • nginx 正则反向代理到k8s
    代码:nginx正则反向代理到k8s的服务:http{resolverkube-dns.kube-system.svc.cluster.local;server{listen80;#serviceslocation~/(\w+)/{ proxy_passhttp://$1.default.svc.cluster.local:8888;}}配置:  ......