返回更新列表
新发布Aug 6, 2026

easywall v2.4.1

Linux 上 nftables 防火墙的 Web 界面,使用 Go 编写。除非您确认,否则应用更改会在 120 秒后自动撤销——您不会将自己锁在外面。支持 Debian 与 Docker 安装。

分享

easywall

你的防火墙。你的规则。没有意外。

Tests Build Security Coverage

Latest release Go version GPL-3.0 Discord Support on Ko-fi

在线演示 · 文档 · 更新日志

通过一个不会将你锁在门外的 Web 界面管理 nftables:每次应用都会自行恢复,除非你确认它。

easywall 仪表盘:显示防火墙状态及接受状态、待定更改和上次应用;统计 TCP 端口、UDP 端口、黑名单、白名单、自定义规则和端口转发的磁贴;以及最近活动列表。

设计思路

编辑规则不会改变任何东西。应用规则则改变一切——持续 120 秒。如果新规则切断了你的连接,你将无法点击确认,而确认正是让旧规则恢复的原因。

状态机:编辑进入已暂存(Staged),应用进入已生效(Live),在窗口内确认则进入已确认(Confirmed),而让窗口到期则进入已回滚(Rolled back),从该状态仍可获取暂存的编辑。

架构

两个进程。暴露在网络上的那个进程不持有值得窃取的权限。

浏览器通过 HTTPS 与 easywall-web 通信,后者以非特权身份运行;easywall-web 通过 Unix 套接字与 easywall-core 通信,交换类型化 JSON;easywall-core 以 root 身份运行,并通过 netlink 与 nftables 表 inet easywall 通信。

这是对原始 easywall 的完全重写——基于 Python、Flask、通过 subprocess 调用 iptables——该原项目在 2022 年因一个 CVE 而归档。两个根本原因都已消除:特权位于不同的进程中,应用路径构建 Go 结构体而不是命令行。工作原理 →

安装

决策树:只是想看看,则进入演示模式;使用 Debian 或 Ubuntu,则使用 .deb 包;已经在运行容器,则使用 Docker;否则从源码构建。
# 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.26+, 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.26,单一二进制go-chi/chi · html/template
通过 google/nftables 使用 nftables直接使用 netlink,无 nft 子进程
Argon2idgolang.org/x/crypto,每个密码 16 字节盐
CSRFnet/http.CrossOriginProtection,Go 1.25 原生支持
设计系统DESIGN.md + Tailwind v4 — 无第三方 UI 库
字体Inter + JetBrains Mono,自托管,约 145 KB — 可在离线环境使用
CIgovulncheckgosec、CodeQL、-race,以及针对真实内核的集成测试套件

路线图

正确性优先:一个默默少做了事的防火墙,比一个做得少但会说明的防火墙更糟。

2.6断言实际效果而非规则数量的集成测试
2.7身份体系 — 在套接字协议中引入用户,然后是登录事件,再是多账户,最后是 2FA
2.8带令牌认证的 REST API,ACME 作为可选项,可选择加入受信任的反向代理
2.9可选择的安装数量统计

为什么每项功能会按此顺序推出,以及该统计会发送什么内容:路线图 →

获取帮助

有疑问,或某些行为不符合预期Discord
遇到 bug,或想要某个功能GitHub issues
安全漏洞安全公告不是通过 Discord,也不是公开 issue

贡献

环境搭建、提交约定和审查清单:CONTRIBUTING.md。任何视觉相关的内容都先经过 DESIGN.md

安全问题:不要以公开 issue 提交 — 请使用 GitHub Security Advisories

许可证

GPL-3.0 — 参见 LICENSE

分类