UnrealIRCd 介绍与选型指南
目标:系统介绍 UnrealIRCd 作为老牌开源 IRC 服务器的定位、架构、功能特性与适用场景,并与 InspIRCd、ngIRCd、Ergo 等同类产品做量化选型对比。本文为信息溯源型(基于官网/GitHub/IRCStats 公开数据,查询日期 2026-10-27),无需本地实测即可阅读。
UnrealIRCd 是一款老牌、功能丰富、模块化的开源 IRC(Internet Relay Chat)服务器守护进程。项目始于 1999 年,至今已持续活跃开发超过 27 年,被广泛部署于全球数千个 IRC 网络,是当前市场份额最大的 IRCd。
- 目标用户:需要自建 IRC 网络的社区管理员、团队内部即时沟通系统运维者、安全研究者;
- 设计哲学:模块化("大多数功能都在模块里")、高度可配置、默认启用安全特性(反洪水、反垃圾、TLS 加密);
- 差异化:相比轻量级 ngIRCd,它功能更重;相比 C++ 写的 InspIRCd,它模块系统更成熟、IRCv3 覆盖更全;相比 Ergo(原 Ergonomics IRC)的单二进制 Go 实现,它支持跨服务器链接(TS6 协议)。
| 版本线 | 核心特征 |
|---|
| 3.2 / 4.x | 经典版本,IRCv2 + 部分 IRCv3;生产环境仍有存量 |
| 5.x | 过渡版本,引入更多 IRCv3 扩展 |
| 6.x(当前主线) | IRCv3 原生支持(multiline、reply tag 等)、mod_webirc 管理面板、JSON-RPC 外部 API、JSON 结构化日志、可选持久化频道历史 |
UnrealIRCd 的架构以**模块(Module)**为核心。官方宣称 150+ 模块,绝大多数用户模式(usermode)、频道模式(channel mode)、扩展禁令(extended ban)、Oper 命令、服务链接、黑名单检查等都以 .so 动态库形式加载。
1. 读取 unrealircd.conf → 解析模块加载指令
2. 加载 modules.default.conf → 约 150 个官方模块全部加载(默认)
3. 初始化监听端口(listen {} 块)
4. 初始化反洪水/反垃圾过滤器
5. 初始化 GeoIP / ASN 查询
6. 注册 oper 管理员、vhost、blacklist、dnsbl
7. 开始接受客户端连接
- 单进程守护:
unrealircd start 以 Daemon 模式后台运行;
- 模块热重载:
unrealircd rehash 不重启即可热加载配置文件和模块;
- TLS 证书热替换:
unrealircd reloadtls 无需重启即替换证书;
- 系统资源:默认配置下,空闲内存约 15-25 MB(50 在线用户时约 30-50 MB),单进程监听 UDP/TCP 多端口。
💡 技术拓展:IRCv3 是 IRC 协议的现代扩展标准(ircv3.net),由 IRC 各网络合作推出。核心扩展包括 SASL 认证(3.1)、CAP 能力协商(3.1)、multiline 多行消息(3.2)、account-tag 账号标签(3.2)、reply 标签、away-notify 离开通知等。UnrealIRCd 6.x 截至 2023 年已支持所有已发布的 IRCv3 标准,是 IRCv3 支持最完整的 IRCd 之一;InspIRCd 4.x 支持约 70%,ngIRCd 仅支持少数基础扩展,Ergo 单二进制原生支持 IRCv3。
| 特性 | 说明 |
|---|
| 反洪水/反垃圾 | 多层 anti-flood、anti-spam 机制,支持 per-channel profile(normal/relaxed/off) |
| Spamfilter | 正则 + 关键字匹配垃圾消息,可配置自动 K-line/G-line |
| DNS 黑名单(DNSBL) | 支持 DroneBL、EFnetRBL 等主流 DNSBL,自动封禁代理/僵尸网络 IP |
| GeoIP + ASN | 默认启用,支持按国家/ASN 封禁或强制认证 |
| 连接节流(connthrottle) | 基于 IP reputation 的慢速连接节流 |
| 传输加密 | 默认 TLS(OpenSSL + libsodium),支持 Let's Encrypt、证书指纹认证 |
| operserv 权限分级 | operclass 细粒度权限控制(netadmin、services-admin、netmoderator 等) |
- multiline 多行消息:6.2.x 默认启用(无需客户端分段长消息);
- SASL 认证:SASL 3.1/3.2 + 证书指纹认证(certfp);
- reply 标签 / account-tag / away-notify / chghost / invite-notify / ... 全部已支持;
- CAP 协商:3.2 及以上 CAP 版本支持。
| 能力 | 实现 |
|---|
| Web 管理面板 | mod_webirc 模块(6.2 起内置,需手动加载) |
| JSON-RPC 外部 API | 外部程序(Python/Go 脚本)通过 JSON-RPC 调用 UnrealIRCd 操作 |
| JSON 结构化日志 | 可切换 JSON 格式日志,便于机器解析(日志采集栈友好) |
| systemd 托管 | 源码包内置 extras/startup/unrealircd.service 模板 |
| 自动升级 | ./unrealircd upgrade 一键升级 + 热补丁(部分安全修复无需重启) |
- 支持 TS6 协议链接多服务器,组成分布式 IRC 网络;
- 出站链接(outgoing)和入站链接(incoming)独立配置;
- 服务器间链接强制 TLS + 服务器专用端口(默认 6900)。
本节给出从零到一的最简步骤概览,详细命令与回显见《Ubuntu 22.04 安装 UnrealIRCd 6.2.7 指南》。
sudo apt install build-essential pkg-config libssl-dev libpcre2-dev
wget --trust-server-names https://www.unrealircd.org/downloads/unrealircd-latest.tar.gz
tar xzf unrealircd-6.2.7.tar.gz && cd unrealircd-6.2.7
./Config && make && make install
cd ~/unrealircd && openssl req -x509 -newkey rsa:2048 \
-keyout conf/tls/server.key.pem -out conf/tls/server.cert.pem \
-days 3650 -nodes -subj "/CN=irc.example.org"
./unrealircd configtest && ./unrealircd start && ./unrealircd status
| 场景 | 说明 |
|---|
| 自建 IRC 社区 | 完整的用户管理、频道管理、安全防御,适合中小型到大型社区 |
| 团队内部沟通系统 | 自托管、数据自主、轻量(对比 Slack/Teams),支持 ZNC BNC 会话续接 |
| IRC 网络联盟 | 跨服务器链接(TS6)、oper 权限分级、跨服务器治理 |
| IRC 安全研究 | 丰富的反垃圾/反洪水/黑名单机制,是研究 IRC 安全攻防的优秀靶场 |
| Web 集成 | mod_webirc 让 Kiwi IRC 等 Web 客户端能接入,JSON-RPC 方便与后端系统集成 |
| 场景 | 说明 |
|---|
| 超小型单机团队(< 5 人) | IRC 概念(服务器/网络/oper/channel)对纯内部 IM 过重,直接用 Mattermost/Matrix 更合适 |
| 需要端到端加密(E2EE) | IRC 协议本身不支持 E2EE,虽然有 OMEMO/IRCCloud 等外挂但不成熟 |
| 重富媒体场景 | IRC 是文本协议,文件分享靠 DCC(原始/不安全),无内置图片/视频嵌入 |
| 云原生容器化高频部署 | 源码编译 + 完整配置体系更适合稳定服务器,容器化可做但非官方主推 |
💡 技术拓展:主流开源 IRCd 横向对比。选择时核心考量——是否需要 IRCv3、是否需要跨服务器网络、是否需要 Web 面板、单二进制 vs 模块化、内存占用、语言栈(决定二次开发成本)。
| 维度 | UnrealIRCd 6.x | InspIRCd 4.x | ngIRCd | Ergo (原 Ergonomics IRC) |
|---|
| 语言 | C | C++ | C | Go |
| 官方定位 | 功能最完整 IRCd | 高性能 C++ IRCd | 极简小内存 IRCd | 现代化单二进制 |
| 市场份额 | ~38%(第一) | 第二梯队 | 小众 | 新兴 |
| 模块系统 | 150+ 官方模块,完全模块化 | 40+ 模块,C++ 插件 | 极少,内建为主 | 无,单二进制 |
| IRCv3 覆盖 | ✅ 全部已发布标准 | ⚠️ 约 70% | ❌ 极少 | ✅ 原生支持 |
| 跨服务器链接 | ✅ TS6 | ✅ TS6 | ✅ TS6 | ❌ 单节点 |
| Web 管理面板 | ✅ mod_webirc | ❌ | ❌ | ❌ |
| 安全/反垃圾 | ✅ 多层完整方案 | ⚠️ 基础 | ❌ 几乎没有 | ⚠️ 基础 |
| JSON-RPC API | ✅ | ❌ | ❌ | ❌ |
| 安装方式 | 源码编译为主 | 源码编译/包管理器 | 包管理器 | 预编译单二进制 |
| 内存占用(空闲/50 用户) | ~20 / ~40 MB | ~6 / ~15 MB | ~2-5 MB | ~15 / ~20 MB |
| Docker 官方镜像 | ❌ 无(社区镜像 bbriggs/unrealircd 拉取 106k+) | ❌ 无 | ❌ 无 | ⚠️ 社区镜像 |
| 许可协议 | GPLv2 | GPLv2 | GPLv2 | MIT |
| 开发活跃度 | ⭐⭐⭐⭐⭐(2026 持续迭代) | ⭐⭐⭐⭐ | ⭐⭐(低活跃) | ⭐⭐⭐⭐ |
| 文档质量 | ⭐⭐⭐⭐⭐(非常完整的 docwiki) | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ |
| 如果… | 那么… |
|---|
| 要功能最全 + 最强安全 + 完整 IRCv3 | 选 UnrealIRCd |
| 追求高性能 C++ 插件生态 + 社区活跃 | 选 InspIRCd |
| 要最小内存(嵌入式/RPi 场景) | 选 ngIRCd |
| 要最现代化单二进制 + Go 栈二次开发 | 选 Ergo |
| 不确定需求、第一次搭 | 直接 UnrealIRCd(社区最大、文档最全、踩坑资料最多) |
基于 UnrealIRCd 官方文档、IRCStats 公开数据撰写,版本号与功能点以官网为准。查询日期 2026-10-27。