ZNC 1.10.3 介绍与选型指南
介绍 ZNC 1.10.3 的定位、核心架构、功能特性与适用场景,并以量化选型对比表横向对比 Quassel、The Lounge、Ergo 等 IRC 常驻方案,给出选型结论。
ZNC 1.10.3 介绍与选型指南
目标:全面介绍 ZNC——C++ 编写的高级 IRC bouncer(保持在线的 IRC 中继/离线消息代理),覆盖其核心架构、模块系统、功能特性与量化选型对比。本文结论均经溯源(官网 znc.in、GitHub Releases、源码 ChangeLog,查询日期 2026-10-30)并在 Ubuntu 22.04 实测环境(ZNC 1.10.3 源码编译 + 内网 ngIRCd 26.1)完成端到端验证。
一、环境信息
本文所有溯源数据与实测结论基于以下环境:
- 操作系统:Ubuntu 22.04.5 LTS(x86_64)
- ZNC 版本:1.10.3(2026-10-30 实查官方最新稳定版,源码编译)与 1.8.2(Ubuntu 22.04 仓库版 1.8.2-2ubuntu0.1)
- 配套 IRC 服务器:ngIRCd 26.1(内网主机名 irc.lan,用于端到端收发与 Buffer 回放实测)
- ZNC 监听端口:8145(SSL)
- 溯源渠道:znc.in 官网、github.com/znc/znc(Releases 与 ChangeLog),星数经 shields.io 实查
二、软件概述
ZNC 是一个「高级 IRC bouncer」:它作为一个常驻进程同时扮演「IRC 服务器(对客户端)」和「IRC 客户端(对上游 IRC 网络)」两个角色,用户的 IRC 客户端连的是 ZNC,ZNC 替用户 7×24 小时挂在 IRC 网络上。用户离线期间的频道消息、私聊、提及都会被 ZNC 按策略缓存(buffer),客户端下次接入时回放,从而把「IRC 天生在线才有历史」的短板补齐。
项目要点(均实查,查询日期 2026-10-30):
| 属性 | 值 |
|---|---|
| 首个公开发布 | 2004 年(十余年持续维护的老牌项目) |
| 实现语言 | C++(构建系统 CMake) |
| 开源许可 | Apache License 2.0(源码 LICENSE 文件实查) |
| 当前稳定版 | 1.10.3(2026-09-13 发布,安全修复版,修复 CVE-2026-82373:卸载模块时的 use-after-free) |
| GitHub 星数 | 2.1k(shields.io 实查) |
| 维护活跃度 | 最近一次提交在查询前一日(shields.io last-commit 实查 "yesterday") |
| 官网 / 文档 | https://znc.in / https://wiki.znc.in |
| 官方仓库 | https://github.com/znc/znc |
版本节奏(ChangeLog.md 实查):1.10.0(2025-06-09,引入 SASL 3.1/3.2、message-tags、chghost、invite-notify 等 IRCv3 能力与 Unix socket 监听支持)→ 1.10.1(2025-07-01)→ 1.10.2(2026-05-07)→ 1.10.3(2026-09-13)。平均半年到一年一个特性版本、数月一个维护版,节奏稳健。
💡 技术拓展:IRC bouncer(常被称为 bnc)不止 ZNC 一家实现。同类主要选项对比——
名称 原理/特点 适用场景 ZNC 独立 C++ 服务端,多用户多网络,模块生态最全 单机托管多账号/多网络的经典选择 soju Go 编写,主打 IRCv3 多客户端规范(chathistory) 追求 IRCv3 原生多客户端同步 The Lounge Node.js Web 客户端内置 bouncer 化体验 想要纯浏览器界面、免装客户端 Quassel IRC Qt 的 core/client 分离架构 桌面端重体验用户 Ergo(bouncer 模式) IRC 服务器自身集成 bouncer 能力 自建 IRC 网络且不想再跑一个组件 本文主角为 ZNC,理由:模块系统与 webadmin 成熟度高、发行版仓库开箱即用(Ubuntu/Debian 均有包)、对任意传统 IRC 客户端零改造兼容。
三、核心架构
ZNC 的角色模型可以概括为「一台替你在线的中间人服务器」,三层结构如下:
IRC 客户端 A(irssi/weechat/HexChat/手机端) 客户端 B(同时在线)
│ PASS user/network:pass │
└──────────────┬──────────────────────────────┘
│ 任意 IRC 客户端协议(可 SSL)
┌────────▼─────────┐
│ ZNC │ 监听端口(如 8145,Web 与 IRC 同端口分流)
│ User → Network │ 一个用户可挂多个 IRC 网络
│ Buffer 回放缓存 │ 按频道/私聊缓存离线消息
│ 模块层 (*.so) │ global / user / network 三级加载
└────────┬─────────┘
│ 出站连接(可 SSL、可 SASL 认证)
┌────────▼─────────┐
│ 上游 IRC 网络 │ libera/OFTC/自建 ircd 等
└──────────────────┘
- 入站侧(对客户端):ZNC 自己就是一个「IRC 服务器」,任何 IRC 客户端无需改造即可接入。登录凭据通过 IRC 标准的
PASS行携带,格式为用户名/网络名:密码(单网络可省略网络名);同一监听端口同时服务 Web 管理界面(webadmin)与 IRC 客户端,按协议自动分流。 - 出站侧(对上游):ZNC 以你的昵称登录上游 IRC 网络,并在所有客户端离线时保持会话(自动响应 PING、可配合 simple_away 模块自动设置离开状态)。
- Buffer 回放:每个频道/私聊有一个环形缓冲(默认行数可配),客户端离线期间的消息进入缓冲;客户端重连后按「Buffer Playback ... Playback Complete.」的形式回放,回放完再无缝衔接实时消息。本文实测回放序列如下(节选自 1.10.3 实测,离线期间他人发送的三条消息在重连后回放):
:***!znc@znc.in PRIVMSG #test :Buffer Playback...
:alice!~alice@client.lan PRIVMSG #test :[17:56:27] replay msg one
:alice!~alice@client.lan PRIVMSG #test :[17:56:28] replay msg two
:***!znc@znc.in PRIVMSG #test :Playback Complete.
:alice!~alice@client.lan PRIVMSG #test :replay msg three
前两条带时间戳的消息即离线期缓冲回放,最后一条「replay msg three」是回放结束后立刻到达的实时消息——两者在客户端视角无缝衔接,这正是 bouncer 的核心价值。
- 多客户端:同一用户可多个客户端同时在线,ZNC 把上游消息广播给所有在线客户端。实测两个客户端同时接入时,同一消息两侧均实时到达:
- 模块系统:ZNC 的功能扩展以动态库模块(.so)为单位,分 global(全局)、user(用户级)、network(网络级)三级加载,官方内置四十余个模块(webadmin、controlpanel、log、simple_away、sasl、nickserv、perform、route_replies 等),1.10 起新装默认即带 corecaps 与 saslplainauth。
四、功能特性
以下特性均在本文实测环境验证过操作或实际回显:
- 保持在线与离线回放:客户端全部断开后 ZNC 持续挂在线上;重连后自动回放离线期消息(见第三章实测序列)。
- 多客户端同时在线:实测两客户端并发接入,上游消息同步广播到两个会话。
- 多用户 / 多网络:单实例可承载多个用户,每个用户可挂多个 IRC 网络(
AddNetwork/JumpNetwork,切换时客户端用user/network:pass登录),适合一台 VPS 托管团队多人账号。 - webadmin Web 管理界面:内置全功能 Web UI,浏览器完成用户/网络/频道/模块/全局设置管理。实测登录流程:登录表单 POST
/login(字段submitted=1、user、pass)→ 302 跳转 → 携带会话 Cookie 访问仪表盘可见 Global Settings / Your Settings / Traffic Info / Manage Users 菜单。 - 三级模块系统:global/user/network 三级加载与卸载,实测
LoadMod log/UnloadMod log即时生效并把LoadModule = log持久化进 znc.conf;重复加载同模块给出真实报错Unable to load module log: Module log already loaded.。 - IRCv3 能力协商(1.10 系):SASL 3.1/3.2 客户端认证(saslplainauth 默认随新装配置加载,支持 EXTERNAL 的 certauth)、message-tags、chghost、invite-notify;并可用
DisableClientCap/DisableServerCap按侧禁用能力(ChangeLog 实查)。 - SSL/TLS 全链路:监听端可开 SSL(
--makepem生成自签证书,1.10 起自动取主机名作 CN,实测生成的证书 CN=znc.lan,有效期 10 年);到上游 IRC 服务器的连接亦可启用 SSL 并支持证书指纹信任列表。 - rich 客户端兼容:irssi、WeeChat、HexChat、mIRC、Textual 等任意传统 IRC 客户端零改造可用;「保持nick」「防回显风暴」(route_replies 模块归并多服务器应答)等细节开箱即用。
五、快速开始(最小可用示例)
以下为 Ubuntu 22.04 上的最短可用路径(仓库包版本 1.8.2;如需 1.10.3 最新版走源码编译,完整流程见部署篇):
sudo apt-get install -y znc # 安装(Ubuntu 22.04 仓库为 1.8.2-2ubuntu0.1)
sudo -u _znc /usr/bin/znc --makeconf --datadir=/var/lib/znc # 交互式生成配置(监听端口选 8145、开启 SSL)
sudo systemctl enable --now znc # systemd 托管启动
makeconf 交互完成后按提示连接即可(1.10.3 实测提示原文):
Try something like this in your IRC client...
/server <znc_server_ip> +8145 admin:<pass>
其中 +8145 的 + 前缀表示用 SSL 连接该端口,密码格式 用户名/网络:密码。验证最直接的方式是接入后收到上游网络的 001 欢迎行,本文实测(经 ZNC 连入内网 ngIRCd):
:irc.lan 001 admin :Welcome to the Internet Relay Network admin!~admin@client.lan
:irc.lan 002 admin :Your host is irc.lan, running version ngircd-26.1 (x86_64/pc/linux-gnu)
浏览器访问 https://<服务器IP>:8145/ 进入 webadmin(自签证书需信任例外)。完整的依赖、编译、systemd 单元与排障过程见安装篇《Ubuntu 22.04 安装 ZNC 1.10.3 指南》;全部配置参数逐项解释见《ZNC 1.10.3 配置参数详解》;命令行与各管理入口详见《ZNC 1.10.3 常用 CLI 命令与工具详解》。
本专栏配套文档:《Ubuntu 22.04 安装 ZNC 1.10.3 指南》、《ZNC 1.10.3 配置参数详解》、《ZNC 1.10.3 常用 CLI 命令与工具详解》。
六、适用场景与限制
典型适用场景:
- 个人/团队在固定 VPS 上托管 IRC 身份:笔记本、手机、公司电脑轮换接入而 IRC 昵称与频道上下文不断线;
- 移动端弱网补救:地铁/电梯断线期间的消息由 buffer 兜底,回连即补齐;
- 多网络聚合:一个 ZNC 用户同时挂 libera、OFTC 与自建 ircd,多客户端用
user/network:pass自由选网络; - 自建 IRC 网络的配套组件:与自建 ircd(如 Ergo、ngIRCd、InspIRCd、UnrealIRCd)组合成完整私有 IRC 体系。
已知限制:
- 单进程单实例:配置与 buffer 存于本地文件(znc.conf + users/ 目录),无原生多节点/高可用形态,不适合超大并发多租户场景;
- buffer 回放是「补历史」而非「全量历史同步」:默认 AutoClearChanBuffer 开启时回放即清空,长期历史需另装 log 模块落盘检索;
- 对 IRCv3 chathistory 等新一代多客户端同步规范的支持以传统 bouncer 模型为主,多客户端消息去重靠客户端配合(如 WeeChat/irssi 的 bouncer 前缀标签),移动端体验不如 Web 化方案直观;
- 上游网络强依赖单点 ZNC 存活:ZNC 宕机期间既不在线也无回放(与所有 bouncer 相同)。
七、同类选型对比
从部署形态、功能与社区维度对同域可自托管方案做量化对比(星数 shields.io 实查,查询日期 2026-10-30;版本为各自官网/仓库当前稳定版):
| 维度 | ZNC 1.10.3 | Quassel IRC 0.14.0 | The Lounge 4.5.2 | Ergo 2.x(bouncer 模式) | WeeChat(relay 方案) |
|---|---|---|---|---|---|
| 定位 | 独立 bouncer 服务端 | core/client 分离的 IRC 套件 | Web 化 IRC 客户端(内置常驻) | IRC 服务器自带 bouncer | 客户端自体 + 中继 |
| 实现语言 | C++ | C++/Qt | Node.js/JavaScript | Go | C |
| 开源许可 | Apache-2.0 | GPL-3.0 | MIT | MIT | GPL-3.0 |
| GitHub 星数(实查) | 2.1k | 792 | 6.4k | 3.4k | 3.4k |
| 多用户托管 | 是(webadmin 管理多用户) | 是(多用户 core) | 弱(单用户为主,多用户需多实例) | 是(Services 集成) | 否(单用户) |
| 多 IRC 网络 | 是 | 是 | 是 | 是(本网络内) | 是 |
| 离线消息回放 | buffer 回放(实测通过) | backlog 回放 | Web 端持久历史 | bouncer 回放 | relay 缓存 |
| 客户端要求 | 任意 IRC 客户端 | 专属 Quassel 客户端 | 仅浏览器 | 任意 IRC 客户端 | 任意 IRC 客户端经 relay |
| Web 管理界面 | webadmin(内置) | 无(Qt 配置) | 本身即 Web UI | 无(文件配置) | 无 |
| Ubuntu 仓库包 | 有(1.8.2/22.04) | 有 | 无(npm 安装) | 有 | 有 |
| 最近版本节奏(实查) | 1.10.3/2026-09 | 0.14.0 维护态 | 4.x 活跃 | 2.x 活跃 | 4.x 活跃 |
选型建议:
- 需要「任意 IRC 客户端 + 多用户托管 + Web 管理」三位一体 → ZNC,这是它相对 soju/Quassel 最大的差异化区间;
- 团队想要浏览器即用、不在乎专属客户端 → The Lounge(Web 优先),需要 bouncer 协议级多客户端同步则评估 soju;
- 已在用 Quassel 桌面客户端生态 → Quassel core 继续沿用即可;
- 自己就运营 IRC 服务器 → 优先考虑 Ergo 这类内置 bouncer 的 ircd,少养一个组件(参见其介绍篇);
- 单设备重度用户 → WeeChat 直接本机运行 + relay 满足远程接入,无需独立 bouncer。
对自建 IRC 服务器感兴趣的读者,可延伸阅读站内已交付的 IRC 系列:《Ergo 2.19 介绍与选型指南》(集成 Services 的现代 ircd)、《ngIRCd 28 介绍与选型指南》(轻量级 ircd)、《Quassel IRC 0.14.0 介绍与选型指南》(core/client 架构竞品)、《The Lounge 4.5.2 介绍与选型指南》(Web 客户端竞品),以及自建 ircd 的安装篇《Ubuntu 22.04 安装 Ergo 2.19 指南》。
八、参考链接
- ZNC 官网:https://znc.in
- 官方 Wiki(配置/模块文档):https://wiki.znc.in
- GitHub 仓库与 Releases:https://github.com/znc/znc
- 1.10.3 变更与 CVE-2026-82373 说明:https://github.com/znc/znc/releases/tag/znc-1.10.3 (发布时间 2026-09-13,查询日期 2026-10-30)
- ChangeLog(1.10.0/1.10.1/1.10.2 日期与特性,查询日期 2026-10-30):https://github.com/znc/znc/blob/master/ChangeLog.md
- 站内延伸:《Ergo 2.19 介绍与选型指南》、《ngIRCd 28 介绍与选型指南》、《Quassel IRC 0.14.0 介绍与选型指南》、《The Lounge 4.5.2 介绍与选型指南》、《Ubuntu 22.04 安装 Ergo 2.19 指南》