你的防火墙。你的规则。没有意外。
通过 Web 界面管理 nftables,且不会把你锁在外面:每次应用都会自动回滚,除非你确认。
编辑规则不会改变任何东西。应用它才会改变一切——持续 120 秒。 如果新规则切断了你的连接,你就无法点击确认,而不确认正是让旧规则恢复的方式。
两个进程。暴露在网络中的那个不持有任何值得窃取的权限。
这是对原始 easywall 的完全重写——原版使用 Python、Flask,通过子进程调用 iptables——在 2022 年因一个 CVE 而被归档。两个根本原因都已消除:
权限存在于不同的进程中,而应用路径构建的是 Go 结构体,而不是命令行。工作原理 →
# Debian / Ubuntu — amd64 and 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
# From source — 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。