WSL2配置网络代理

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

1 开启Windows代理

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

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

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

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:测试代理。

下图是一个范例,如果您通过执行上述命令得到下图类似的结果,说明配置成功!
WSL2配置网络代理_第3张图片

你可能感兴趣的:(WSL,网络,WSL2,WSL,代理)