高效能 L3/L4 邊緣防火牆(XDP/eBPF data plane + Go control plane)。 目標是用最小控制面、最早封包切入點,提供可熱重載、可觀測、可維運的 edge 防護。
kekkai 有兩個 binary:
kekkai-agent:daemon(systemd 管理)kekkai:operator CLI + TUI
完整操作手冊(指令、systemd、排錯)請看:COMMAND_ZH.md
- 已完成:strict policy、CLI/TUI、doctor、installer/update、雙檔 config 隔離
- 已完成:hybrid stateful conntrack(ingress flowtrack + egress state seed)
- 進行中路線:NATS/黑名單同步、進階限速與運維指令補齊
一鍵安裝(直接執行 GitHub raw 腳本):
curl -fsSL https://raw.githubusercontent.com/ExpTechTW/kekkai/main/kekkai.sh \
| bash -s -- install若要固定更新通道(例如 pre-release):
curl -fsSL https://raw.githubusercontent.com/ExpTechTW/kekkai/main/kekkai.sh \
| KEKKAI_UPDATE_CHANNEL=pre-release bash -s -- install完整刪除:
curl -fsSL https://raw.githubusercontent.com/ExpTechTW/kekkai/main/scripts/delete.sh \
| sudo bash -s -- --yes --purge-homekekkai 已改成純 release 分發:沒有原始碼建置模式,目標機不需要 Go / clang / git。所有安裝/升級都走 GitHub Releases 的預編 binary,由 kekkai.sh 一鍵腳本處理。
安裝後建議流程:
sudo nano /etc/kekkai/kekkai.yaml
sudo kekkai check
sudo kekkai reload
sudo kekkai status權限速記:
- 所有
kekkai指令一律用sudo kekkai <command> - Debian / Ubuntu / Pi OS 預設
kernel.unprivileged_bpf_disabled=2,非 root 打bpf()會被 kernel 直接擋掉,無法用setcap繞過 - 安裝器會寫一份
/etc/sudoers.d/kekkai-cli-<user>NOPASSWD drop-in,所以sudo kekkai ...不會要密碼 - 不再加 shell alias — 請直接敲
sudo kekkai,跨主機 muscle memory 才一致 - 若不小心打成
kekkai(非 root),CLI 會提示改用sudo kekkai
注意:預設
filter.ingress_allowlist會先放192.168.0.0/16避免初次啟動被 SSH 防呆擋住;請務必改成你的實際管理網段。
所有指令細節(
status/check/ports/show/backup/reload/bypass/update/reset/doctor)已移到COMMAND_ZH.md。
kekkai update來源可由update.channel設為release(預設)或pre-release。
GitHub Releases 會提供各平台檔案(kekkai-* 與 kekkai-agent-*):
linux-amd64linux-arm64darwin-amd64darwin-arm64
版本字串規則:
- git 模式(本地/repo build):
YYYY.MM.DD+<shortSHA> - release / pre-release CI build:
YYYY.MM.DD+build.<N>
目前預設是 strict model,封包判斷順序:
- ARP(可配置)放行;其他非 IPv4 丟棄
- IPv4 後續分片放行(無 L4 header 可檢查)
- conntrack hit 直接放行(stateful fast path)
- 回程 fallback 放行(TCP ACK/RST/FIN、UDP ephemeral、ICMP 可配置)
- static blocklist 命中丟棄
- dynamic blocklist 命中丟棄
filter.public.*放行filter.private.*只有ingress_allowlist可放行- 其餘 default deny
- User config:
/etc/kekkai/kekkai.yaml - Agent managed(last-known-good):
/etc/kekkai/kekkai.agent.yaml
啟動時優先讀 managed 檔,managed 失效才回退 user config。 reload 成功後,agent 會更新 managed 檔,避免 user config 損毀導致重開機直接起不來。
- XDP 在 ingress 熱路徑做 L3/L4 決策(低延遲、低 CPU)
- Hybrid stateful:flowtrack fast path + egress state seed
- LPM blocklist/allowlist + port policy(public/private)
- 熱重載(SIGHUP)、emergency bypass(
kekkai bypass on|off [--save]) - 觀測:全域/協定/drop-pass reason/per-IP topN
- TUI:Overview / Detail / Top-N / Charts
- 配置:嚴格 schema 驗證、SSH lockout 防護、自動備份、update channel
cmd/
kekkai-agent/ daemon entry
kekkai/ CLI + TUI entry
bpf/
xdp_filter.c XDP data plane
internal/
config/ schema/defaults/validation/migration/backup
loader/ eBPF 載入與 attach
maps/ map wrappers
stats/ stats reader
tui/ Bubble Tea 視圖
doctor/ 健康檢查
deploy/systemd/
kekkai-agent.service
- Linux kernel 5.15+
- clang/llvm 14+
- Go 1.22+
libbpf-dev
BTF 非必要(目前不依賴 CO-RE)。
- NAT
- L7 WAF 規則
- TLS 指紋
- ML 異常偵測
待定。