The note is generated by DeepSeek.
📋 概述
本指南介绍如何在 WSL (Windows Subsystem for Linux) 中配置和使用 Windows 主机上的 SOCKS5 代理,实现网络访问的代理功能。
🛠️ 配置步骤
1. 创建代理配置文件
创建文件 ~/.bash_proxy 并添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
| # ==================== 代理管理函数 ====================
# 获取 Windows 主机 IP
get_hostip() {
cat /etc/resolv.conf | grep nameserver | awk '{print $2}'
}
# 开启代理
proxy_on() {
export hostip=$(get_hostip)
export ALL_PROXY="socks5://${hostip}:10810"
export HTTP_PROXY="socks5://${hostip}:10810"
export HTTPS_PROXY="socks5://${hostip}:10810"
export http_proxy="socks5://${hostip}:10810"
export https_proxy="socks5://${hostip}:10810"
echo "🔓 代理已开启"
echo " SOCKS5: socks5://${hostip}:10810"
}
# 关闭代理
proxy_off() {
unset ALL_PROXY
unset HTTP_PROXY
unset HTTPS_PROXY
unset http_proxy
unset https_proxy
unset hostip
echo "🔒 代理已关闭"
}
# 显示代理状态
proxy_status() {
if [ -n "$ALL_PROXY" ]; then
echo "🟢 代理状态: 开启"
echo " ALL_PROXY=$ALL_PROXY"
echo " HTTP_PROXY=$HTTP_PROXY"
echo " HTTPS_PROXY=$HTTPS_PROXY"
else
echo "🔴 代理状态: 关闭"
fi
}
# 测试代理连接
proxy_test() {
echo "🧪 测试代理连接..."
if curl -s --connect-timeout 10 -I https://www.google.com > /dev/null; then
echo "✅ 代理连接成功"
else
echo "❌ 代理连接失败"
fi
}
# 快速切换代理
proxy_switch() {
if [ -n "$ALL_PROXY" ]; then
proxy_off
else
proxy_on
fi
}
# 显示当前网络信息
proxy_info() {
echo "🌐 网络信息:"
echo " WSL IP: $(hostname -I 2>/dev/null | awk '{print $1}')"
echo " Windows IP: $(get_hostip)"
echo " 代理端口: 10810"
}
|
2. 修改 Bash 配置文件
在 ~/.bashrc 文件末尾添加以下内容:
1
2
3
4
5
6
7
8
9
10
| # ==================== 代理配置 ====================
# 加载代理函数
if [ -f ~/.bash_proxy ]; then
source ~/.bash_proxy
# 终端启动时自动开启代理
proxy_on
echo "🚀 WSL 代理已自动开启"
echo " 可用命令: proxy_on, proxy_off, proxy_status, proxy_test, proxy_switch, proxy_info"
fi
|
3. 激活配置
执行以下命令使配置生效:
或者重新打开终端窗口。
🎯 使用方法
基本命令
| 命令 | 功能 | 示例 |
|---|
proxy_on | 开启代理 | proxy_on |
proxy_off | 关闭代理 | proxy_off |
proxy_status | 查看代理状态 | proxy_status |
proxy_test | 测试代理连接 | proxy_test |
proxy_switch | 切换代理状态 | proxy_switch |
proxy_info | 显示网络信息 | proxy_info |
验证代理工作
使用以下命令测试代理是否正常工作:
1
| curl -v https://www.google.com
|
⚠️ 前提条件
Windows 代理软件配置
确保 Windows 上的代理软件满足以下条件:
开启局域网访问:
- 在代理软件设置中启用"允许来自局域网的连接"或"Allow LAN"
- 或者使用专门为局域网设计的端口(如 10810)
验证监听状态:
在 Windows PowerShell 中执行:
1
| netstat -an | findstr 10810
|
应该看到类似输出:
TCP 0.0.0.0:10810 0.0.0.0:0 LISTENING
防火墙设置:
- 确保 Windows 防火墙允许代理端口的入站连接
- 或将代理软件添加到防火墙白名单
🔧 故障排除
常见问题及解决方案
连接被拒绝
curl: (7) Failed to connect to 172.19.160.1 port 10810 after 0 ms: Couldn't connect to server
- 检查代理软件是否运行
- 确认"允许局域网连接"已开启
- 验证端口号是否正确
代理语法错误
curl: (5) Unsupported proxy syntax in 'socks5://172.19.160.1:port'
代理连接失败但配置正确
- 检查 Windows 防火墙设置
- 重启代理软件
- 尝试使用不同的端口
端口说明
常见代理软件端口配置:
- 本地端口:10808 (仅限 Windows 本地使用)
- 局域网端口:10810 (WSL、手机等设备使用)
💡 高级配置
为其他 Shell 配置
如果你使用 Zsh,将配置添加到 ~/.zshrc:
1
2
3
4
5
| # 加载代理函数
if [ -f ~/.bash_proxy ]; then
source ~/.bash_proxy
proxy_on
fi
|
为特定项目配置不同代理
可以创建项目特定的代理设置:
1
2
3
4
5
6
| # 设置项目专用代理
project_proxy_on() {
export hostip=$(get_hostip)
export ALL_PROXY="socks5://${hostip}:7890" # 使用不同端口
echo "🔓 项目代理已开启: socks5://${hostip}:7890"
}
|
📝 注意事项
- 自动开启:终端启动时会自动开启代理
- 环境变量:代理设置通过环境变量传递,影响大多数命令行工具
- sudo 使用:使用
sudo 时可能需要额外配置以保持代理设置 - 端口变更:如果 Windows 代理端口变更,需要相应更新配置文件
🌟Linux上的配置:
1. 创建代理配置文件
创建文件 ~/.bash_proxy 并添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| # ==================== 代理管理函数 ====================
# 开启代理
proxy_on() {
export ALL_PROXY="http://127.0.0.1:7890"
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
echo "🔓 代理已开启"
echo "http://127.0.0.1:7890"
}
# 关闭代理
proxy_off() {
unset ALL_PROXY
unset HTTP_PROXY
unset HTTPS_PROXY
unset http_proxy
unset https_proxy
echo "🔒 代理已关闭"
}
# 显示代理状态
proxy_status() {
if [ -n "$ALL_PROXY" ]; then
echo "🟢 代理状态: 开启"
echo " ALL_PROXY=$ALL_PROXY"
echo " HTTP_PROXY=$HTTP_PROXY"
echo " HTTPS_PROXY=$HTTPS_PROXY"
else
echo "🔴 代理状态: 关闭"
fi
}
# 测试代理连接
proxy_test() {
echo "🧪 测试代理连接..."
if curl -s --connect-timeout 10 -I https://www.google.com > /dev/null; then
echo "✅ 代理连接成功"
else
echo "❌ 代理连接失败"
fi
}
# 快速切换代理
proxy_switch() {
if [ -n "$ALL_PROXY" ]; then
proxy_off
else
proxy_on
fi
}
|
2. 修改 Bash 配置文件
在 ~/.bashrc 文件末尾添加以下内容:
1
2
3
4
5
6
7
8
9
10
| # ==================== 代理配置 ====================
# 加载代理函数
if [ -f ~/.bash_proxy ]; then
source ~/.bash_proxy
# 终端启动时自动开启代理
proxy_on
echo "🚀 WSL 代理已自动开启"
echo " 可用命令: proxy_on, proxy_off, proxy_status, proxy_test, proxy_switch, proxy_info"
fi
|