疑難排解
依症狀執行的 runbook
需要一條從 -t、socket、journal、DNS、REALITY、Controller、Aster state 到 UDP 的實際排查順序,請使用故障排查手冊。
找不到設定或讀到錯誤檔案
先顯式指定:
aster-core -d /absolute/home -f /absolute/config.yaml -t相對 -f 以目前工作目錄解析,不是以 -d 解析。檢查:
pwd
ls -l /absolute/config.yaml若未指定 -f,才會讀 <home>/config.yaml。
path is not subpath of home directory or SAFE_PATHS
設定引用的 certificate、provider 或 store 位於 home 外。
首選:
- 把檔案移到 home directory。
- 或將可信根目錄加入
SAFE_PATHS。
不要為了解決單一 path 就長期設定:
SKIP_SAFE_PATH_CHECK=trueAster Admin 回傳 404
可能原因:
- 沒有
asterblock。 - Controller 是明文 TCP 且綁定非 loopback。
- Route/host 指到錯誤 Controller。
- Managed listener 初始化失敗。
先確認:
external-controller: 127.0.0.1:9090
aster:
secret: "at-least-32-bytes..."再從同一 host:
curl -v \
-H "Authorization: Bearer $ASTER_TOKEN" \
http://127.0.0.1:9090/api/admin/statusAster Admin 回傳 401
- 使用了 Controller secret,而不是 Aster secret。
Bearer大小寫或空格錯誤。- Secret 有複製換行。
正確格式:
Authorization: Bearer actual-aster-secretAster Admin 回傳 403
Same-origin 失敗。檢查:
- Browser
Origin是否等於 request scheme/host。 - Reverse proxy 是否正確覆寫
Host。 X-Forwarded-Proto是否為https。- Request 是否帶
Sec-Fetch-Site: cross-site。
面板建議透過同 origin backend/BFF,不要讓 browser 直接跨站呼叫。
Mutation 回傳 409
Revision 已過期:
- 重新 GET
/api/admin/inbounds。 - 重新 GET user。
- 比較另一個管理者的變更。
- 使用新 revision 重新提交。
不要只把 revision 加一後重試。
Subscription 回傳 404
檢查:
public-base-url是否設定。- User 是否 enabled。
- Token 是否已 rotate。
- Listener 是否仍在
managed-listeners。 - Listener 是否有可判定的 port。
- VLESS/AnyTLS security 是否可輸出。
- 是否用了 ShadowTLS、ResTLS、JLS 或 advanced XHTTP。
Store 無法載入
常見原因:
- Parent directory 權限過寬。
- State file 不是
0600。 - Owner 錯誤。
- 檔案是 symlink。
- JSON 損壞。
- Primary 與 backup 都無效。
- State version 不支援。
不要立刻刪除兩份 state。先離線備份:
cp -a aster-state.json aster-state.json.forensics
cp -a aster-state.json.bak aster-state.json.bak.forensics再檢查 log 判斷哪份有效。State 內有 credentials,forensics 檔同樣要保護。
Docker publish port 無法連線
Bridge mode 需要:
allow-lan: true
bind-address: "*"並確認:
docker port aster-core
docker logs aster-coreHost network 與 Docker Desktop 行為不同;不要假設 --network host 跨平台一致。
TUN 無法建立
檢查:
- Binary 是否帶
with_gvisor。 /dev/net/tun是否存在。- Container 是否傳入 device。
- 是否有
CAP_NET_ADMIN。 - TUN name 是否衝突。
- Auto-route table/rule 是否衝突。
- 另一個 VPN 是否已接管 route。
aster-core -v
ip tuntap
ip rule
ip route show table allIptables 與 TUN 衝突
自動 iptables management 與 TUN 不能同時啟用。決定由誰負責透明攔截:
- TUN auto-route/auto-redirect,或
- External iptables/TProxy/Redir。
不要同時讓兩者修改相同流量。
Proxy group relay 無法解析
relay 已移除。把 chain 移到 outbound:
proxies:
- name: hop-2
type: vless
dialer-proxy: hop-1SIGHUP 沒讀到新內容
若啟動方式是:
aster-core --config '<base64>'
aster-core -f -SIGHUP 只會重新套用原始 bytes。要從磁碟重讀,使用正常 file mode。
Provider 或 geodata 下載失敗
檢查:
- System time。
- CA bundle。
- DNS。
- Proxy chain 是否 circular。
- Safe path。
- URL/ETag。
- 執行環境是否可連 GitHub/API。
離線環境應預先放入 provider/geodata,不要依賴首次啟動下載。
Windows named pipe
Pipe 必須以:
\\.\pipe\開頭。自訂 ACL 使用 LISTEN_NAMEDPIPE_SDDL 前,先理解 SDDL;過寬 ACL 會讓 Controller 暴露給其他 local users。
還是無法定位
收集:
aster-core -v- 作業系統與架構
- 已去除 secrets 的最小 config
-t完整輸出- Runtime log
- 問題是否只在 TCP、UDP、DNS、IPv4、IPv6 或特定 listener
不要公開:
- UUID/password
- Private keys
- Aster/Controller secrets
- Subscription URLs/tokens
- 完整 state file
