NAS4FREE(XIGMANAS) jail使用

2019年10月24日 0 作者 筱枫

nas4free主机系统只有很少的一部分功能,所以需要一个jail来完成一些日常操作

由于是基于FREEBSD,所以搭建jails就相当容易

本文需要有对FREEBSD有一定了解的用户使用!


由于xigmanas会在重启后清除掉安装的软件和配置信息,所以不考虑勇士ezjail,而是直接使用原生的jail

首先在rc.conf中增加如下6行(注意是在webui中的rc.conf中增加,如图所示)

jail的配置文件放在数据目录下是为了开机后不会将其清空掉

同理,pf的配置文件也是如此

之后再配置一个clone_interface,是为了进行nat操作,让多个jail可以共享一个主机ip进行访问

详情请见文章:FreeBSD jails with a single public IP address

之后就是正常的jails安装,可以参考官方的文档,我这里采用的是直接从freebsd官网下载base.txz进行安装

https://download.freebsd.org/ftp/releases/amd64/amd64/12.0-RELEASE/

最后配置pf.conf,配置转发规则,让jail可以访问外网

scrub in all

# jail nat
nat pass on em1 from lo1:network to any -> (em1)

如此,jail便可以正常访问外网,之后就可以进入jail进行正常操作,可以将其当作一个freebsd系统来操作即可


但是我们还面临一个问题,jail中是无法直接访问主机的路径,换而言之,无法在jail中访问主机外部的文件系统,所以需要一步额外的操作

在主机系统中使用mount_nullfs将数据目录映射到jail中的目录中

mount_nullfs source_dir target_dir

例如我的jail目录是/mnt/data/jail/main

我的数据目录是/mnt/download

则我可以在jail中新建目录/mnt/download

之后使用命令挂载系统

mount_nullfs /mnt/download /mnt/data/jail/main/mnt/download

挂载后即可从jail中访问


注意事项:

本人目前使用的系统是xigmanas12,在启动pf的时候会报告一些必须的文件找不到,解决办法是从base.txz中解压出对应的文件放到对应的目录中

cp /mnt/download/temp/base/sbin/pfctl /sbin/
cp /mnt/download/temp/base/etc/pf.os /etc
service pf restart

我这里将其写入shell当中,然后通过webui中的命令脚本让其在系统初始化完成后进行执行

如此,一个基本且可用的系统便搭建完成了