Skip to content

35.3 Ubuntu Jail

Ubuntu Jail 的创建方法与 Debian 相同,以 Ubuntu 22.04(Jammy)为例。

35.3.1 构建基本系统

创建 Ubuntu Jail 根目录并使用 debootstrap 安装系统:

sh
# 创建 Ubuntu Jail 根目录
# mkdir -p /usr/jails/ubuntu

# 使用 debootstrap 安装 Ubuntu Jammy 系统到 Jail,并指定镜像源
# debootstrap jammy /usr/jails/ubuntu https://mirrors.ustc.edu.cn/ubuntu/

35.3.2 管理挂载文件

创建 /etc/fstab.ubuntu 文件,内容如下:

ini
devfs      /usr/jails/ubuntu/dev      devfs       rw                      0  0
tmpfs      /usr/jails/ubuntu/dev/shm  tmpfs       rw,size=1g,mode=1777    0  0
fdescfs    /usr/jails/ubuntu/dev/fd   fdescfs     rw,linrdlnk             0  0
linprocfs  /usr/jails/ubuntu/proc     linprocfs   rw                      0  0
linsysfs   /usr/jails/ubuntu/sys      linsysfs    rw                      0  0
/tmp       /usr/jails/ubuntu/tmp      nullfs      rw                      0  0

35.3.3 管理 Jail 配置文件

/etc/jail.conf 文件中写入 Ubuntu 的配置:

ini
ubuntu {                               # Jail 名称
  host.hostname = "ubuntu";             # 设置 Jail 的主机名
  mount.fstab = "/etc/fstab.ubuntu";    # Jail 使用的 fstab 文件
  path = "/usr/jails/ubuntu";           # Jail 根目录路径
  devfs_ruleset = 4;                     # devfs 挂载规则集
  enforce_statfs = 1;                    # 设置挂载点可见性
  allow.mount;                          # 允许挂载文件系统
  allow.mount.devfs;                     # 允许挂载 devfs
  exec.start = "/bin/true";              # 启动时执行的命令
  exec.stop = "/bin/true";               # 停止时执行的命令
  persist;                               # 即使无进程也保持 Jail 存活
  allow.raw_sockets;                      # 允许使用 raw Socket
  interface = "lo1";                      # 指定网络接口
  ip4.addr = 192.168.5.2;                 # 分配 IPv4 地址
  ip6 = "disable";                        # 禁用 IPv6
}

35.3.4 允许网络访问

在 pf 防火墙中的 jails 表中加入 Jail 的地址,以允许 Jail 访问网络:

sh
# pfctl -t jails -T add 192.168.5.2

35.3.5 启用 Ubuntu Jail 实例

启用实例:

sh
# jail -c ubuntu

如果已经在文件 /etc/rc.conf 中设置过 jail_enable=YES,也可用:

sh
# service jail start ubuntu

开机启动的设置方法可参考 Debian Jail,执行以下命令将 Jail ubuntu 加入启动列表:

sh
# sysrc jail_list+=ubuntu

35.3.6 更新 Ubuntu 系统

过程与 Debian Jail 相同,只需将命令中的 debian 替换为 ubuntu。参考本书其他相关章节。

35.3.7 参考文献