ZNC 1.10.3 介绍与选型指南

介绍 ZNC 1.10.3 的定位、核心架构、功能特性与适用场景,并以量化选型对比表横向对比 Quassel、The Lounge、Ergo 等 IRC 常驻方案,给出选型结论。

ZNCZNCIRCUbuntu 22.04即时通信2026/10/30

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++ 服务端,多用户多网络,模块生态最全单机托管多账号/多网络的经典选择
sojuGo 编写,主打 IRCv3 多客户端规范(chathistory)追求 IRCv3 原生多客户端同步
The LoungeNode.js Web 客户端内置 bouncer 化体验想要纯浏览器界面、免装客户端
Quassel IRCQt 的 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。

四、功能特性

以下特性均在本文实测环境验证过操作或实际回显:

  1. 保持在线与离线回放:客户端全部断开后 ZNC 持续挂在线上;重连后自动回放离线期消息(见第三章实测序列)。
  2. 多客户端同时在线:实测两客户端并发接入,上游消息同步广播到两个会话。
  3. 多用户 / 多网络:单实例可承载多个用户,每个用户可挂多个 IRC 网络(AddNetwork/JumpNetwork,切换时客户端用 user/network:pass 登录),适合一台 VPS 托管团队多人账号。
  4. webadmin Web 管理界面:内置全功能 Web UI,浏览器完成用户/网络/频道/模块/全局设置管理。实测登录流程:登录表单 POST /login(字段 submitted=1、user、pass)→ 302 跳转 → 携带会话 Cookie 访问仪表盘可见 Global Settings / Your Settings / Traffic Info / Manage Users 菜单。
  5. 三级模块系统:global/user/network 三级加载与卸载,实测 LoadMod log / UnloadMod log 即时生效并把 LoadModule = log 持久化进 znc.conf;重复加载同模块给出真实报错 Unable to load module log: Module log already loaded.。
  6. IRCv3 能力协商(1.10 系):SASL 3.1/3.2 客户端认证(saslplainauth 默认随新装配置加载,支持 EXTERNAL 的 certauth)、message-tags、chghost、invite-notify;并可用 DisableClientCap/DisableServerCap 按侧禁用能力(ChangeLog 实查)。
  7. SSL/TLS 全链路:监听端可开 SSL(--makepem 生成自签证书,1.10 起自动取主机名作 CN,实测生成的证书 CN=znc.lan,有效期 10 年);到上游 IRC 服务器的连接亦可启用 SSL 并支持证书指纹信任列表。
  8. 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.3Quassel IRC 0.14.0The Lounge 4.5.2Ergo 2.x(bouncer 模式)WeeChat(relay 方案)
定位独立 bouncer 服务端core/client 分离的 IRC 套件Web 化 IRC 客户端(内置常驻)IRC 服务器自带 bouncer客户端自体 + 中继
实现语言C++C++/QtNode.js/JavaScriptGoC
开源许可Apache-2.0GPL-3.0MITMITGPL-3.0
GitHub 星数(实查)2.1k7926.4k3.4k3.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-090.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 指南》。

八、参考链接