Gately v0.6.5.5 发布
2026 年 11 月 11 日
端口敲门(#80)
新增「端口敲门」模块(位于「网络」分组),提供与 fwknop 客户端兼容的单包授权(SPA):受保护的端口平时对外不可连接,客户端先发送一个加密、带认证的敲门包,认证通过后只为这个来源地址在限定时间内放行。适合保护 SSH 直连,scp、IDE 远程开发等 Web 终端覆盖不到的场景也能安全地从外网连接。
- 安全:报文用 AES 加密、HMAC 认证,先校验 HMAC 再解密;每个报文只能使用一次(防重放),时间戳超出有效期(默认 120 秒)即拒绝;可限定用户名、可要求报文写明放行地址;
- 防火墙拦截:默认在 UDP 62201 接收敲门包;规则可把受保护端口写入系统防火墙(nftables,内核没有 nf_tables 时用 iptables + ipset),敲门成功的地址在放行时长(默认 30 秒)内可以建立新连接,已建立的连接不受影响;
- 防止锁在外面:默认开启「内网免敲门」,私有地址与本机网卡所在的公网 IPv6 网段无需敲门(运营商级 NAT 地址 100.64.0.0/10 不在其中),并可追加免敲门白名单;
- Gately 入口按敲门放行:端口转发、协议分流、STUN 内置转发的 IP 访问控制可以选择“需要敲门”,由 Gately 自己判断,不需要防火墙权限,Windows、macOS 与没有
NET_ADMIN的容器也能用; - 只开一个端口:协议分流可以按路由要求敲门,并新增「端口敲门」路由(协议
spa),经 TCP 接收敲门包(fwknop -P tcp),同一个端口既接收敲门,又按结果放行 SSH 等路由; - 与入侵防护联动:被拒绝的敲门可作为入侵防护的事件来源,内置「端口敲门失败」模板默认 10 分钟内 5 次即封禁 1 天;经 UDP 发来、未通过 HMAC 认证的包来源可以伪造,只计数、不计入;敲门成功与被拒绝可在通知中心订阅;
- 客户端配置:规则卡片上的「客户端」生成 fwknop 命令行与
~/.fwknoprc配置段,密钥格式与fwknop -k相同。
详见 端口敲门。
网络唤醒:客户端远程关机
远程关机新增「客户端」方式:在 Windows、Linux、macOS、OpenWrt 上安装一个客户端(分别安装为计划任务,或 systemd / OpenRC、launchd、procd 服务),由客户端主动长轮询 Gately 取指令,设备不必开放任何端口,Gately 也不保存设备的登录凭据。
- 客户端只执行关机、重启、睡眠三种固定操作,接口
POST /api/wol/devices/{key}/shutdown可用{"action": "reboot"}、{"action": "sleep"}重启、睡眠; - 指令只在发出后 10 秒内有效:客户端先确认、Gately 回复后才执行,客户端离线时直接报错,不会排队到下次上线再执行;
- 安装命令先校验脚本的 SHA-256,不一致时停止安装;凭据经请求体与环境变量传递,不出现在网址与命令行参数中;
- 设备卡片显示客户端是否在线,以及上报的主机名、系统与来源地址;「重新生成」凭据后旧客户端立即断开。
另新增「HTTP 请求」方式,用于 Home Assistant、智能插座等提供 HTTP 接口的服务:填写地址、方法、请求头与请求体,响应状态码为 2xx 视为成功。详见 网络唤醒 · 客户端。
Web 服务:信任已登录用户(#81)
站点新增「信任已登录用户」开关:已通过本站点 Gately 认证的访客不经过 WAF,请求也不计入入侵防护的 Web 路径探测,用于 WAF 或诱饵路径规则误拦自己人的情况。信任的凭据包括网页认证会话、第三方登录允许列表中逐个列出的身份、共享用户的单点登录与验证过的基本认证;经 github:* 这类 提供方:* 通配允许的身份不被信任。封禁、IP 与国家访问控制、限流照常生效。详见 WAF。
按用户分流支持更多站点类型(#79)
重定向、静态文件、导航面板与固定文本站点同样可以按认证用户分流:命中规则的用户反向代理到规则的后端,其余访客照常按站点类型处理,例如管理员进入后台、其他登录用户跳转到说明页。详见 Web 服务 · 按认证用户分流。
管理员请求跳过站点 WAF
经挂了 WAF 的站点访问管理后台时,带本实例有效管理员会话的请求不经过站点 WAF,保存含文件路径、HTML、脚本等内容的配置不再被 CRS 规则误拦成 403。只读账号、访客与其他实例的管理后台请求仍照常检查。
问题修复
- OpenWrt 安装包(#82):OpenWrt 25.12 的 apk 在架构校验失败后仍会替换文件,固件注入时离线目录里混入 arm64 安装包会让刷机后的程序反复崩溃。现在 apk 装了其他架构的包时保留正在运行的 gately 程序,并提示「已保留原有程序」。把安装包注入固件或离线安装时,目录里只放与设备架构一致的 gately 安装包,详见 安装部署 · OpenWrt。
其他改进
- 接口文档列出免登录的模块接口(如网络唤醒客户端的轮询、确认与脚本下载),注明使用模块自己的凭据,并补充端口敲门的字段。
升级提示
- Docker 拉取新镜像后重建容器;OpenWrt 覆盖安装新的
.apk/.ipk,需要 LuCI 页面时再安装同版本的luci-app-gately;飞牛在应用中心手动安装新版.fpk;其他部署方式可在「系统设置」中在线升级。 - 端口敲门的防火墙拦截需要 root 或
CAP_NET_ADMIN;Docker 部署需使用 host 网络并添加cap_add: NET_ADMIN。