frp + cloudflared cloudflared+ Tailscale Tailscale+ Telegram Telegram+ Docker Agent Docker Agent + nftables+ Coraza + OWASP CRS v4+ tailscaled+ Gately

单文件网关集成DDNS、穿透、端口转发、反代、WAF与入侵防护

边界网关需要域名解析、内网穿透、TLS 反代与防护协同,单文件集成减少组件数量便于审计

✓ 单文件32MB开箱即用✓ 性能可替代haproxy+nginx ✕ 负载内存约110MB偏高✕ 部分平台封禁不落nftables

方案简介

Gately 是一套开源、可审计的网络网关工具集,面向家庭网络、NAS、云主机与各类服务器。它把 DDNS、STUN 穿透、端口转发、反向代理、SSL 证书、WAF、入侵防护、Docker 管理等常用网关能力集成在一个约 32 MB 的单文件中,替代过去需要 haproxy + nginx + fail2ban + acme.sh 等多组件拼装的部署方式。适合需要在家用或小型服务器上暴露服务、又关心安全与可审计性的自托管用户。

亮点与能力

  • 动态域名:支持阿里云、Cloudflare、腾讯云等十余家 DNS 服务商,IPv4/IPv6,URL/网卡/命令取 IP,Webhook 通知
  • STUN 穿透:TCP/UDP、保活、UPnP/NAT-PMP、内置转发、地址变化触发 Webhook 与脚本
  • 端口转发:SNI 分流让多个服务共用 443,多目标故障转移、PROXY 协议、流量统计
  • SSL 证书:ACME 自动签发续期,DNS-01 通配符与 HTTP-01,证书更新后 SSH 推送或重启 Docker 容器
  • Web 服务:按域名反向代理、HTTP/3、WebSocket、多种登录认证与 TOTP 二次验证、GeoIP 过滤、负载均衡
  • WAF:Coraza + OWASP CRS v4,可按文件启用规则,上传站点也可挂 WAF
  • 入侵防护:类 fail2ban 自动封禁,同步到 nftables 在内核层丢弃
  • 迁移:导入 Lucky 的 .lkcf 或整站 zip,导入 nginx 配置

组成与分工

  • Gately:单文件网关主体,承载 DDNS、穿透、转发、反代、证书、WAF、入侵防护、Docker 管理等全部模块
  • Coraza + OWASP CRS v4:WAF 引擎与规则集,负责请求拦截或仅检测
  • nftables:系统防火墙,入侵防护的封禁同步到这里在内核层丢弃
  • tailscaled:用户态网络守护进程,容器友好,提供 Tailscale 组网能力
  • frp:frpc 客户端与 frps 服务端,提供内网穿透代理
  • cloudflared:Cloudflare 隧道客户端,提供令牌隧道与临时隧道
  • Docker:容器运行方式,--network host 监听宿主机端口,--cap-add NET_ADMIN 支持写入 nftables

前置要求

  • 支持 amd64、arm64、arm/v7 的 Linux 主机(另有 macOS、Windows、FreeBSD、OpenWrt 包)
  • Docker 运行环境(推荐方式)
  • 端口转发、STUN、Web 服务需监听宿主机端口,推荐 host 网络模式

Docker 启动命令:

docker run -d --name gately --network host --cap-add NET_ADMIN \
  -v ./gately-data:/etc/gately \
  -v /var/run/docker.sock:/var/run/docker.sock \
  ghcr.io/wangwanjie/gately:latest

二进制方式从 Releases 下载后运行:

./gately -c /etc/gately

实施步骤

1. 启动容器

使用官方镜像启动,镜像支持 amd64、arm64、arm/v7:

docker run -d --name gately --network host --cap-add NET_ADMIN \
  -v ./gately-data:/etc/gately \
  -v /var/run/docker.sock:/var/run/docker.sock \
  ghcr.io/wangwanjie/gately:latest

不需要 Docker 管理时可去掉 docker.sock 挂载。--cap-add NET_ADMIN 供入侵防护把封禁写入宿主机的 nftables 防火墙。

2. 登录并加固

打开 http://<设备IP>:16680,用默认账号 admin 和默认密码 gately.cn 登录,然后在「设置」中修改密码并开启两步验证。

3. 配置各模块

在管理界面配置 DDNS、端口转发、反向代理等模块;也可使用 -apply 参数实现声明式配置:每次启动把目录中的 <名称>.json 覆盖到配置目录,适合 GitOps 与 Kubernetes,账号与令牌文件不允许覆盖。

4. 可选:无人值守初始化

无人值守安装时可设置环境变量 GATELY_INITIAL_PASSWORD 指定管理员初始密码,代替默认密码。

使用与配置要点

  • 忘记密码或丢失两步验证器时,运行 gately reset-password 或 gately reset-totp(Docker 为 docker exec -it gately gately reset-password),确认后立即生效
  • 命令行 gately ctl 可调用运行中的实例,gately mcp 以 stdio 提供 MCP 服务(默认只读)
  • 监控:全局 Prometheus 指标在 /api/metrics,附 Grafana 面板
  • 自检:一键网络自检覆盖公网 IP、运营商 NAT、系统时间、80/443 端口、DDNS 解析、证书到期等
  • 安全:支持 Passkey(WebAuthn)登录、TOTP 两步验证、只读账号、安全入口、仅内网访问、按需开关功能模块(关闭的模块不启动服务)
  • 审计与回滚:每次覆盖配置文件前保留旧版本,可对比差异并一键回滚;配置为明文 JSON,可直接纳入 git

注意事项与常见问题

  • 性能对比基于特定测试环境(i5-13500T 限 2 核、ECDSA P-256、TLS 1.3),结果受硬件、配置与流量影响,官方建议用自己的业务负载实测
  • 不加 --cap-add NET_ADMIN 时,封禁仍对 Gately 自身的服务生效,但不能写入宿主机 nftables
  • 没有 nftables 的平台,封禁只对 Gately 自身的服务生效
  • WAF 请求体检查有上限,超限时只检查前段或按路径跳过
  • 本机 Shell 的 Web 终端默认关闭
  • 飞牛原生应用与 Docker 镜像都用 16680 端口,启动原生应用前请先停止 gately 容器

优缺点

  • ✓ 单文件32MB开箱即用
  • ✓ 性能可替代haproxy+nginx
  • ✕ 负载内存约110MB偏高
  • ✕ 部分平台封禁不落nftables

出处

本方案挖掘自开源项目 wangwanjie/gately,方案内容与实施命令均来自其 README 原文。

方案出处
wangwanjie/gately:Open-source, auditable network gateway for homelabs, NAS and servers: DDNS, STUN
325 star Open-source, auditable network gateway for homelabs, NAS and servers: DDNS, STUN traversal, port forwarding with SNI routing, reverse proxy and web server, ACME certificates, WAF, Tailscale, frp, Clou

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。