选择 FreeBSD 而不是 Linux 的技术性原因3
阅读原文时间:2023年07月09日阅读:3

选择 FreeBSD 而不是 Linux 的技术性原因3

jail
  FreeBSD Jails 系统是另一个惊人的工程壮举。
  在 2000 年 3 月 14 日的 4.0 版本中,FreeBSD 引入了 jails 系统。
  FreeBSD jail 是一种操作系统级的虚拟化,它允许您将一个 FreeBSD 衍生的系统安装到多个独立的迷你系统中,称为 jails 。运行在 jail 中的系统共享相同的内核和系统资源,因此开销非常小。
  对 FreeBSD jails 的需求来自于一个小型共享环境主机提供商 (R&D Associates, Inc.的所有者,Derrick T. Woolworth)的愿望,即在他们自己的服务和客户的服务之间建立一个干净、清晰的分离,主要是为了安全和便于管理。解决方案(由 Poul-Henning Kamp 开发)不是增加一层新的细粒度配置选项,而是对系统进行分门别类,包括其文件和资源,只有合适的人才能访问合适的分门别类。
  通过 jail,可以创建各种虚拟机,每个虚拟机都有自己的一套实用程序和自己的配置。这使得它成为一种安全的试用软件的方式。例如,可以在不同的 jail 中运行不同版本或尝试不同配置的 web 服务器包。而且由于 jail 限定在一个狭小的范围内,所以一个错误的配置或错误的影响(即使是 jail 内的超级用户所做的)也不会危害到系统其他部分的完整性。由于在 jail 外实际上没有任何东西被修改,"变化 "可以通过删除 jail 的目录树副本而被丢弃。
  然而 FreeBSD jail 并没有实现真正的虚拟化; 它不允许虚拟机运行不同于基本系统的内核版本。
  FreeBSD jail 是提高服务器安全性的有效方法,因为 jail 环境与系统的其他部分(其他 jail 和基本系统)是分离的。
如果您想更好地了解 FreeBSD jail 和 Linux 容器之间的区别,请阅读博客文章 Setting the Record Straight: containers vs. Zones vs. Jails vs. VMs 。
FreeBSD 有 iocage 工具,它被设计用来简化 jail 管理任务。它将运行 VNET 或共享 IP 网络的 ZFS 支持的 jail 的管理抽象化。

Bastille
  Bastille 是一个开源系统,用于在 FreeBSD 上自动部署和管理容器化应用程序。
  Bastille 使用 FreeBSD jails 作为容器平台,并加入了模板自动化,以创建一个类似于 Docker 的容器化软件集合。
模板负责安装、配置、启用和启动软件,为构建容器化堆栈提供了一种自动化的方式。

Capsicum
  Capsicum 是剑桥大学计算机实验室开发的一个沙盒框架,得到了 Google 、FreeBSD 基金会和 DARPA 的支持。Capsicum 扩展了 POSIX API,提供了一些新的操作系统基元,以支持类似 UNIX 操作系统上的对象能力安全。
  Capabilities - 具有细粒度权限的精炼文件描述符
  能力模式--拒绝访问全局命名空间的进程沙盒。
  流程描述符--以能力为中心的流程 ID 替换
  匿名共享内存对象--POSIX 共享内存 API 的扩展,支持与文件描述符相关的匿名交换对象(能力)。
  rtld-elf-cap - 修改 ELF 运行时链接器,以构建沙盒应用。
  libcapsicum - 用于创建和使用功能和沙盒组件的库。
  libuserangel - 允许沙盒应用程序或组件与用户天使(如 Power Boxes )交互的库。
  chromium-capsicum - Google 的 Chromium 网页浏览器的一个版本,它使用能力模式和能力来为高风险的网页渲染提供有效的沙盒。
  Capsicum 的 FreeBSD 实现,由 Robert Watson 和 Jonathan Anderson 开发,在 FreeBSD 10.0 中开箱即用。Capsicum for FreeBSD 是一个参考实现,它不仅可以作为 Capsicum API 和语义的参考,而且还为移植到其他平台提供了起点源代码 (例如,Capsicum for Linux 和 Capsicum for DragonFlyBSD)。

DTrace
  DTrace 是一个从 Solaris 移植过来的综合性动态跟踪框架。DTrace 提供了一个强大的基础架构,允许管理员、开发人员和服务人员简明扼要地回答有关操作系统和用户程序行为的任意问题。
  DTrace 可以提供正在运行的系统的全局概览,例如活动进程所使用的内存量、CPU 时间、文件系统和网络资源。DTrace 还可以提供细粒度的信息,如调用特定函数的参数日志,或访问特定文件的进程列表。
  有关 DTrace 使用的更多信息,请参阅 DTrace 单行本教程和 DTrace 示例。
  在 Hacker News 上也有一个有趣的讨论,其中有许多关于 DTrace for Linux 的相关评论。

bhyve
  bhyve 是一个原生的 FreeBSD 虚拟机管理程序,它可以在虚拟机中运行客体操作系统。可以通过命令行参数来指定虚拟 CPU 的数量、客体内存的数量和 I/O 连接等参数。
  bhyve 支持多种客体操作系统的虚拟化,包括 FreeBSD 9+、OpenBSD 、NetBSD 、Linux 、illumos 、DragonFly 、Windows Vista 及更高版本和 Windows Server 2008 及更高版本。目前的开发工作旨在扩大对 x86-64 架构的其他操作系统的支持。
  bhyve 管理程序在 FreeBSD 10.0-RELEASE 中成为基础系统的一部分。
  bhyve 要求处理器支持 Intel Extended Page Tables (EPT) 或 AMD Rapid Virtualization Indexing (RVI) 或 Nested Page Tables (NPT)。使用多于一个 vCPU 的 Linux 客座或 FreeBSD 客座,需要 VMX 无限制模式支持( UG )。较新的处理器,特别是英特尔酷睿 i3/i5/i7 和英特尔至强 E3/E5/E7,支持这些功能。UG 支持是随着英特尔的 Westmere 微架构引入的。

防火墙
  FreeBSD 的基本系统中内置了三种不同的防火墙。PF, IPFW, 和 IPFILTER, 也就是 IPF.
从 FreeBSD 5.3 开始,OpenBSD 的 PF 防火墙被移植到了基本系统中。PF 是一个完整的、全功能的防火墙,它可以选择支持 ALTQ (Alternate Queuing),提供服务质量 (QoS)。PF 的过滤语法与 IPF 类似,但做了一些修改,使其更加清晰。网络地址转换( NAT )和服务质量( QoS )已经集成到 PF 中,QoS 通过导入 ALTQ 排队软件,并与 PF 的配置联系起来。此外,还扩展了 PF 的功能,如用于故障转移和冗余的 pfsync 和 CARP,用于会话认证的 authpf,以及用于缓解防火墙困难的 FTP 协议的 ftp-proxy 等。同时,PF 还支持 SMP (对称多处理)&STO (状态跟踪选项)。
  PF 的日志记录是众多创新功能之一。PF 的日志记录是可以在 pf.conf 中按规则配置的,日志由 PF 通过一个名为 pflog 的伪网络接口提供,这是用户级程序从内核级模式中提取数据的唯一方式。日志可以使用标准的实用程序(如 tcpdump )来监控。
  IPFW 是为 FreeBSD 编写的状态防火墙,它同时支持 IPv4 和 IPv6 。它由以下几个组件组成: 内核防火墙过滤规则处理器及其集成的数据包统计工具、日志记录工具、NAT 、dummynet 流量转换工具、转发工具、桥接工具和 ipstealth 工具。
  FreeBSD 在 /etc/rc.firewall 中提供了一个示例规则集,它定义了几种常见场景下的防火墙类型,以帮助新手用户生成合适的规则集。IPFW 提供了强大的语法,高级用户可以使用它来制作满足特定环境安全要求的自定义规则集。
  IPF 是一个跨平台的开源防火墙,已经被移植到多个操作系统上,包括 FreeBSD 、NetBSD 、OpenBSD 和 Solaris 。IPF 是一个内核侧的防火墙和 NAT 机制,可以被用户国程序控制和监控。防火墙规则可以用 ipf 设置或删除,NAT 规则可以用 ipnat 设置或删除,IPF 内核部分的运行时统计可以用 ipfstat 打印,ipmon 可以用来将 IPF 的操作记录到系统日志文件中。
  IPF 最初是采用 "最后匹配的规则获胜 "的规则处理逻辑编写的,只使用无状态规则。此后,IPF 得到了增强,加入了快速和保持状态选项。

调整
  FreeBSD 有超过五百个系统变量可以通过 sysctl 工具来读取和设置。这些系统变量可以用来对运行中的 FreeBSD 系统进行修改,其中包括 TCP/IP 协议栈和虚拟内存系统的许多高级选项。这其中包括许多 TCP/IP 协议栈和虚拟内存系统的高级选项,对于有经验的系统管理员来说,这些选项可以显著地提高系统的性能。

GEOM
  FreeBSD GEOM 是 FreeBSD 操作系统的主要存储框架。它提供了一种标准化的方式来访问存储层。GEOM 是模块化的,允许 GEOM 模块连接到框架中。例如,geom_mirror 模块为系统提供了 RAID1 或镜像功能。目前已经有很多模块可以使用,而且 FreeBSD 的各个开发者也一直在积极开发新的模块。
  由于 GEOM 的模块化设计,模块可以堆叠在一起,形成一个 GEOM 层链。例如,在 geom_mirror 模块的基础上,可以添加一个加密模块,如 geom_eli 来提供一个镜像和加密的卷。每个模块都有消费者和提供者。提供者是 geom 模块的源头,通常是一个物理硬盘,但有时也是一个虚拟化的磁盘,如内存盘。geom 模块又提供一个输出设备。其他 GEOM 模块,也就是所谓的消费者,可以使用这个提供者来创建一个相互连接的模块链。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章