No description
  • Rust 87.7%
  • Shell 10.1%
  • Go 2%
  • Dockerfile 0.2%
Find a file
matt 2468f8bbc9
All checks were successful
build-agent / build (push) Successful in 53s
feat(deploy): 安装时生成 ipgate-update,服务器上一条短命令即可升级
- install.sh 写出 /usr/local/bin/ipgate-update:记住本次的 --server / --repo,运行即拉最新
  install.sh 原地升级;参数透传(--force / --version / -y),非 root 自动 sudo。
- 先完整下载到空临时目录再执行,不走 curl | bash:断流不会执行半截脚本,也不会误用同目录杂项当本地二进制。
- 「已是最新、跳过」路径同样生成,老部署重跑一次安装命令即可拿到。
- SERVER 统一去掉结尾斜杠(--server 与 IPGATE_SERVER 都适用)。
- uninstall.sh 一并删除 ipgate-update;agent README 记用法。
2026-10-02 06:31:15 -07:00
.forgejo ci: wrlog(Forgejo)也构建与发版——.forgejo/workflows(runner 标签 go) 2026-10-02 05:58:01 -07:00
.github/workflows feat(ipecho): 返回调用方IP的小服务 + GHCR 镜像构建(amd64) 2026-06-26 23:02:10 -07:00
agent feat(deploy): 安装时生成 ipgate-update,服务器上一条短命令即可升级 2026-10-02 06:31:15 -07:00
docs/adr feat(agent): 端口转发原地编辑(update_forward);bump 0.2.7 2026-10-02 05:38:09 -07:00
ipecho feat(ipecho): 返回调用方IP的小服务 + GHCR 镜像构建(amd64) 2026-06-26 23:02:10 -07:00
proto feat(agent): 端口转发原地编辑(update_forward);bump 0.2.7 2026-10-02 05:38:09 -07:00
.gitignore chore: 公开仓库仅含 agent,忽略 client/ 源码(保留 client/README.md 文档) 2026-06-24 08:09:37 -07:00
Cargo.lock feat(agent): 端口转发原地编辑(update_forward);bump 0.2.7 2026-10-02 05:38:09 -07:00
Cargo.toml ipgate: proto + agent (nftables allowlist over TLS), ADRs, deploy, CI 2026-06-24 01:31:36 -07:00
CONTEXT.md ipgate: proto + agent (nftables allowlist over TLS), ADRs, deploy, CI 2026-06-24 01:31:36 -07:00
README.md ipgate: proto + agent (nftables allowlist over TLS), ADRs, deploy, CI 2026-06-24 01:31:36 -07:00

ipgate

跨平台的 Linux 服务器 IP 放行名单管理工具。

客户端(移动端 / PC / Mac)连接运行在远程 Linux 主机上的 agent,可视化地查看、增删、批量管理基于 nftables 的 IP 放行名单(allowlist)。

组成

目录 角色 技术栈 说明
client/ 客户端 Tauri 2 + Rust + WebView 一套代码出 iOS / Android / Windows / macOS / Linux 包。GUI 管理界面。
agent/ 服务端 Rust 守护进程 跑在远程 Linux 主机上,落地 nftables 规则,对客户端暴露 API。
proto/ 协议 Rust crate(serde) 客户端与 agent 共享的请求/响应类型,单一可信源。
┌─────────────────────────┐         TLS / 鉴权          ┌──────────────────────────┐
│  client (Tauri 2)       │  ───────── API ──────────▶  │  agent (远程 Linux 主机)  │
│  移动端 / PC / Mac      │  ◀──── 规则 / 状态 ───────  │  落地 nftables 规则       │
└─────────────────────────┘                             └──────────────────────────┘
         共享 proto/(serde 类型)            内核 nft set: ipgate_allow

核心概念

  • 放行名单 (Allowlist):被允许访问的 IP / CIDR 集合,落地为 nftables 的一个 named set。
  • 条目 (Entry):名单中的一条,含 IP/CIDR、备注、过期时间(可选)。
  • agent:远程主机上的服务端进程,唯一有权改动 nftables 的组件。
  • 客户端 (Client):跨端 GUI,所有操作通过 agent 完成,自身不直接碰内核。

术语以 CONTEXT.md 为准。架构决策见 docs/adr/。

状态

🚧 脚手架阶段。各组件目录下的 README.md 记录了选型与待办,尚未开始编码。

开发起步(规划)

  1. proto/ 先定协议类型(条目、名单、操作、错误)。
  2. agent/ 实现 nftables 落地 + API,可在一台测试 VPS 上单独跑通。
  3. client/ 用 Tauri 2 起 GUI,先打通桌面端,再补移动端。