VPS是Virtual Private Server的英文縮寫(也有叫VDS的),中文意思是虛擬專有服務器,就是在一台服務器同時運行幾個獨立的OS(這裡是指FreeBSD),有什麼用處這裡不詳細描述了,設想一下幾個用戶分享一台服務器,互相之間完全獨立,每個人都有root權限......。在FreeBSD下VPS通常是由Jail來實現的(據說有專門的商業軟件但這裡不討論),下面就簡單說一下具體步驟。 在FreeBSD下用Jail實現VPS的步驟是很繁瑣的,這裡我用的是一個抄來的Shell腳本(稍微改了一下)可以很方便的完成全部過程,這裡先假定你的宿主系統地址是192.168.0.1,VPS的地址是192.168.0.2(alias),生成的VPS放在/home/jail下。需要注意的是:這裡要實現的是VPS,要生成和宿主系統一樣的整個FreeBSD目錄樹。如果你只是要實現一個運行某個服務的Jail不要用這個script。 另外,再提醒一下,在VPS下對於一些缺省情況下偵聽所有地址的服務可能需要重新設定在某個具體的地址上。 #!/bin/sh ################################################ # # # makejail # - Originally written in 2001 by Yann Sommer # - Slightly modified by MaxBSD # # Creation of a new jail environment # for FreeBSD. # # Achtung: Tested under FreeBSD4.X only. # ################################################ echo "First off, pls create an ip alias and hostname echo "for the new jail system in /etc/rc.conf." echo "eg: ifconfig_fXP0_alias0=\"inet 192.168.0.2 netmask 0xffffff\"" sleep 3 if test -z $@; then echo "Enter destination Directory for new jail:" echo "eg: /home/jail " read JAIL else JAIL=$@ fi test ! -d $JAIL { echo "$JAIL already exists!!"; exit 1; } echo "Creating jail directory..." mkdir $JAIL echo "Making World...." cd /usr/src make world DESTDIR=$JAIL -DNOCLEAN cd etc make distribution DESTDIR=$JAIL NO_MAKEDEV=yes echo "Making devices..." cd $JAIL/dev sh MAKEDEV jail cd $JAIL ln -sf dev/null kernel echo "Preparing initial configuration..." toUCh $JAIL/etc/fstab grep nameserver /etc/resolv.conf > $JAIL/etc/resolv.conf echo "jail.set_hostname_allowed=0" >> /etc/sysctl.conf echo "jail.sysvipc_allowed=1" >> /etc/sysctl.conf echo "inetd_flags="-wW -a 192.168.0.1" >> /etc/rc.conf echo "network_interfaces=\"\"" >> /etc/rc.conf echo "sendmail_enable=\"NONE\"" >> $JAIL/etc/rc.conf echo "portmap_enable=\"NO\"" >> $JAIL/etc/rc.conf echo "======================================================" echo "*Mission accomplished!*" echo echo "To start the jail you've just created, do this command:" echo "Substitute the IP address and hostname with your own." echo echo "jail /home/jail hostname 192.168.0.2 /bin/sh /etc/rc" echo "======================================================" FreeBSD的Jail功能目前還不算很強的,尤其是管理方面。不過幸好有一些3rd party的程序增強了這方面的功能,這裡就不再討論下去了。有興趣的可以自己去搜索一下。