+++
title = '初识 OpenBSD'
subtitle = ''
slug = ''
tags = []
categories = '软件杂谈'
date = 2026-11-06T23:37:14+08:00
draft = true
toc = true
+++
我在《[爱拯救之](/article/amour-en-sauve/)》一文中提到,博客现在运行在安装 [OpenBSD](https://www.openbsd.org/) 的操作系统上,而不是 Linux。我本想尝试更多的 BSD 系统,可我把 FreeBSD 的 `.iso` 挂载到 VPS 之后,在 VNC 里捣鼓了半天也没把系统安装好。最后还是换回 OpenBSD,在十分钟内就完成了安装。
FreeBSD 你们要不要反思一下:为什么 OpenBSD 不到 800MB 的 `.iso` 里纯文本的安装界面会比你们的[图形界面](/essays/lost-in-gui)更好用?
不多说了,还是先来关注 OpenBSD 吧。
{{< quotecard >}}Linux people do what they do because they hate Microsoft. We do what we do because we love Unix.{{ quotecard >}}
{{< right "——Theo de Raadt" >}}
## 什么是 OpenBSD?
众所周知,Linux 和 macOS 都是类 Unix 系统,而 Unix 原本是 AT&T(美国通话电话公司)推出的商业操作系统,在 20 世纪 70 年代授权给外部使用,催生了包括加州大学伯克利分校开发的 BSD(Berkeley Software Distribution)在内的多种*基于* Unix 的系统。[^1]
是的,Linux 是 *Unix-like*,而 BSD 是 *Unix-based*。Linux 与 BSD 的另一个重大区别是授权协议,Linux 以 GPL 2.0 协议授权,而 BSD 则使用与 MIT 类似的 BSD 协议。稍后我会谈到,BSD 协议是怎么让来自 BSD 的软件润物细无声般地进入其他操作系统,甚至支撑起全球网络连接的。
NetBSD 的创始人之一 Theo de Raadt 在与开发团队的分歧之后,创建了 OpenBSD——我不太喜欢《大教堂与集市》里说「分支不好」的观点,显然人们早就开始分支开源软件了,分歧是难免的,开发者在自己喜欢的团队中才能开发出好的软件,事实证明 OpenBSD 的确很成功(可能并非通俗意义上的成功)。
OpenBSD 给自己的定位是:主动安全的类 Unix 操作系统。`ssh` 到一台 OpenBSD 机器上,就能看到这样的欢迎语:
```text {hl_lines=[3]}
OpenBSD 8.0 (GENERIC.MP) #84: Tue Oct 6 23:13:49 MDT 2026
Welcome to OpenBSD: The proactively secure Unix-like operating system.
Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code. With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.
```
他们在官网上写的内容还要更笃定:致力于成为[行业第一安全的操作系统](https://www.openbsd.org/security.html)。为此他们采取了很多措施,也发明了不少安全技术和方法论,这些技术被大量商业公司采用。
我不太擅长谈安全细节,所以就举一个例子:`W^X`——`W` 是写入(write),`X` 是执行(execute),中间的 `^` 是异或,意思是说一块内存区域要么可以写入,要么可以执行,不能既写入又执行。这样就极大削减了内存出现安全漏洞的概率。
他们还有各种原则,比如系统里不必要的服务绝对不默认启用,不需要的端口默认不开放,`root` 默认无法用密码登录[^2],系统的默认状态就非常安全。他们还非常在乎代码的整洁、可读性和可维护性,认为更少的代码就意味着更不容易出现安全漏洞,也非常重视代码审计。我很欣赏他们的工程态度。
到目前为止,OpenBSD 的默认配置只发现过**两次**远程安全漏洞,分别是 `CVE-2002-0639` 和 `CVE-2007-1365`,~~现在 Linux 一个月内就能超过这个数~~。
除了机制的安全性,OpenBSD 也奉行极简。不仅源代码简单易读,基础系统也相当小——安装镜像小,内存占用小,CPU 要求小,自带的服务很少,自带的软件包也很少…… 我安装了 OpenBSD 之后才发现,原来系统的进程列表和软件包列表,是人类能够读完的。知道运行在自己系统里的大部分软件都是做什么的,真的令人安心。这也使得 OpenBSD 对老设备非常友好。
另外,尽管源于美国公司,OpenBSD 基金会位于加拿大,不受美国法律制约。有意思的是,OpenBSD 在自己的 [Cryptography](https://www.openbsd.org/crypto.html) 页面里写到:他们发布加密算法和密码学软件,因为加拿大法律允许出口加密算法——很多国家是禁止的。
## 好的软件很少源自商业世界
OpenBSD 可能不为人熟知,但只要是开发者就基本上离不开 OpenBSD 项目开发的软件,普通用户也会间接接触到,就像这世界上到处都是 Linux 而没有技术背景的大部分人却毫不知情一样。
你用 `ssh` 登录服务器吗?或者用 `ssh://` 连接 Git 远程服务器吗?如果是的话,那你就用过 [OpenSSH](https://www.openssh.org/),即 *OpenBSD Secure Shell*。它最初在 OpenBSD 系统上实现,如今已经集成到了 Windows、macOS、其他 BSD 系统和许多 Linux 发行版当中,还有不少软件依赖 `ssh` 进行安全连接。
在 Windows 上用过 `ssh` 吗?如果有,那你就用过 [LibreSSL](https://www.libressl.org/),这是 OpenSSL 的 Fork,与谷歌的 BoringSSL 是同类软件。除了 OpenBSD 本身,还有不少操作系统、编程语言的 HTTP/TLS 库和软件也采用 LibreSSL。
用过 [tmux](https://github.com/tmux/tmux/) 吗?我本人没那么喜欢终端复用器(我认为理想情况下开发者不需要复用终端,可惜现实不总是理想的,`tmux` 用来保持会话和多开会话都挺方便的),但有不少人确实很喜欢。它也来自 OpenBSD。
在 macOS Sequoia 之后的版本上用过 `rsync` 吗?如果是,那你就用过 [openrsync](https://www.openrsync.org/)——可能不太准确,因为 macOS 上的 `rsync` 其实是 Apple 用 `openrsync` 改的。OpenBSD 这边的 `openrsync` 仍在开发中,也有从 Apple 那边合并一些代码过来用。
据说还有不少公司的防火墙借鉴了 OpenBSD 的 [pf(4)](https://man.openbsd.org/pf.4)(Packet Filter),的确简单好用,现在运行极客死亡计划的服务器就使用 `pf` 过滤和拦截网络请求。我一开始以为自己离不开 Caddy 了,后来发现 OpenBSD 自带的 [httpd(8)](https://man.openbsd.org/httpd.8) 和 [acme-client(1)](https://man.openbsd.org/acme-client.1) 就足够好用。Docker 和 Podman 也是不必要的,[chroot(8)](https://man.openbsd.org/man8/chroot.8) 的隔离就足够好用,而且简单直白。
OpenBSD 和相关的软件简直是操作系统界的 [Motherfucking Website](https://motherfuckingwebsite.com/),只不过更谦卑,不那么惹人耳目,而且有种诡异的魅力。
## BSD 协议
说实话,关于开源协议,我个人往往更偏好 GPL 这类 *copyleft* 协议,甚至是 AGPL 这个最强的 *copyleft* 协议。据说开源软件除了有开源派和自由软件派,还有 GPL 簇拥和 BSD 簇拥(都是政治派别,可以这么说),两派吵得不可开交。
光从协议本身而言我更偏好 GPL,但若是上升到政治问题,再去审视这两派的争端,我不得不说,我更欣赏 BSD 代表的态度。
> Be as politics-free as possible; solutions should be decided on the basis of technical merit.
{{< right "——[Project Goals - OpenBSD](https://www.openbsd.org/goals.html)" >}}
如果你不了解这两种授权协议的具体内容,可以这样理解:GPL 具有传染性,要求使用者必须也用 GPL 协议授权衍生作品,跟 CC 协议的 ShareAlike 条款类似;BSD 相当放纵,仅要求分发者保留署名,并且不得使用原作者的名字为自己的衍生产品做宣传。以上仅仅是概括,GPL 和 BSD 都还有不同的版本,我的描述不构成任何建议。
简单来说,GPL 把自由软件的概念强行摆在所有人面前,让人接受,甚至成为一份子(不得不说其实很朋克);而 BSD 则不在乎使用者和自己有没有相同的政治观点,它包容几乎所有的政治观点。
我自己经常使用 GPL,因为我想要**保护**自己的作品,但我也认识到 GPL 的存在不仅给科技公司造成了法务问题,还给自由软件同胞造成了困扰。Linux 使用 GPL v2.0 协议,据说 Linus 本人很不喜欢 GPL v3.0,阵营内部也有分歧。GPL 协议和 EPL 协议不兼容,这使得不少 Java 和 Clojure 开发者不能直接用 GPL 授权自己的项目,必须增加附加条款。GPL 由 Richard Stallman 写就,各种条款是出了名地难解读,常常造成争议,LibreOffice 也有一些与 GPL 相关的[版权问题](https://isitreallyfoss.com/projects/libreoffice/)。
与此同时,我回头看见 BSD,用不满一页的条款授予了用户自由使用的权利。面对各种观点纷争和政治问题,我仿佛听见他说:
> *I don't care.*
缺少了 GPL 的保护,BSD 授权的软件有变得难以维持吗?目前看来,[OpenBSD 基金会](https://www.openbsdfoundation.org/contributors.html)每年都会收到大量的捐款,Google、Meta 和 Microsoft 都位列其中[^3],当然捐献最多的还是 OpenBSD 社群,也就是所有小捐款的总和。
[^1]: 参见:[Berkeley Software Distribution - Wikipedia](https://en.wikipedia.org/wiki/Berkeley_Software_Distribution)
[^2]: 不少 VPS 提供商对 OpenBSD 的支持不太好,因为不能在面板里添加 SSH 公钥和非 `root` 用户,装好之后根本登录不了,必须自己手动通过 VNC 安装。还好 OpenBSD 的安装程序很容易上手
[^3]: 我好像没有找到 Apple 呢。