第三节 jail 配置

创建 jail 目录

放入基本系统

方案一

# make buildworld #编译基本系统
# make installworld DESTDIR=/usr/jail/ #安装到 jail
# make distribution DESTDIR=/usr/jail/ #或者

方案二

下载 base.txz 或者从 iso 提取 baes.txz,然后解压到 jail

# tar -xvf base.txz -C /usr/jail/

挂载 devfs 文件系统。(不是必须)

# mount -t devfs devfs /usr/jail/dev

写入 rc.conf

# sysrc jail_enable="YES"

创建 jail.conf 文件(可以写进 rc.conf 但这样便于管理)

www {
host.hostname =www.example.org; # 主机名
ip4.addr = 192.168.0.10; # IP 地址
path ="/usr/jail"; # jail 位置
devfs_ruleset = "www_ruleset"; # devfs ruleset
mount.devfs; # 挂载 devfs 文件系统到 jail
exec.start = "/bin/sh /etc/rc"; # 启动命令
exec.stop = "/bin/sh /etc/rc.shutdown"; # 关闭命令
}

管理

jls 查看在线 jail 信息列表

JID IP Address    Hostname   Path
3   192.168.0.10  www       /usr/jail/www

中英对照

英语中文
JIDjail ID
IP AddressIP 地址
Hostname主机名
Pathjail 路径

启动与停止 jail

# service jail start www
# service jail stop www

登录 jail

# jexec 1 tcsh

干净关闭 jail

# jexec 3 /etc/rc.shutdown

升级 jail

# freebsd-update -b /here/is/the/jail fetch
# freebsd-update -b /here/is/the/jail install

ping 与网络

开启 ping

写入 /etc/jail.conf

allow.raw_sockets=1;
allow.sysvipc=1;

网络

创建 /etc/resolv.conf,并编辑

search lan
nameserver 119.29.29.29
nameserver 182.254.116.116
nameserver 114.114.114.114
nameserver 223.5.5.5
nameserver 223.6.6.6
#不要写路由器地址

创建 jail 目录

创建4个 分别是模板 骨架 数据 项目

创建模板目录

# mkdir -p /jail/j1
#然后放入基本目录,上边说过不再写

创建骨架目录

# mkdir -p /jail/j2
#移动目录 etc usr tmp var root
# cd /jail/j2/ # 注意目录
# mv /jail/j1/etc ./etc
# mv /jail/j1/tmp ./tmp
# mv /jail/j1/var ./var
# mv /jail/j1/root ./root

创建数据目录

就是复制一份骨架给他用

# cp -R /jail/j2/ /jail/js/www/

创建项目目录

# mkdir -p /jail/www/

建立链接

# cd /jail/j1 #cd 到模板目录
# mkdir -p jusr #创建用来做链接数据的目录
# ln -s jusr/etc etc
# ln -s jusr/home home
# ln -s jusr/root root
# ln -s jusr/usr usr
# ln -s jusr/tmp tmp
# ln -s jusr/var var
#链接目录,注意链接的目录

创建 fstab

#ee /jail/www.fstab
#将公共只读系统挂载到项目目录
/jail/j1/ /jail/www/ mullfs ro 0 0
#将项目数据目录挂载到项目目录
/jail/js/www/ /jail/www/jusr/ mullfs ro 0 0

创建 fstab

# ee /jail/www.fstab
#将公共只读系统挂载到项目目录
/jail/j1/ /jail/www/ mullfs ro 0 0
#将项目数据目录挂载到项目目录
/jail/js/www/ /jail/www/jusr/ mullfs ro 0 0

写入 jail.conf

#全局部分


exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
exec.clean;
mount.devfs;
allow.raw_sockets = 1;
allow.sysvipc = 1;


#网关 没用就不写

interface = "网卡地址"; #主机名也可以用变量代替


hostname = "$name.domain.local";
#jail 位置,也可以用变量
path = "/jail/$name";


#ip地址


ip4.addr = 192.168.1.$ip;


#fstab位置


mount.fstab = /jail/www.fstab;
www {
$ip=2
#不使用fstab,使用
#mount.fstab ="";

#替换全局
}

删除文件没有权限

# chflags -R noschg directory