ユーザ用ツール

サイト用ツール


サイドバー

vps:vps_01

jailer設定

環境

jail後の構成

jailで以下の様に分割する。

ホスト名 用途 備考
jailerjail本体portsのため、ネットワークには接続する。
webWebサーバ
desktopデスクトップ環境用外部からのssh接続で利用
fwipfwGlobal IPを保持

構成上の注意点

以下、設定中に気づいた点と回避策。もっと上手い方法があると思う。

  • ipfwが全prisonerで有効となる。
    • web, desktopのipfw設定は“open”とする。
    • if_bridge(4)を通過する通信にもipfwが有効となるので、if_bridge(4)を作成するjailerのipfw設定を“open”とした。
  • epair(4)はjail起動後、各prisonerに対して割り当てる必要がある。
    • jail起動後の各prisonerはインタフェースを持っていないのでネットワーク周りの設定はepair割り当て後に再度行う必要がある。
  • jexec <prisoner> sh /etc/rcによるrc.d配下の各スクリプトの実行は #KEYWORD nojail があ</code>る場合、無視される。
    • rc.d/ipfw等を直接実行した場合は有効。
    • #KEYWORD nojailが無くても挙動がおかしくなるプロセスがある。そのため挙動がおかしいプロセスは各prisonerの起動スクリプトにてstop, startを行い対処している。

設定

FreeBSD 8.1R導入

2012年4月時点で提供されているFreeBSDは8.1Rとなる。

項目 備考
Country Selection110 Japan
System Console KeymapUSA ISO US ISO keymap英語キーボードのため
Label/ 1024MB/だけ手動で設定し、残りは自動設定
swap 2011MB
/tmp 2029MB
/var 512MB
/usr 残りすべて
sysinstallChoose DistributionsDeveloper
FreeBSD Documentation Installation Menu選択しない
Root Password
User Managementwheel に追加
Networkingsshd 有効

FreeBSD 8.3R導入

FreeBSD 8.3Rにするため、freebsd-updateを行う。

# freebsd-update -r 8.3-RELEASE upgrade
終了後
# freebsd-update -r 8.3-RELEASE install

再起動後

# freebsd-update install

ソース同期

cvsupでソースを同期する。

buildworld

buildworldを行う。

kernel再構築

VIMAGEを有効にしたkernelを構築する。

ident   VPS
options VIMAGE

installworld

installworldを行う。

prisoner作成

prisonerの格納場所を作成する。

# mkdir -p /usr/jail/fw
# mkdir -p /usr/jail/desktop
# mkdir -p /usr/jail/web

各prisonerにworldを展開する。

# make buildworld
# make installworld DESTDIR=/usr/jail/fw
# make distribution DESTDIR=/usr/jail/fw
# make installworld DESTDIR=/usr/jail/desktop
# make distribution DESTDIR=/usr/jail/desktop
# make installworld DESTDIR=/usr/jail/web
# make distribution DESTDIR=/usr/jail/web

/etc/rc.conf設定

ipfwはjailerで有効にする必要があるので以下の設定を追加する。

firewall_enable="YES"
firewall_type="open"

ネットワークインタフェースはjail起動後に割り当てるので、コメント化する。

# ifconfig_em0="inet aaa.bbb.ccc.ddd netmask 255.255.255.xxx"
# defaultrouter="aaa.bbb.ccc.ddd"

デフォルトルートはfwの内側に設定する。

defaultrouter="192.168.100.254"

ports共有設定

ports共有設定を行う。対象はweb, desktop。

  • portsの展開
    # portsnap fetch extract
  • /etc/fstab
    /usr/ports /usr/jail/web/usr/ports     nullfs ro 0 0
    /usr/ports /usr/jail/desktop/usr/ports nullfs ro 0 0
  • マウントポイントの作成
    mkdir /usr/jail/web/usr/ports /usr/jail/desktop/usr/ports

jail起動スクリプト

bridgeとepair作成までのスクリプトを用意する。

  • /home/<username>/Tools/S01network.sh
    #!/bin/sh
    
    ifconfig bridge0 create up
    ifconfig epair0 create
    ifconfig epair1 create
    ifconfig epair2 create
    ifconfig epair3 create
    
    ifconfig epair0a up
    ifconfig epair1a up
    ifconfig epair2a up
    ifconfig epair3a up
    
    ifconfig bridge0 addm epair0a addm epair1a addm epair2a addm epair3a
  • ifconfig epair[n] create
    epair[n]aとepair[n]bが作成される。epairを一つ作成してjailerからprisonerに割り当ててから次のepairを作成するとMACアドレスが重複する場合がある。この場合、それぞれのepairを同じbridgeに接続するとMACアドレスが重複して通信が行えなくなる。問題を回避する為、epairの作成は同時期に行う。
  • ifconfig bridge0 addm epair[n]a …
    作成したepairのepair[n]aをbridgeに接続する。

jail起動後の後処理スクリプト

各prisonerを起動後の後処理スクリプトを用意する。

  • /home/<username/Tools/S05after.sh
    ifconfig epair3b inet 192.168.100.253 netmask 255.255.255.0
    route add default 192.168.100.254
    service newsyslog start
    service sendmail stop
    service sendmail start

ipfwログローテーション

各prisonerのipfwのログはjailerの/var/log/securityに記録される。必要であれば、/etc/newsyslog.confにてローテーションの設定を変更する。

vps/vps_01.txt · 最終更新: 2012/05/04 12:16 by dummy@dummy