在主机系统上创建任何jail之前,必须执行某些配置并从主机系统获取一些信息。
需要配置jail(8)实用工具,创建必要的目录以配置和安装jail,从主机的网络中获取信息,检查主机是使用 OpenZFS 还是 UFS 作为其文件系统。
jail(8) 实用程序管理 jail。
要在系统启动时启动 jail,请运行以下命令:
FreeBSD jail 的网络可以以几种不同的方式配置:
主机网络模式(IP 共享)在主机网络模式中,jail 与主机系统共享相同的网络堆栈。当在主机网络模式下创建jail时,它使用相同的网络接口和 IP 地址。这意味着jail 没有单独的 IP 地址,其网络流量与主机的 IP 相关联。
虚拟网络(VNET)虚拟网络是 FreeBSD jail的一个功能,提供比主机网络等基本网络模式更先进和灵活的网络解决方案。VNET 允许为每个jail创建隔离的网络堆栈,为它们提供独立的 IP 地址、路由表和网络接口。这提供了更高级别的网络隔离,并允许jail像在单独的虚拟机上运行一样运行。
网状系统 netgraph(4)是一个多才多艺的内核框架,用于创建自定义网络配置。它可以用于定义网络流量如何在jail和主机系统之间以及不同jail之间流动。
放置文件的地方没有具体的位置吗jail。
一些管理员使用/jail,其他人使用/usr/jail,还有人使用/usr/local/jails。在本章中将使用/usr/local/jails。
除了/usr/local/jails之外,将创建其他目录:
媒体将包含已下载用户空间的压缩文件。
当使用 Thin Jail时,模板将包含模板。
容器将包含jail。
使用 OpenZFS 时,执行以下命令为这些目录创建数据集:
使用 UFS 时,执行以下命令来创建这些目录:
有两种方式可配置 jail 。
第一种方式是在文件 /etc/jail.conf 中为每个 jail 添加一个条目。另一种选择是在目录 /etc/jail.conf.d/ 中为每个 jail 创建一个文件。
如果主机系统少jail,可以在/etc/jail.conf 文件中为每个jail添加一个条目。如果主机系统有许多jail,最好为/etc/jail.conf.d/目录中的每个jail有一个配置文件。
/etc/jail.conf.d/中的文件必须以 .conf 作为扩展名,并且必须包含在/etc/jail.conf 中:
典型的jail条目如下:
有关配置变量的更多信息可以在jail(8)和jail.conf(5)中找到。
jailname - jail 的名称。 | |
---|---|
exec.start - 当创建 jail 时在 jail 环境中运行的命令。一个典型的要运行的命令是 "/bin/sh /etc/rc"。
exec.stop - 在移除 jail 前在 jail 环境中运行的命令。一个典型的要运行的命令是 "/bin/sh /etc/rc.shutdown"。
exec.consolelog - 将命令输出(标准输出和标准错误)重定向到文件。
allow.raw_sockets - 允许在jail内部创建原始套接字。设置此参数允许诸如 ping(8)和 traceroute(8)之类的实用程序在jail内部运行。
exec.clean - 在干净的环境中运行命令。
mount.devfs - 在 chrooted /dev 目录上挂载 devfs(5) 文件系统,并将 devfs_ruleset 参数中的规则集应用于限制 jail 内可见的设备。
host.hostname - jail 的主机名。
path - jail 的根目录。在 jail 中运行的任何命令,无论是由 jail 运行还是从 jexec(8) 运行,都将从此目录运行。
ip4.addr - IPv4 地址。IPv4 有两种配置可能性。第一种是建立一个 IP 或 IP 列表,就像在示例中所做的那样。另一种是改用 ip4,并将 inherit 值设置为继承主机的 IP 地址。
ip6.addr - IPv6 地址。IPv6 有两种配置可能性。第一种是建立一个 IP 或 IP 列表,就像在示例中所做的那样。另一种是改用 ip6,并将 inherit 值设置为继承主机的 IP 地址。
interface - 用于添加jail的 IP 地址的网络接口。通常使用主机接口。