Dashboard Overview
Recent Audit Events
Client Management
Connected Clients
| Client ID | Hostname | OS / Arch | Version | Remote | Connected | Status | Proxies | Forward | Actions |
|---|---|---|---|---|---|---|---|---|---|
| pending approved rejected | ⇅ — 🔑 |
|
Proxy Config:
| Name | Type | Local IP | Local Port | Encrypt | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| No proxies configured. Click "+ Add Proxy" to add one. | ||||||||||
Egress 白名單(forward 出站目標)
空=允許全部;每行一個 host,支援 *.suffixPSK(加密通道預共用金鑰)
🔑 PSK 已設定 未設定本地轉發 (local_forward) / 重連退避
Port Pool Management
Reserve Port
Port Assignments
| Port | Status | Client | Proxy | Encrypt | Actions |
|---|---|---|---|---|---|
| reserved reserved (idle) allocated 已暫停 | — |
|
|||
| No ports allocated | |||||
Connection Monitor
加密流量 / 偽裝(chaff)
即時彙總目前加密連線的真實 vs 假資料流量Active Connections ()
| ID | Client | Proxy | Source | Dest | Type | Enc | Chaff | In | Out | Since |
|---|---|---|---|---|---|---|---|---|---|---|
Traffic Monitor
全站總覽 所有 client 合計(不受下方選取影響)
歷史流量
各 Client 流量排行 點一列即可篩選上方圖表
| 累計(全部) | 今日 24h | 即時 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Client | 狀態 | In | Out | 合計 | 連線 | In | Out | In | Out | 連線 |
| online offline | ||||||||||
| 尚無流量資料 | ||||||||||
各 Proxy 明細 (累計 / 今日24h / 即時)
| 累計(全部) | 今日 24h | 即時 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Client | Proxy | In | Out | 合計 | 連線 | In | Out | In | Out | 連線 |
| 尚無 Proxy 流量資料 | ||||||||||
Audit Log
Recent Events
Connection Gate
審核連線請求、管理核准窗口。
🔒 等待審核
| Client | 來源 IP | 區域 | 代理 | 目的 | 等待 | 操作 |
|---|---|---|---|---|---|---|
✅ 核准窗口
| 來源 IP | 區域 | 代理 | 到期時間 | 剩餘 | 操作 |
|---|---|---|---|---|---|
📋 歷史紀錄
| 時間 | 事件 | Client | 代理 | 來源 IP | 區域 | 目的 | 備註 |
|---|---|---|---|---|---|---|---|
Settings
Admin Users
| Username | Source | Actions |
|---|---|---|
| config dynamic | defined in config | |
| No admin users configured | ||
Blacklist
Add IP
Blocked IPs
| IP | Added At | Added By | Reason | |
|---|---|---|---|---|
| No blocked IPs. | ||||
Trusted IPs
Add Trusted IP / CIDR
Trusted
| IP / CIDR | Added At | Added By | Reason | |
|---|---|---|---|---|
| No trusted IPs. | ||||
Client 產生 · 更新
產生新安裝包給新機器,或編譯 OTA binary 更新現有 client。兩者都從下方原始碼編譯。
原始碼 (Builder Source)
① 產生 Client 安裝包(給新機器)
compile a ready-to-run tunnel-clientserver.toml 內把 [builder] enabled = true 後重啟 tunnel-server。
進階:server 覆寫(留空=沿用伺服器設定)
- 把執行檔複製到內網目標機器並執行(Windows 直接執行
tt-cli.exe;Linux / mac 先chmod +x)。 - 回到 Clients 分頁,該機器會以 pending 出現 → 按 Approve 核准。
- 要開 RDP:替它新增一條 proxy
type=tcp · 127.0.0.1 · 3389,server 會自動配一個外部 port,即可從外面 RDP 連入。
最近產生的檔案
| 檔名 | 大小 | 時間 | |
|---|---|---|---|
在目標機器以背景服務執行(免安裝、開機自啟)
不經安裝程式、不進安裝紀錄
解壓後會得到一個資料夾,內含 tt-cli(Windows 是 tt-cli.exe)、client.toml、certs/。
把整個資料夾放到穩定位置(下面用 <DIR> 代表),背景服務務必以 <DIR> 為工作目錄 ——
client.toml 內的憑證是相對路徑(certs/…),工作目錄不對就會連不上。以下皆為免安裝方式(丟檔 + 用系統內建機制註冊背景執行),移除時刪掉對應項目即可、不留安裝紀錄。
用 LaunchDaemon(root、開機自啟)。以 <DIR> = /usr/local/ttc 為例,先把資料夾放到那裡。
1. 建立 plist(一次貼上即建立;若你的 <DIR> 不同請改路徑):
sudo tee /Library/LaunchDaemons/com.local.tt-cli.plist >/dev/null <<'PLIST' <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"><dict> <key>Label</key><string>com.local.tt-cli</string> <key>ProgramArguments</key> <array><string>/usr/local/ttc/tt-cli</string><string>-c</string><string>client.toml</string></array> <key>WorkingDirectory</key><string>/usr/local/ttc</string> <key>RunAtLoad</key><true/> <key>KeepAlive</key><true/> <key>StandardOutPath</key><string>/var/log/tt-cli.out.log</string> <key>StandardErrorPath</key><string>/var/log/tt-cli.err.log</string> </dict></plist> PLIST
2. 設權限並載入(權限必須 root:wheel 644,否則 launchd 會忽略):
sudo chown root:wheel /Library/LaunchDaemons/com.local.tt-cli.plist sudo chmod 644 /Library/LaunchDaemons/com.local.tt-cli.plist sudo launchctl load -w /Library/LaunchDaemons/com.local.tt-cli.plist
3. 驗證 / 停止 / 重啟 / 看 log:
sudo launchctl list | grep tt-cli # 左欄是數字 PID = 有跑;是 - 就是沒起來 sudo launchctl unload /Library/LaunchDaemons/com.local.tt-cli.plist # 停(才停得下,不會被 KeepAlive 拉回) sudo launchctl kickstart -k system/com.local.tt-cli # 重踢一次 tail -n 50 /var/log/tt-cli.err.log # 看錯誤
不想動系統目錄 / 不想用 root:改放 ~/Library/LaunchAgents/,launchctl load 免 sudo,但只在該使用者登入後才跑。移除:launchctl unload …plist 後刪掉 plist 即可。
用 systemd(開機自啟、自動重啟)。以 <DIR> = /opt/ttc 為例。
1. 建立 unit:
sudo tee /etc/systemd/system/tt-cli.service >/dev/null <<'UNIT' [Unit] Description=tt-cli tunnel client After=network-online.target Wants=network-online.target [Service] Type=simple WorkingDirectory=/opt/ttc ExecStart=/opt/ttc/tt-cli -c client.toml Restart=always RestartSec=5 [Install] WantedBy=multi-user.target UNIT
2. 啟用 / 驗證 / 停止:
sudo systemctl daemon-reload sudo systemctl enable --now tt-cli # 開機自啟 + 立刻啟動 sudo systemctl status tt-cli # active (running) = OK journalctl -u tt-cli -f # 看 log sudo systemctl stop tt-cli # 停 sudo systemctl disable tt-cli # 取消開機自啟(移除:再刪 unit 檔 + daemon-reload)
沒有 systemd / 想最輕量(不留 unit,但無自動重啟監控):crontab -e 加一行 @reboot cd /opt/ttc && nohup ./tt-cli -c client.toml >>/opt/ttc/tt.log 2>&1 &
用工作排程器(schtasks),不是 Windows 服務、也不是安裝程式。以 <DIR> = C:\ttc 為例。
1. 在 C:\ttc 建一個 run-ttc.bat(確保工作目錄正確;包裡的 run.bat 不會 cd):
@echo off cd /d "%~dp0" tt-cli.exe -c client.toml
2. 以系統管理員開 PowerShell / cmd,建開機執行的排程工作(SYSTEM 帳戶、開機即跑、免登入、無視窗):
schtasks /create /tn "tt-cli" /sc onstart /ru SYSTEM /rl HIGHEST /tr "C:\ttc\run-ttc.bat" /f schtasks /run /tn "tt-cli"
3. 驗證 / 停止 / 移除:
:: 確認有沒有在跑(有 tt-cli.exe = 有跑) tasklist | findstr tt-cli :: 詳細狀態 schtasks /query /tn "tt-cli" /v :: 停這次 schtasks /end /tn "tt-cli" :: 移除排程(不留痕) schtasks /delete /tn "tt-cli" /f
要看輸出 log:把 run-ttc.bat 最後一行改成 tt-cli.exe -c client.toml >> C:\ttc\tt.log 2>&1
② OTA 更新現有 client
upload or compile an OTA binary, push to clientsOTA Updates
Upload Binary
Build OTA Binary
| Type | Version | OS | Arch | Size | Uploaded | Actions |
|---|---|---|---|---|---|---|
| Download | ||||||
| No updates uploaded | ||||||
個別 client 產物 (PSK 輪替)
每台 client 專屬、烤有 PSK 的 binary;僅供該 client 使用或清理| Client | Base | OS | Arch | Size | Uploaded | Actions |
|---|---|---|---|---|---|---|
| Download |