vh-warp:轻量级 Cloudflare WARP 代理容器,一键搭建局域网代理服务
在网络访问受限或需要优化网络体验的场景下,Cloudflare WARP 是一个非常优秀的解决方案。它提供了免费、稳定、高速的代理服务,但官方客户端主要面向个人设备使用,如何在局域网内共享 WARP 服务一直是个痛点。
今天我开源了一个新项目 vh-warp,这是一个轻量级的 Docker 镜像封装,将 Cloudflare WARP 打包成容器,让你能够快速搭建局域网可访问的代理服务。
项目特性
vh-warp 的设计理念是”极简部署、极致性能、极其稳定”,主要特性包括:
- 🚀 一键部署:Docker 化封装,无需复杂配置,快速启动 WARP 代理
- 🌐 局域网共享:代理服务暴露至局域网,多设备共用 WARP 网络
- 📝 日志整洁:WARP 日志隔离存储,Docker 日志无冗余输出
- 📦 日志可控:自动轮转+大小限制,避免日志文件占用过多空间
- 💻 多架构适配:支持 amd64/arm64(服务器/软路由/树莓派均适用)
- 🔑 账号管理:支持 WARP 免费版、WARP+、Teams (Zero Trust) 账号配置
- 🎯 交互配置:内置 vhwarp 配置工具,菜单式操作,简单易用
技术架构
核心组件
vh-warp 由以下几个核心组件构成:
- Cloudflare WARP:提供网络代理服务
- GOST:提供 HTTP/SOCKS5 混合代理服务
- vhwarp.sh:交互式配置工具
- setup-dns.sh:DNS 优化工具
- gost-setup.sh:GOST 服务管理和 iptables 配置
技术实现细节
1. 基础镜像选择
项目基于 debian:bookworm-slim 构建,这是一个轻量级的 Debian 镜像,既保证了系统的稳定性,又控制了镜像大小。
FROM debian:bookworm-slim
LABEL maintainer="Han <www.vvhan.com>"
ENV DEBIAN_FRONTEND=noninteractive TZ=Asia/Shanghai2. WARP 安装
通过 Cloudflare 官方源安装 WARP 客户端,确保版本更新及时:
RUN curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | gpg --dearmor -o /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ bookworm main" | tee /etc/apt/sources.list.d/cloudflare-client.list && \
apt update && \
apt install -y cloudflare-warp3. GOST 代理服务
GOST 是一个用 Go 语言编写的多功能网络隧道代理工具,版本选择 3.2.6:
ENV GOST_VERSION=3.2.6
RUN ARCH=$(dpkg --print-architecture) && \
curl -L "https://github.com/go-gost/gost/releases/download/v${GOST_VERSION}/gost_${GOST_VERSION}_linux_${ARCH}.tar.gz" | tar xz -C /usr/local/bin && \
chmod +x /usr/local/bin/gostGOST 启动时监听端口 16666,提供混合代理服务(同时支持 HTTP 和 SOCKS5):
gost -L mixed://0.0.0.0:166664. iptables NAT 配置
为了让局域网内的设备能够通过 WARP 网卡访问网络,需要配置 iptables 规则:
# 配置 NAT 转发
iptables -t nat -A POSTROUTING -o "$WARP_IF" -j MASQUERADE
iptables -A FORWARD -o "$WARP_IF" -j ACCEPT
iptables -A FORWARD -i "$WARP_IF" -m state --state RELATED,ESTABLISHED -j ACCEPT这里有一个关键的技术细节:系统会自动检测 WARP 网卡(通常是 CloudflareWARP 或 warp),并确保网卡处于 UP 状态后才配置规则。
5. DNS 优化
setup-dns.sh 脚本会自动测试 Google DNS (8.8.8.8) 和 Cloudflare DNS (1.1.1.1) 的响应时间,选择更快的一个:
time_nslookup() {
local dns=$1
local start end
start=$(date +%s%3N)
nslookup google.com $dns > /dev/null 2>&1
end=$(date +%s%3N)
echo $((end - start))
}这种动态 DNS 选择机制能够确保网络解析性能最优。
6. TUN 设备创建
Docker 容器默认没有 /dev/net/tun 设备,这是 WARP 工作所必需的。entrypoint.sh 会自动创建:
if [ ! -e /dev/net/tun ]; then
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
log "创建 TUN 设备"
fi7. 日志管理
所有日志统一存储在 /var/log/warp-gost/ 目录下:
warp-svc.log- WARP 服务日志gost.log- GOST 代理日志vhwarp.log- 配置工具日志entrypoint.log- 启动日志
这种日志隔离设计使得 Docker 容器的日志输出保持整洁,便于查看和管理。
快速开始
构建镜像
git clone https://github.com/uxiaohan/vh-warp.git
cd vh-warp
docker buildx build --no-cache -t vh-warp:latest .启动容器
使用 Docker Compose(推荐):
version: '3.8'
services:
vh-warp:
image: uxiaohan/vh-warp:latest
container_name: vh-warp
restart: unless-stopped
cap_add:
- NET_ADMIN
- NET_RAW
- MKNOD
device_cgroup_rules:
- "c 10:200 rwm"
ports:
- "16666:16666"
sysctls:
net.core.somaxconn: "65535"
net.ipv4.conf.all.src_valid_mark: "1"
net.ipv4.ip_forward: "1"使用 Docker 命令:
docker run -d \
--name vh-warp \
--cap-add=NET_ADMIN \
--cap-add=NET_RAW \
--cap-add=MKNOD \
--device-cgroup-rule 'c 10:200 rwm' \
-p 16666:16666 \
--sysctl net.core.somaxconn=65535 \
--sysctl net.ipv4.conf.all.src_valid_mark=1 \
--sysctl net.ipv4.ip_forward=1 \
uxiaohan/vh-warp:latest关键参数说明
--cap-add=NET_ADMIN:允许容器修改网络配置--cap-add=NET_RAW:允许容器使用原始套接字--cap-add=MKNOD:允许容器创建设备节点--device-cgroup-rule 'c 10:200 rwm':允许访问字符设备 10(TUN 设备)--sysctl net.ipv4.ip_forward=1:启用 IP 转发
配置 WARP
容器启动后,进入容器并运行配置工具:
docker exec -it vh-warp bash
vhwarp
配置选项
vhwarp 提供了三种配置方式:
- WARP 免费版:无需任何账号,直接注册使用
- Teams (Zero Trust):使用 Teams Token URL 配置,适合企业用户
- WARP+ (License Key):使用 License Key 激活 WARP+ 服务
配置成功后,工具会自动启动 GOST 代理服务,监听端口 16666。
使用代理
局域网内任何设备都可以配置代理地址:
HTTP 代理:http://容器IP:16666
SOCKS5 代理:socks5://容器IP:16666高级功能
查看状态
使用 vhwarp 工具可以随时查看 WARP 连接状态:
vhwarp
# 选择 4. 查看当前状态重置配置
如果遇到问题,可以重置配置:
vhwarp
# 选择 5. 重置注册并清理配置查看日志
# 查看 WARP 服务日志
docker exec -it vh-warp tail -f /var/log/warp-gost/warp-svc.log
# 查看 GOST 代理日志
docker exec -it vh-warp tail -f /var/log/warp-gost/gost.log
# 查看配置工具日志
docker exec -it vh-warp tail -f /var/log/warp-gost/vhwarp.log应用场景
vh-warp 适用于多种场景:
- 家庭网络:在 NAS 或软路由上部署,全家设备共享 WARP 服务
- 办公室网络:为团队提供统一的网络出口
- 开发测试:模拟不同网络环境进行测试
- 服务器部署:为服务器提供网络代理能力
- 多设备管理:避免每台设备单独配置 WARP
性能优化
项目在设计时考虑了多个性能优化点:
- DNS 预选:自动选择响应最快的 DNS 服务器
- 连接复用:GOST 支持连接池,减少连接建立开销
- 内核参数调优:优化
somaxconn等网络参数 - 轻量级基础镜像:使用 Debian slim 版本,减少资源占用
总结
vh-warp 是一个精心设计的 WARP 代理容器,它将复杂的网络配置封装成简单的 Docker 镜像,让用户能够快速搭建局域网代理服务。无论是个人使用还是团队部署,都能提供稳定、高效的代理体验。
如果你有相关的需求或建议,欢迎在 GitHub 上提出 Issue 或 Pull Request。让我们一起打造更好的开源工具!
Docker 镜像:uxiaohan/vh-warp:latest