2026 年公網暴露 OpenClaw Gateway 時五層故障各自長什麼樣
第一層是雲廠商安全組與邊界 ACL:你在機器內部看到監聽正常,但從公網入口進不來,典型是入站規則只開了 22 與 80,沒有把 18789 或反代對外埠寫進允許列表。第二層是主機防火牆:Ubuntu 的 ufw、CentOS 的 firewalld、以及某些映象預設 drop 策略,會在安全組放行後仍把包擋在網絡卡之後。第三層是反代與 WebSocket:Nginx 或 Caddy 若缺少 Upgrade 與 Connection 透傳,瀏覽器側會表現為握手失敗或無限重連,而 Gateway 程序本身仍健康。
第四層是Gateway 繫結與鑑權:當你把監聽從迴環改到區域網或自定義地址時,官方護欄會要求 token 或等價鑑權;缺了就會「拒絕繫結」或「能繫結但控制面無法完成 RPC 探測」。第五層是通道與策略:Telegram、Discord 或 Webhook 任意一側的速率限制、配對狀態、群組策略與 DM 策略,都會讓日誌裡出現「Gateway 線上但業務側無感」的現象。
把五層分開後,你就不會在每一個報錯上都重灌一遍;下一節的表格用來決定你現在到底是在解決網路入口問題,還是在解決控制面配置問題,還是在解決通道產品問題。
安全組:從公網 IP 用最小探針驗證埠可達,再回退到內網對比。
主機防火牆:與安全組規則交叉核對,避免「兩層都以為對方會放行」。
反代:確認 TLS 終止點與上游協議一致,WebSocket 頭是否原樣轉發。
繫結與鑑權:核對 gateway.mode、gateway.bind 與 gateway.auth 是否同一套假設。
通道:把 channels status --probe 與提供商控制檯時間戳對齊。
如果你已經讀過站內《OpenClaw 從安裝到 Gateway 聯機》那篇,可以把本文當作「公網入口與反代專章」:那一篇講安裝與守護程序驗收,這一篇講外網路徑與 WebSocket 細節;兩篇疊加後再讀《全天候穩定執行與雲節點方案》,就能把動機、命令列與網路層一次對齊。
監聽繫結 loopback、區域網與 tailnet 時鑑權與暴露面如何對照
loopback 繫結最小暴露,適合只在同一臺機器上用控制面;一旦你希望在另一臺筆記本開啟 Dashboard,就會被迫把監聽擴到非迴環地址,此時鑑權不是可選項而是護欄。區域網繫結需要明確哪些網絡卡與網段可信;tailnet 或零信任隧道場景要把「誰算內網」寫成團隊共識,否則排錯時會在錯誤層反覆橫跳。
| 維度 | 僅迴環繫結 | 非迴環繫結 + 反代 |
|---|---|---|
| 暴露面 | 最小,外網預設不可達 | 需要安全組、防火牆、TLS 與 token 組合治理 |
| Dashboard 體驗 | 需要 SSH 隧道或同機訪問 | 可用域名與證書,適合團隊共享控制面 |
| 排錯順序 | 優先看 Gateway 與 doctor | 先看埠與反代,再看 Gateway 與 doctor |
| 常見風險 | 誤把僅迴環當成公網可用地址 | 反代漏 Upgrade 或非 loopback 未配 token |
| 與 VPS 的契合 | 適合臨時試驗 | 適合把 Gateway 當長期控制面元件 |
公網排錯的第一性原理是:先證明包能到,再證明握手能過,最後才證明業務邏輯線上。
當你把 Gateway 放到 VPS 上卻仍舊把重編譯與瀏覽器工具負載堆在同一臺機器裡,爭用會放大成「隨機不健康」;把控制面與重負載拆到不同裸金屬例項,往往比反覆調 JVM 式引數更有效。需要並行與租期組合時,可對照同日釋出的《Mac mini M4 買還是租 TCO》一文把預算與里程碑綁在一起評審。
Nginx 或 Caddy 反代 OpenClaw Gateway 時 WebSocket Upgrade 透傳骨架
下面骨架刻意只保留與 WebSocket 相關的關鍵指令:核心是 proxy_http_version 1.1、Upgrade 與 Connection 頭。TLS 終止在反代時,上游可用明文迴環;若你改為端到端 TLS,需要把上游協議與證書校驗寫成另一套清單,不要把兩套假設混在同一頁 Runbook 裡。
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 443 ssl;
location / {
proxy_pass http://127.0.0.1:18789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
}
}
提示:若你在反代層做了 IP 限制或地理封鎖,記得把通道提供商的回撥入口一併納入白名單,否則會出現「健康檢查永遠綠、真實訊息永遠進不來」的假陽性。
Caddy 的路線是自動證書與更短的站點檔案,但 WebSocket 透傳原則不變:仍然是 HTTP/1.1 升級語義與正確的 Host 透傳。無論你選哪套反代,都建議把「反代後的最終 URL」寫進團隊文件,避免一半同事訪問舊 IP 一半同事訪問新域名,導致 OAuth 與回撥域名不一致。
六步把「外網未連線」從入口一直收斂到通道層
下面順序刻意把「本機 curl」放在靠後位置:公網問題優先用外網探針驗證,避免被內網視角欺騙。把每一步輸出粘到工單裡,On-call 交接會輕鬆很多。
凍結目標 URL:寫下 Dashboard 最終訪問的域名、埠與是否經反代,避免混測。
從外網探針埠:用獨立網路路徑驗證 443 或 18789 是否可達,與安全組截圖對齊。
核對主機防火牆:列出 ufw 或 firewalld 規則,確認沒有區域性拒絕覆蓋全域性放行。
驗證 WebSocket:用瀏覽器網路面板或 curl 手工升級請求觀察是否 101。
回到 Gateway:執行 openclaw gateway status 與 openclaw doctor,確認繫結與 token 假設未被反代層掩蓋。
驗證通道:執行 openclaw channels status --probe,把提供商側限流與配對狀態一併記錄。
當 01 到 04 都綠而 05 報紅,優先懷疑配置漂移或升級後的預設值變化;當 05 綠而 06 紅,別急著重啟 Gateway,先把通道當作獨立子系統排。
三條可寫進變更評審的口徑與雲上常駐分工
埠與協議一致性:若公網入口使用 443 終止 TLS,則所有書籤、OAuth 回撥與 Webhook URL 必須同步改寫成同一域名空間,否則會在「區域性可用」與「全域性不可用」之間來回抖動。
探測分層:把「埠可達」「HTTP 200」「WebSocket 101」「Gateway RPC ok」「通道 ready」分成五級訊號,禁止用其中一級替代另一級的結論。
控制面與算力面隔離:當同機還要跑重負載 IDE 或並行模擬器時,應評估把 Gateway 遷到獨立裸金屬節點以降低爭用,而不是無限增加 swap。
注意:把 Gateway 直接綁在公網且無鑑權是生產事故高發模式;務必按官方護欄配置 token 或等價控制面認證,並把變更記錄進審計日誌。
把 Gateway 綁在隨時可能合蓋的筆記本上,會把 TLS、回撥域名與令牌重新整理綁進不可審計的個人習慣;把重負載與瀏覽器工具鏈綁在同一臺 VPS 上,則會把「網路看起來沒問題」與「程序隨機抖動」混成同一個黑盒。相較之下,MESHLAUNCH 的 Mac Mini 雲端裸金屬租賃提供獨佔 Apple Silicon、可按日周月彈性下單與多地區切換,更適合把 OpenClaw 控制面當成生產元件長期執行。你可以先開啟 租賃價格頁 為控制面與構建面各選一檔,再在 幫助中心 核對 SSH 與網路要求;動機與大脈絡可結合 全天候雲節點方案 與 安裝與 doctor 排錯 兩篇一起評審。
會,典型衝突是埠占用與兩套配置根目錄。建議同一主機只保留一套控制面,或在文件裡明確埠隔離與資料目錄隔離。下單入口見 租賃價格頁。
先對照官方遷移說明把本地與守護程序配置對齊,再重啟服務;更完整的命令鏈見 安裝與 doctor 排錯。
請檢索 幫助中心 的網路與 SSH 說明,把埠與安全組核對寫進同一頁 Runbook。