
新发布Sep 4, 2026
easywall v2.14.0
Linux 上 nftables 防火墙的 Web 界面,使用 Go 编写。除非您确认,否则应用更改会在 120 秒后自动撤销——您不会将自己锁在外面。支持 Debian 与 Docker 安装。
easywall
你的防火墙。你的规则。没有意外。
通过一个不会将你锁在门外的 Web 界面管理 nftables:每次应用都会自动回滚,除非你确认它。
核心理念
编辑规则不会改变任何东西。应用规则才会改变一切——持续 120 秒。 如果新规则切断了你的连接,你将无法点击“确认”,而不确认正是让旧规则恢复的方式。
架构
两个进程。暴露在网络上的那个进程不持有任何值得窃取的权限。
这是对原始 easywall 的完全重写——原版基于 Python、Flask,通过子进程调用 iptables——该版本在 2022 年因一个 CVE 被归档。两个根本原因都已消除:特权位于不同的进程中,应用路径构建 Go 结构体而非命令行。工作原理 →
安装
# Debian / Ubuntu — amd64 和 arm64
ARCH=$(dpkg --print-architecture)
wget https://github.com/jp1337/easywall/releases/latest/download/easywall_$ARCH.deb
sudo dpkg -i easywall_$ARCH.deb && sudo apt-get install -f
# Docker
git clone https://github.com/jp1337/easywall.git && cd easywall && docker compose up -d
# 从源码构建 — Go 1.27+、nftables
git clone https://github.com/jp1337/easywall.git && cd easywall
make build && sudo make install
sudo systemctl enable --now easywall-core easywall-web
然后打开 https://localhost:12227。首次访问会
设置账户并暂存首批规则。
功能一览
| 端口 | TCP 和 UDP,支持单个或范围,带按规则的 SSH 暴力破解路由 |
| 黑名单与白名单 | IPv4、IPv6 和 CIDR,在任何端口规则之前评估 |
| 防护模块 | 十二个,默认启用五个——洪水、扫描、bogon、分片、广播/组播/任播 |
| 端口转发 | 带协议选择的 NAT 重定向 |
| 自定义规则 | 原始 nftables,应用前进行语法检查 |
| 导出 / 导入 | 整个规则集以 JSON 形式导出 |
| 审计日志 | 记录何时更改了什么,每行一个 JSON 对象 |
| Docker 共存 | 仅拥有 table inet easywall,不触碰其他任何内容 |
| 英语、德语、法语 | 可在界面中切换,包括登录前。语言可能不完整:缺失部分以英语显示,且缺口会被报告而非隐藏 |
| 浅色与深色 | 跟随操作系统,带手动切换;两者均通过对比度检查 |
技术栈
| Go 1.27,单一二进制 | go-chi/chi · html/template |
通过 google/nftables 管理 nftables | 直接 netlink,无 nft 子进程 |
| Argon2id | golang.org/x/crypto,每个密码 16 字节盐 |
| CSRF | net/http.CrossOriginProtection,Go 1.25 原生 |
| 设计系统 | DESIGN.md + Tailwind v4——无第三方 UI 库 |
| 字体 | Inter + JetBrains Mono,自托管,约 145 KB——支持离线环境 |
| CI | govulncheck、gosec、CodeQL、-race,以及针对真实内核的集成测试套件 |
获取帮助
| 有疑问,或行为异常 | Discord |
| 发现 Bug,或想要的功能 | GitHub issues |
| 安全漏洞 | 安全公告 —— 不要通过 Discord,也不要提交公开 issue |
参与贡献
环境搭建、提交规范和审查清单:CONTRIBUTING.md。
任何视觉相关的内容都需先经过 DESIGN.md。
安全问题:不要作为公开 issue 提交——请使用 GitHub Security Advisories。
许可证
GPL-3.0——参见 LICENSE。