|
|
# Wormhole SOCKS5 Client 使用指南
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
Wormhole SOCKS5 Client 是一个功能强大的代理客户端,支持多种代理模式,可以将 SOCKS5 代理转换为 HTTP 代理,并提供全局代理和透明代理功能。
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
- ✅ **HTTP 代理模式**: 将 SOCKS5 代理转换为 HTTP/HTTPS 代理
|
|
|
- ✅ **全局代理模式**: 自动配置系统级代理设置
|
|
|
- ✅ **DNS 代理**: 提供 DNS 请求代理和缓存
|
|
|
- ✅ **系统集成**: 支持 macOS 系统代理自动配置
|
|
|
- ⚠️ **透明代理模式**: 计划实现(需要 root 权限)
|
|
|
|
|
|
## 安装
|
|
|
|
|
|
### 从源码编译
|
|
|
|
|
|
```bash
|
|
|
git clone http://101.34.16.52:3000/huyinsong/wormhole-client.git
|
|
|
cd wormhole-client
|
|
|
make build
|
|
|
```
|
|
|
|
|
|
### 使用预编译二进制
|
|
|
|
|
|
```bash
|
|
|
# 下载并安装到 /usr/local/bin
|
|
|
make install
|
|
|
```
|
|
|
|
|
|
## 配置文件
|
|
|
|
|
|
配置文件位于 `configs/client.yaml`,包含以下主要配置:
|
|
|
|
|
|
```yaml
|
|
|
# SOCKS5 服务器设置
|
|
|
server:
|
|
|
address: 127.0.0.1
|
|
|
port: 1080
|
|
|
username: admin
|
|
|
password: secure_password_123
|
|
|
|
|
|
# 代理模式设置
|
|
|
proxy:
|
|
|
mode: http # http, global, transparent
|
|
|
localPort: 8080
|
|
|
|
|
|
# 全局代理设置
|
|
|
globalProxy:
|
|
|
enabled: false
|
|
|
dnsProxy: true
|
|
|
dnsPort: 5353
|
|
|
|
|
|
# 分流规则
|
|
|
routing:
|
|
|
bypassLocal: true
|
|
|
bypassPrivate: true
|
|
|
bypassDomains:
|
|
|
- "*.local"
|
|
|
- "*.lan"
|
|
|
forceDomains:
|
|
|
- "*.google.com"
|
|
|
- "*.github.com"
|
|
|
|
|
|
# 日志级别
|
|
|
logLevel: info
|
|
|
timeout: 30s
|
|
|
```
|
|
|
|
|
|
## 使用方法
|
|
|
|
|
|
### 1. HTTP 代理模式
|
|
|
|
|
|
最简单的使用方式,将 SOCKS5 代理转换为 HTTP 代理:
|
|
|
|
|
|
```bash
|
|
|
# 使用默认配置
|
|
|
./bin/wormhole-client -mode http
|
|
|
|
|
|
# 指定配置文件
|
|
|
./bin/wormhole-client -mode http -config /path/to/config.yaml
|
|
|
```
|
|
|
|
|
|
启动后,在浏览器中配置 HTTP 代理:
|
|
|
- 代理地址: `127.0.0.1`
|
|
|
- 代理端口: `8080` (或配置文件中指定的端口)
|
|
|
|
|
|
### 2. 全局代理模式
|
|
|
|
|
|
自动配置系统级代理,所有应用程序都将通过代理访问网络:
|
|
|
|
|
|
```bash
|
|
|
# 需要管理员权限 (macOS)
|
|
|
sudo ./bin/wormhole-client -mode global
|
|
|
```
|
|
|
|
|
|
**注意**:
|
|
|
- macOS 系统需要管理员权限
|
|
|
- 程序退出时会自动恢复原始代理设置
|
|
|
- 可以使用 Ctrl+C 安全退出
|
|
|
|
|
|
### 3. 透明代理模式 (计划实现)
|
|
|
|
|
|
```bash
|
|
|
# 需要 root 权限
|
|
|
sudo ./bin/wormhole-client -mode transparent
|
|
|
```
|
|
|
|
|
|
## 命令行选项
|
|
|
|
|
|
```bash
|
|
|
./bin/wormhole-client [选项]
|
|
|
|
|
|
选项:
|
|
|
-config string
|
|
|
配置文件路径 (默认 "configs/client.yaml")
|
|
|
-mode string
|
|
|
客户端模式: http, global, transparent (默认 "http")
|
|
|
-version
|
|
|
显示版本信息
|
|
|
```
|
|
|
|
|
|
## 使用场景
|
|
|
|
|
|
### 场景 1: 浏览器代理
|
|
|
|
|
|
1. 启动 HTTP 代理模式
|
|
|
2. 在浏览器中配置 HTTP 代理为 `127.0.0.1:8080`
|
|
|
3. 访问被墙网站
|
|
|
|
|
|
### 场景 2: 全局科学上网
|
|
|
|
|
|
1. 以管理员权限启动全局代理模式
|
|
|
2. 系统所有网络请求自动通过代理
|
|
|
3. 支持 DNS 代理,解决 DNS 污染问题
|
|
|
|
|
|
### 场景 3: 开发调试
|
|
|
|
|
|
1. 使用 HTTP 代理模式
|
|
|
2. 配置开发工具使用代理
|
|
|
3. 调试网络请求和响应
|
|
|
|
|
|
## 故障排除
|
|
|
|
|
|
### 连接失败
|
|
|
|
|
|
1. 检查 SOCKS5 服务器地址和端口
|
|
|
2. 验证用户名和密码
|
|
|
3. 确认网络连通性
|
|
|
|
|
|
### 权限问题
|
|
|
|
|
|
```bash
|
|
|
# macOS 全局代理需要管理员权限
|
|
|
sudo ./bin/wormhole-client -mode global
|
|
|
|
|
|
# 检查系统代理设置
|
|
|
networksetup -getwebproxy Wi-Fi
|
|
|
```
|
|
|
|
|
|
### 日志调试
|
|
|
|
|
|
```bash
|
|
|
# 启用详细日志
|
|
|
./bin/wormhole-client -mode http -config configs/debug.yaml
|
|
|
```
|
|
|
|
|
|
在配置文件中设置 `logLevel: debug` 获取详细日志信息。
|
|
|
|
|
|
## 安全注意事项
|
|
|
|
|
|
1. **配置文件安全**: 保护好包含密码的配置文件
|
|
|
2. **管理员权限**: 仅在需要时使用管理员权限
|
|
|
3. **网络安全**: 确保 SOCKS5 服务器的安全性
|
|
|
4. **DNS 泄露**: 使用 DNS 代理防止 DNS 泄露
|
|
|
|
|
|
## 开发和贡献
|
|
|
|
|
|
### 编译和测试
|
|
|
|
|
|
```bash
|
|
|
# 编译
|
|
|
make build
|
|
|
|
|
|
# 运行测试
|
|
|
make test
|
|
|
|
|
|
# 检查代码质量
|
|
|
make lint
|
|
|
|
|
|
# 清理构建文件
|
|
|
make clean
|
|
|
```
|
|
|
|
|
|
### 代码结构
|
|
|
|
|
|
```
|
|
|
├── cmd/wormhole-client/ # 主程序入口
|
|
|
├── internal/ # 内部模块
|
|
|
│ ├── client/ # 客户端核心逻辑
|
|
|
│ ├── config/ # 配置解析
|
|
|
│ ├── proxy/ # SOCKS5 代理实现
|
|
|
│ └── system/ # 系统代理管理
|
|
|
├── pkg/ # 公共模块
|
|
|
│ ├── dns/ # DNS 代理
|
|
|
│ └── logger/ # 日志模块
|
|
|
└── configs/ # 配置文件
|
|
|
```
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
本项目采用 MIT 许可证,详情请参见 LICENSE 文件。 |