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。