OpenConnect:Docker + SOCKS5
默认的 Cisco 客户端不支持 split tunnel 模式,且与其他 VPN / 代理协作不友好,所以可以用兼容 AnyConnect 协议的 OpenConnect 替代。直接裸机运行的方案可以参考 Mark4551124015/HKU-VPN。
这里提供的是一个 Docker 化的部署方式,映射出一个 1080 端口的 SOCKS5 代理:可以直接把应用指向 socks5://127.0.0.1:1080,或作为其他 VPN 代理链的一环,比如访问 ChatGPT / Claude 等服务。
二选一
| 脚本 | 代理后端 | 说明 |
|---|---|---|
openconnect-setup.sh | microsocks | 更轻量,只做 SOCKS5 |
openconnect-gost-setup.sh | gost | 更重一些,支持更多协议 / 代理链能力 |
脚本引用的镜像构建自 ma-wenqian/dockerfiles/openconnect。
一键安装(Linux / macOS)
bash
# 更轻量:OpenConnect + microsocks
curl -fsSL https://sh.mawenqian.com/openconnect-setup.sh | bash
# OpenConnect + gost
curl -fsSL https://sh.mawenqian.com/openconnect-gost-setup.sh | bash每个脚本都会:
- 创建安装目录(默认
/opt/openconnect-head或/opt/openconnect-gost,可通过INSTALL_DIR环境变量覆盖); - 生成一个
.env模板(VPN 地址 / 账号 / 密码 / TOTP 密钥 + 可选的本地网段路由),并设置权限为chmod 600; - 写入对应的
Dockerfile与docker-compose.yaml,用于构建代理 + OpenConnect 镜像。
启动
bash
cd /opt/openconnect-head # 或 /opt/openconnect-gost
$EDITOR .env # 填入真实的 VPN 信息
docker compose up -d --build容器内置了断线自动重连逻辑(--force-dpd=30 + 重启循环),并配置了健康检查(通过隧道 ping 1.1.1.1)。
让局域网其他设备也能用
如果希望局域网内的其他设备也能访问这个代理(而不仅仅是运行 Docker 的这台机器),在 .env 中设置 LOCAL_NETWORK / LOCAL_GATEWAY;如果只在本机使用,保持默认即可。