WSL2配置网络代理

news2024/11/14 1:15:47

注意:本文参考自文章:WSL2配置代理,是对原文的补充,使其适用于河对岸云服务代理。

1 开启Windows代理

1.1 开启代理软件的局域网访问权限

请注意:本文的WSL2代理配置,需要Windows的代理软件已经能够正常工作

以河对岸云服务为例,购买相关服务。开启软件之后,右键高级设置,在Core: basic settings页面中,可以查看到河对岸当前监听的端口号协议,记录下端口和协议,下面配置会用到。
在这里插入图片描述
然后,在heduian settings页面中,开启Allow connections from the LAN选项(默认不开启),让我们的代理软件允许来自局域网络的连接,注意选中后需要点击下方的OK
在这里插入图片描述

1.2 开放防火墙对代理软件的限制

由于本文作者已经关闭了Win11的防火墙,因此不需要做额外的配置。如果您希望在开放防火墙的条件下继续配置,请参考原文第1.2节。

2 WSL2配置

2.1 编写脚本

/etc目录下创建scripts文件夹,在其中创建我们自己的配置脚本。

mkdir /etc/scripts
cd /etc/scripts
vim proxy.sh

编写proxy.sh脚本的内容。注意:这里您可能需要修改的参数有两个:一个是port;一个是PROXY_HTTP中的协议部分,如果您的代理软件基于HTTP规则,请通过开启/关闭注释的方式进行协议切换

#!/bin/sh

# 注意:这个 ip 地址和我们在 windows 中通过 ipconfig 获取的地址等价
hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
# WSL 自身的 ip
wslip=$(hostname -I | awk '{print $1}')
# Windows 上代理软件监听的端口,河对岸为 10808,注意要选中河对岸的 "Allow connections from the LAN"
port=10808

# 注意代理有两种方式,一种基于 http,一种基于 socket5,河对岸是基于 socket5 的
PROXY_HTTP="socks5://${hostip}:${port}"
# PROXY_HTTP="http://${hostip}:${port}" # 如果是基于 http 的代理,则使用该命令

# 开启代理
set_proxy(){
    export http_proxy="${PROXY_HTTP}"
    export HTTP_PROXY="${PROXY_HTTP}"
    
    export https_proxy="${PROXY_HTTP}"
    export HTTPS_proxy="${PROXY_HTTP}"
    
    export ALL_PROXY="${PROXY_SOCKS5}"
    export all_proxy=${PROXY_SOCKS5}
    
    # 配置 git 的代理
    git config --global http.https://github.com.proxy ${PROXY_HTTP}
    git config --global https.https://github.com.proxy ${PROXY_HTTP}
    
    echo "Proxy has been opened."
}

# 关闭代理
unset_proxy(){
    unset http_proxy
    unset HTTP_PROXY
    unset https_proxy
    unset HTTPS_PROXY
    unset ALL_PROXY
    unset all_proxy
    git config --global --unset http.https://github.com.proxy
    git config --global --unset https.https://github.com.proxy
    
    echo "Proxy has been closed."
}

# 测试代理是否开启成功
test_setting(){
    echo "Host IP:" ${hostip}
    echo "WSL IP:" ${wslip}
    echo "Try to connect to Google..."
    resp=$(curl -I -s --connect-timeout 5 -m 5 -w "%{http_code}" -o /dev/null www.google.com)
    if [ ${resp} = 200 ]; then
        echo "Proxy setup succeeded!"
    else
        echo "Proxy setup failed!"
    fi
}

# 根据我们的输入来执行代理的开启、关闭和测试过程
if [ "$1" = "set" ]
then
    set_proxy
elif [ "$1" = "unset" ]
then
    unset_proxy
elif [ "$1" = "test" ]
then
    test_setting
else
    echo "Unsupported arguments."
fi

2.2 测试脚本能否正常工作

注意:执行下面三个命令之前,请确保您在Windows已经能够在您配置的代理软件上正常进行代理转发

您需要通过下面三个命令来测试脚本能否完成工作:

  • source /etc/scripts/proxy.sh set:开启代理;
  • source /etc/scripts/proxy/sh test:测试代理能否正常工作。如果您的代理可以正常工作,您将会看到消息:Proxy setup succeeded!;否则,您将会看到控制台输出:Proxy setup failed!
  • source /etc/scripts/proxy.sh unset:关闭代理。

2.3 配置别名简化操作流程

现在,如果您可以通过上述三个指令成功的完成测试,说明您已经配置成功了。下面的配置是可选项,可以帮助您更快的完成代理的启动/关闭/测试操作。

首先, 修改用户目录下的.bashrc文件。

vim ~/.bashrc

在文件的最后添加对source /etc/scripts/proxy.sh操作的别名,我们这里配置为proxy

# proxy alias
alias proxy="source /etc/scripts/proxy.sh"

编写完成后,我们通过source指令让修改立即生效。

source ~/.bashrc

现在,我们可以通过下面三个方式进行快速的代理操作:

  • proxy set:开启代理;
  • proxy unset:关闭代理;
  • proxy test:测试代理。

下图是一个范例,如果您通过执行上述命令得到下图类似的结果,说明配置成功!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/181800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTPS详解及HTTPS实验

目录 HTTPS 一,https在参考模型中的位置 二,什么是HTTPS 三,什么是SSL 1,SSL 协议分为两层: 2,SSL 协议提供的服务: 四,HTTPS的加密方式 1,常见的加密算法 2,…

mysql知识点

目录 1.mysql聚合函数: 2.having(用来过滤数据): HAVING 不能单独使用,必须要跟 GROUP BY 一起使用 WHERE 与 HAVING 的对比 3.升序和降序 4.等于 5.实战demo: 1.mysql聚合函数: 常用的聚…

codeforces签到题之div3

前言 第一次codeforces,发现几个问题: 1,不知道选langua&…

17正交距阵和Gram-Schmidt正交化

标准正交向量与正交矩阵 上一节介绍过的正交向量,通过一个式子进行回顾,设q是标准正交向量组中的任意向量,则 这很好地表现了标准正交向量组内各向量的性质: 不同向量之间相互垂直(正交),向量…

Ribbon 负载均衡

介绍Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就…

屏幕录制软件推荐,分享这3款,简单好用

​网络上充斥着许多各种各样的屏幕录制软件,许多有选择困难的朋友可能会充满怀疑:哪个电脑屏幕录制软件很容易使用?屏幕录制软件推荐哪个比较好?别担心,今天,小编分享这这3个简单好用的屏幕录制软件&#x…

Day10 C++STL入门基础知识七——案例1【评委打分】

路漫漫其修远兮,吾将上下而求索 文章目录1. 承接上文1. 案例描述2. 实现思路3. 亿点点分析3.1 创建选手类3.1.1 具体思路3.1.2 代码展示3.2 创建5名选手并对其姓名、平均分进行初始化3.2.1 具体思路① 创建vector容器② 创建一个creatPlayer()函数a.调用函数b. 初始…

若依框架基于@PreAuthorize注解的权限控制

目录 一、Java注解(Annotation) 1. 概述 2. Annotation通用定义 (1)interface (2)Documented (3)Target(ElementType.TYPE) (4)Retention(Ret…

IDEA插件

Lombok用注解的方式,简化了 JavaBean 的编写。注解下面介绍一下常用的几个注解:Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。Getter 使用方法同上,区别在于生…

java基于ssm电梯服务管理信息系统的设计与实现源码+数据库

基于ssm电梯服务管理信息系统的设计与实现 技术支持 开发软件:Eclipse 项目类型:Webapp 数据库:MySQL 数据库连接池:druid 框架:SSM 数据库设计软件:PowerDesigner 前端界面开发:HTML/CSS…

Maven介绍

Maven介绍1、Maven的简单介绍2、Maven的优点3、Maven的基本知识3.1、Maven如何获取Jar包3.2、Maven仓库的分类4、Idea中的maven4.1、clean4.2、validate4.3、compile4.4、test(不常用)4.5、package4.6、verify(不常用)4.7、instal…

void*传数据,是不是像在黑洞里面拯救世界?

内核代码看到这样一个函数static inline void dev_set_drvdata(struct device *dev, void *data) {dev->driver_data data; }这个函数有什么用?看里面的代码含义大概就能知道,给 driver_data这个指针赋值,之后在其他地方就可以用这个指针…

《C语言高级》(二)------ 函数与指针 篇

目录 一、函数 1.1、创建和使用函数 1.2、全局变量与局部变量 1.3、函数的参数和返回 1.4、递归调用 1.5、斐波那契数列解法其三 1.6、汉诺塔 1.7、快速排序算法 二、指针 2.1、初识指针 2.2、指针与数组 2.3、多级指针 2.4、指针数组与数组指针 2.5、指针函数与函数指…

SpringCloud入门实战(五)-集成Ribbon

一、Ribbon简介 Spring Cloud Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单地说,就是在配置文件中列出Load Balancer(简称LB)后面所有…

python爬虫学习笔记-mongodb安装基本介绍pymongo使用

MongoDB数据存储 MongoDB是一个非关系型数据库(NoSQL). 非常适合超大数据集的存储, 由 C 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系…

Spring Cloud_OpenFeign服务接口调用

目录一、概述1.OpenFeign是什么2.能干嘛二、OpenFeign使用步骤1.接口注解2.新建Module3.POM4.YML5.主启动类6.业务类7.测试8.小总结三、OpenFeign超时控制1.超时设置,故意设置超时演示出错情况2.是什么3.YML中需要开启OpenFeign客户端超时控制四、OpenFeign日志打印…

论文投稿指南——中文核心期刊推荐(水路运输)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

Json的语法及使用

Json的语法及使用前言一、Json是什么?二、Json语法三、Json示例前言 在数据传输时用到Json格式,在此稍作记录。 一、Json是什么? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)JSON 是轻量级的文本…

零入门容器云网络实战-4->ip地址分类尝试

本篇文章主要用于收集、整理、总结关于IP地址相关知识点。 1、IP地址分类? IPv4地址是指IPv4协议使用的32位地址。 为了便于对IP地址进行管理, 根据IPv4地址的第一个字节,IPv4地址可以分为以下五类。 A类:0~127 B类&#xff1…

【Linux】Linux自动化构建工具make/makefile

文章目录🎪 Linux自动化构建工具make/makefile🚀 1.Makefile文件格式⭐1.1 简单makefile例子⭐1.2 概述⭐1.3 目标(target)⭐1.4 前置条件(prerequisites)⭐1.5 命令(commands)🚀 2.Makefile文件语法⭐2.1 注释⭐2.2 回声⭐2.3 通配符⭐2.4 变…