注意:本文参考自文章: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
:测试代理。
下图是一个范例,如果您通过执行上述命令得到下图类似的结果,说明配置成功!