For the complete documentation index, see llms.txt. This page is also available as Markdown.

引言

概述

本章介绍 OpenBSD 操作系统。内容涵盖项目起源、指导原则、开发实践、许可证策略与技术重点,让读者在进入安装与配置主题前,先对系统及其目标有基本认识。

历史背景

OpenBSD 始于 1995 年,从 NetBSD 分叉而来。Theo de Raadt 离开 NetBSD 核心团队后创立了该项目。最初动机是建立开放、可供公众讨论与审视的开发环境,并格外注重代码质量与安全。

OpenBSD 自创立起便与众不同:不仅关注正确性与性能,更注重主动的安全措施与宽松的许可证。项目很快在代码审计、按时发布与内置加密功能上建立了声誉。随着时间推移,OpenBSD 引入了许多安全新技术,后来其他操作系统纷纷采用。

OpenBSD 项目总部位于加拿大阿尔伯塔省卡尔加里,但拥有遍及全球的开发者社区,通过 CVS 与邮件列表协作。项目口号“Secure by default”(默认即安全),体现了其使命:交付默认安全、攻击面最小的操作系统。

项目目标与开发模式

OpenBSD 项目遵循一组核心原则,这些原则决定了项目的架构、策略与发布流程。项目强调代码简洁正确,谨慎集成新特性,并坚持开放的开发方式。系统中的任何改动都会从可移植性、正确性、安全影响与可维护性四个方面接受审查。

开发通过中央 CVS 仓库协调。开发者提交补丁,合并前需经审查。项目不提供匿名提交权限。日常快照与半年一次的发行版均来自此仓库。代码改动立即公开,系统的方方面面都可供检视。

与从外部来源拼凑软件包的发行版不同,OpenBSD 提供自洽的基本系统,接口与文档保持一致。用户应查阅手册页了解具体技术行为。手册页与代码同等用心维护。

发布流程

OpenBSD 遵循严格的半年发布周期。新版本在五月与十一月发布。版本以数字命名,例如 7.7 或 7.8,可用于生产环境,视为稳定版本。

每个版本会获得约一年的二进制安全补丁支持。补丁通过 syspatch(8) 分发,仅适用于受支持的架构。对希望紧跟开发进度者,项目还提供每日快照。

发布工程强调稳定性与正确性。尚未就绪的特性会推迟,而非仓促发布。所有受支持的架构在版本定稿前都必须成功构建并启动。

许可证与代码复用

OpenBSD 偏好宽松的软件许可证,例如 ISC 许可证与 BSD 许可证。项目尽量避免引入 GNU 通用公共许可证(GPL)下的代码。这一策略让其他系统与组织可以更自由地复用 OpenBSD 代码,不受法律限制。

基本系统作为一个整体开发,核心组件与第三方组件一视同仁。这样项目就能在整个代码库上保持高度一致,并完成审计。

其他系统广泛采用 OpenBSD 代码。典型例子包括 FreeBSD 采用 pf(4)、几乎所有类 Unix 平台都使用 OpenSSH,以及许多环境集成了 OpenBSD 的 malloc 实现。

支持的架构

OpenBSD 高度重视可移植性,支持大量硬件架构。截至当前版本,官方支持的平台包括 amd64、arm64、macppc、riscv64 等。每个受支持平台在发布前都必须通过完整的系统构建、回归测试与启动验证。

多架构支持确保 OpenBSD 保持可移植、结构清晰,可适应嵌入式系统、桌面与高性能服务器等多种部署环境。架构的增减取决于硬件可获得性、开发者兴趣与构建质量。

安全理念

OpenBSD 把安全视为设计原则,而非被动应对的过程。项目通过代码审计、基于编译器的缓解措施与系统调用限制,主动应对潜在的漏洞类别。

以下若干特性源自 OpenBSD:

  • W^X 内存保护,强制可写内存区不可执行

  • pledge(2)unveil(2),限制进程能力与文件系统访问

  • 内核与用户态集成的加密支持

  • 基于 pf(4) 的默认拒绝网络过滤策略

  • libc 中安全的内存分配例程

安全特性通常默认启用。例如,用户态二进制文件编译时启用栈保护,受支持平台启用 ASLR,默认安装只启用必要服务。

文档与手册页

OpenBSD 文档的首要来源是手册页系统。每个工具、系统调用、配置文件与守护进程都以一致且维护良好的格式记录在案。

手册页按章节分类。例如,rcctl(8) 记录系统管理工具,vm.conf(5) 描述配置文件格式。出现信息冲突时,以手册页为权威参考。

OpenBSD 手册提供更高层次的解释、结构化指引与上下文信息——这些内容并不适合放进参考手册。建议读者在阅读手册页的同时参考本手册,并用源码核对命令与选项。

社区与支持

OpenBSD 维持着规模不大但技术过硬的社区。项目不设官方论坛或面向用户的支持机构。交流主要通过 misc@openbsd.org 等邮件列表进行,实时交流则在 Libera.Chat 的 #openbsd 等 IRC 频道。

提问应具体、做过功课,并附上相关系统输出。社区文化推崇自力更生、完善文档与可复现的缺陷报告。

缺陷跟踪通过邮件列表进行,而非基于网页的跟踪系统。补丁与问题报告应以纯文本提交,开发者可能直接回复,要求补充说明或额外诊断信息。

OpenBSD 鼓励用户审计、理解并贡献代码。所有代码公开可访问,凡符合项目目标的贡献都受欢迎。

使用场景

OpenBSD 是一款通用操作系统,强调正确性、代码清晰与安全。凡是重视透明度、可审计性与可预期行为的场景,OpenBSD 都适用。凭借宽松的许可证与完整的源码获取,OpenBSD 尤其适合长期基础设施、教育、研究与开发环境。

许多机构将 OpenBSD 部署在对安全敏感、面向网络的场景。系统内置高质量 TCP/IP 协议栈、健壮的守护进程实现,并原生支持现代基础设施常见的功能。

典型用例包括:

  • 互联网服务:OpenBSD 常用于提供面向互联网的核心服务,包括:

    • httpd(8)relayd(8) 搭建 Web 服务器

    • smtpd(8) 搭建邮件服务器

    • nsd(8)unbound(8) 提供 DNS 解析器与权威域名服务器

    • 通过 SSH 用 sftpscprsync 安全地传输文件

    • ipsecctl(8)openiked(8) 搭建 VPN 端点

  • 网络基础设施:OpenBSD 可作为可靠、可维护的路由系统的基础:

    • OpenBGPD 进行 BGP 路由

    • 通过 OpenOSPFDOpenRIPD 进行 OSPF 与 RIP 路由

    • carp(4) 搭建高可用集群

    • relayd(8) 做负载均衡与代理

    • pf(4) 做 NAT 网关与包过滤

  • 防火墙与网关:许多人将 OpenBSD 部署为加固的边界系统:

    • 基于 pf(4) 的有状态防火墙

    • NAT 与端口重定向

    • DHCP 与 DNS 中继服务

    • 流量整形与过滤

  • 开发与测试:OpenBSD 常被需要可复现、最小环境的软件开发者选用,提供:

    • 可预期的基本系统,无隐藏依赖

    • 干净的基于 C 的用户态与编译器工具链

    • 安全的默认配置与基于 pledge(2)unveil(2) 的强用户态隔离

  • 研究与教育:OpenBSD 为以下场景提供完全可审计、自洽的系统:

    • 操作系统研究与内核插桩

    • 安全软件设计研究

    • 网络协议实验

    • 系统编程与 C 语言教学

  • 嵌入式与设备系统:凭借极简与行为一致,OpenBSD 常被选作嵌入式系统、定制设备与无头部署的平台。

OpenBSD 虽然支持 X11、音频设备与无线网络,但优势在于简洁、可靠与可验证。基于 OpenBSD 构建的系统更易于推理、测试与长期维护,不会出现依赖漂移或配置歧义。因此 OpenBSD 是工程师、管理员与研究人员的优选——他们要求系统行为与文档完全一致。

最后更新于