FreeBSD Thick(厚) Jail
为方便调整,我设置了环境变量来方便后续操作
设置jail目录和release版本环境变量(注意是一个UFS文件系统)
# 这里的 udir 表示 UFS dir, 和我之前设置 dir 表示 ZFS dir 进行区别
# /udata 是主机上挂载的 UFS 文件系统
export jail_udir="udata/jails"
export bsd_ver="14.3"
# 在FreeBSD中root用户的shell默认是sh,所以调整 ~/.shrc
echo 'export jail_udir="udata/jails"' >> ~/.shrc
echo 'export bsd_ver="14.3"' >> ~/.shrc
结合 VNET + Thin Jail(NullFS) 的环境设置, ~/.shrc 内容完整如下:
~/.shrc 环境变量设置export jail_dir="zdata/jails"
export jail_udir="udata/jails"
export bsd_ver="14.3"
原则上,一个 jail 只需要一个主机名、一个根目录、一个 IP 地址和一个用户空间。
下载用户空间(该步骤和 FreeBSD Thin(薄) Jail / VNET + Thin Jail(NullFS) 共用,所以下载文件位于 ZFS 存储卷中:
下载用户空间
fetch https://download.freebsd.org/ftp/releases/amd64/amd64/$bsd_ver-RELEASE/base.txz -o /$jail_dir/media/$bsd_ver-RELEASE-base.txz
解压缩到jail目录:
设置一个
$jail_name 方便灵活配置export jail_name=bsd
解压缩到jail目录(
bsd 命名)mkdir -p /$jail_udir/containers/$jail_name
tar -xf /$jail_dir/media/$bsd_ver-RELEASE-base.txz -C /$jail_udir/containers/$jail_name --unlink
jail目录内容就绪以后,需要复制时区和DNS配置文件:
复制复制时区和DNS配置文件
cp /etc/resolv.conf /$jail_udir/containers/$jail_name/etc/resolv.conf
cp /etc/localtime /$jail_udir/containers/$jail_name/etc/localtime
更新最新补丁:
更新jail
freebsd-update -b /$jail_udir/containers/$jail_name/ fetch install
配置名为
bsd的Thick Jail
在
/etc/jail.conf 中添加一行配置来包含所有在 /etc/jail.conf.d/ 目录下以 .conf 结尾的配置.include "/etc/jail.conf.d/*.conf";
在
/etc/jail.conf.d 目录下添加 bsd.conf 配置bsd {
# STARTUP/LOGGING
exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
exec.consolelog = "/var/log/jail_console_${name}.log";
# PERMISSIONS
allow.raw_sockets;
exec.clean;
mount.devfs;
# HOSTNAME/PATH
host.hostname = "${name}";
path = "/usr/local/jails/containers/${name}";
# NETWORK
ip4.addr = 10.0.0.9/24;
interface = wifibox0;
}
启动名为
bsd的 Thick Jail:
启动名为
bsd 的Thick Jailservice jail start bsd