Friday, May 4, 2012

Jail in FreeBSD

Jail 是 FreeBSD 上面提供 OS level virtualization 的工具

他提供了比 chroot 還要更強大的功能

可以把一台 FreeBSD 裝在裏面

========================================

建一台 jail 很簡單只要幾個步驟

http://www.freebsd.org/doc/handbook/jails-build.html


# setenv D /usr/jail/jailname
# mkdir -p $D 
# cd /usr/src
# make buildworld                  # 要很久,請用 screen 掛著
# umount -f /tmp                   # 這邊因為 tmp 是不能 exec 的,所以要先 unmount 掉
# make installworld DESTDIR=$D 
# make distribution DESTDIR=$D 
# mount -t devfs devfs $D/dev

改 rc.conf
#vim /etc/rc.conf



jail_enable="YES"
jail_list="jailname"
jail_jailname_rootdir="/usr/jail/jailname"
jail_jailname_hostname=".xxxxxxxxxxxxxxxxxxxxxxxxx"
jail_jailname_ip="10.0.0.14"
jail_jailname_devfs_enable="YES"
jail_jailname_devfs_ruleset="devfsrules_jail"


把 ports 系統搬過去
# cp -r /usr/ports /usr/jail/jailname/usr/ports

開機

# /etc/rc.d/jail start jailname

關機
# /etc/rc.d/jail stop jailname

現在有幾個 jail

#jls



   JID  IP Address      Hostname    Path
     3  10.0.0.14       **********  /usr/jail/jailname




#jexec N /bin/tcsh    # N 是第幾個 jail ID

先裝好 portmaster 和基本 tools

記得 jail 的網卡要在外面 rc.conf 裏面設 alias 像這樣

ifconfig_em1_alias0="inet 10.0.0.14 netmask 255.255.255.0"

jail 裏面的 /etc/resolv.conf 也要一下,不然 DNS 找不到


search example.org
nameserver 140.113.1.1



要 ping 測試的話要在外面改 sysctl
# sysctl security.jail.allow_raw_sockets=1

在 jail 裏面要出來的話就 Ctrl - D 就好了

No comments:

Post a Comment