Home
avatar

.𝙃𝙖𝙣

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 - Github

技术架构

核心组件

vh-warp 由以下几个核心组件构成:

  1. Cloudflare WARP:提供网络代理服务
  2. GOST:提供 HTTP/SOCKS5 混合代理服务
  3. vhwarp.sh:交互式配置工具
  4. setup-dns.sh:DNS 优化工具
  5. 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/Shanghai

2. 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-warp

3. 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/gost

GOST 启动时监听端口 16666,提供混合代理服务(同时支持 HTTP 和 SOCKS5):

gost -L mixed://0.0.0.0:16666

4. 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 网卡(通常是 CloudflareWARPwarp),并确保网卡处于 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 设备"
fi

7. 日志管理

所有日志统一存储在 /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 配置界面

配置选项

vhwarp 提供了三种配置方式:

  1. WARP 免费版:无需任何账号,直接注册使用
  2. Teams (Zero Trust):使用 Teams Token URL 配置,适合企业用户
  3. 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 适用于多种场景:

  1. 家庭网络:在 NAS 或软路由上部署,全家设备共享 WARP 服务
  2. 办公室网络:为团队提供统一的网络出口
  3. 开发测试:模拟不同网络环境进行测试
  4. 服务器部署:为服务器提供网络代理能力
  5. 多设备管理:避免每台设备单独配置 WARP

性能优化

项目在设计时考虑了多个性能优化点:

  1. DNS 预选:自动选择响应最快的 DNS 服务器
  2. 连接复用:GOST 支持连接池,减少连接建立开销
  3. 内核参数调优:优化 somaxconn 等网络参数
  4. 轻量级基础镜像:使用 Debian slim 版本,减少资源占用

总结

vh-warp 是一个精心设计的 WARP 代理容器,它将复杂的网络配置封装成简单的 Docker 镜像,让用户能够快速搭建局域网代理服务。无论是个人使用还是团队部署,都能提供稳定、高效的代理体验。

如果你有相关的需求或建议,欢迎在 GitHub 上提出 Issue 或 Pull Request。让我们一起打造更好的开源工具!


Docker 镜像uxiaohan/vh-warp:latest

CloudFlare WARP Docker