在 WSL2 中使用 Windows 宿主机的代理服务是一种常见需求,本文提供了一个简单的解决方案,让你能够快速切换代理状态。
脚本内容
创建文件 ~/.proxy-setup.sh
:
#!/bin/bash
# 自动获取 Windows 宿主机 IP
HOST_IP=$(ip route | grep default | awk '{print $3}')
PORT=7890 # 替换为你的代理端口
function set_proxy() {
# 如果提供了自定义 IP,则使用它
if [ -n "$2" ]; then
HOST_IP="$2"
fi
export http_proxy="http://${HOST_IP}:${PORT}"
export https_proxy="http://${HOST_IP}:${PORT}"
export ALL_PROXY="http://${HOST_IP}:${PORT}"
echo "代理已启用:"
echo "http_proxy: $http_proxy"
echo "https_proxy: $https_proxy"
echo "ALL_PROXY: $ALL_PROXY"
# 测试连接
echo -e "\n正在测试代理连接..."
curl -I https://www.google.com 2>/dev/null | head -n 1 || echo "代理连接失败。请检查你的设置。"
}
function unset_proxy() {
unset http_proxy
unset https_proxy
unset ALL_PROXY
echo "代理已禁用"
}
# 根据参数执行操作
case "$1" in
"on")
set_proxy "$@" # 传递所有参数
;;
"off")
unset_proxy
;;
*)
echo "用法: source $(basename $0) [on [ip地址] | off]"
echo "示例: source $(basename $0) on 192.168.1.100"
echo " source $(basename $0) off"
;;
esac
使用方法
1. 配置脚本
# 创建脚本
nano ~/.proxy-setup.sh
# 将上面的脚本内容复制到文件中
# 添加执行权限
chmod +x ~/.proxy-setup.sh
2. 使用代理
# 开启代理(自动获取宿主机IP)
source ~/.proxy-setup.sh on
# 开启代理(指定宿主机IP)
source ~/.proxy-setup.sh on 192.168.3.100
# 关闭代理
source ~/.proxy-setup.sh off
3. 可选配置:添加别名
如果想要更方便地使用,可以在 ~/.bashrc
中添加别名:
echo 'alias proxy="source ~/.proxy-setup.sh"' >> ~/.bashrc
source ~/.bashrc
之后就可以使用以下命令来控制代理:
# 开启代理
proxy on
# 开启代理(指定IP)
proxy on 192.168.3.100
# 关闭代理
proxy off
代理的持久化
如果想要让代理设置在新的终端会话中自动生效,可以在 ~/.bashrc
中添加自动启动代理的命令:
echo 'source ~/.proxy-setup.sh on' >> ~/.bashrc
这样每次打开新的终端时都会自动启用代理。
注意事项
- 脚本默认会自动获取 Windows 宿主机 IP,如果自动获取失败,可以手动指定 IP 地址
- 需要修改脚本中的
PORT
为你的代理客户端端口(通常为 7890、1080、8080 等) - Windows 代理客户端(如 Clash、V2rayN 等)需要开启"允许来自局域网的连接"选项
- 代理设置只对当前终端会话有效,除非进行了持久化配置
- 可以通过
echo $http_proxy
命令查看当前代理设置
评论区