IPnuts4.1b9 Server

準備

ディスクの準備

/varと/tmpに十分な容量が必要です。検証ではディスクにマウントしましたが、 /tmpに200MB、/varに500MB 程度必要と思われます。/etc/vserver以下は設定ファイルとして保存されますが、仮想環境のある/var/lib/vserver以下は保存されないので、ディスク上に/varをマウントしてから環境を作ることをおすすめします。

パッケージの追加

次のパッケージを読み込みます。debootstrapは環境を構築するときだけ必要です。

#lrp_load -ba util-vserver
#lrp_load -b perl
#lrp_load -b debootstrap

== 環境の作成 ===

vserver vserverの名前 build --hostname 作成するホスト名 -m debootstrap --interface デバイス:追加するアドレス/マスク -- -d etch -- --arch i386

#vserver hoge build --hostname hoge -m debootstrap  --interface eth0:192.168.0.101/24 --interface lo:127.0.0.2/8 -- -d etch -- --arch i386

#ループバックデバイスは、ホストや他のゲストと通信したいときや、ゲスト内のサービスでに必要なときにだけ作成するほうが良いでしょう。

コンテキストをマニュアルで指定できるようにします。値は、各ゲストOSに固有の値です。

echo 101 > /etc/vservers/hoge/context

します。

# vserver hoge start
Starting system log daemon: syslogd.
Starting kernel log daemon: klogd.
Not starting internet superserver: no services enabled.
Starting periodic command scheduler: crond.

ホスト側とゲスト側の両方でsshを使うようになると思うので、IPnuts(ホスト)の/etc/ssh/sshd_configで ListenAddressを指定してください。

例:

ListenAddress 192.168.0.1
ListenAddress xxx.xxx.xxx.xxx

その他必要な設定は http://rayearth.homelinux.net/pukiwiki/?Debian%2FVServer などを参考にしておこなってください。

stop時にいろいろエラーが出ますが、この場合、ゲスト環境のrc6.d内の不要なリンクを消します。

rc2.d内の S11klogdも不要でしょう。

設定ができ、起動の確認ができたら、必要な場合は、起動時にゲストが起動するようにします。

# echo default > /etc/vservers/<vserver>/apps/init/mark

最後に設定を保存します。

# save_conf

ゲストでapacheを動かしてみる

ゲストでapacheをポート10080動作させて、IPnuts側の80番ポートで表示するようにします。 あらかじめ、webadminのポート番号は変えておきます。#必要ありませんが、安全のため

ゲストに入ります。

# vserver hoge enter

apacheをインストール

hoge:/# apt-get install apache2

/etc/hostsにゲストのホストネームとのアドレスを設定していることを確認 apacheをポート10080で動作させるので /etc/apache2/port.confのListenを設定 /etc/apache2/port.conf:

Listen 10080

apacheを起動します。

# /etc/init.d/apache2 start (またはrestart)

DNATの設定

次に、IPnuts(ホスト側)で、DNATによって、公開アドレス(aaa.aaa.aaa.aaa)でゲストで動作している。 apacheにアクセスできるようにします。

新規NAT Target

Source

Destination Address

Service

これを追加の欄に設定して、Save後,Start/Restartします。

パケット制御の受信フィルタで、変換後のアドレス(プライベートアドレス)で受信できるように 設定してください。 受信許可するポート番号は、上記の場合10080番になります。

これで、ゲスト環境のapacheが公開できます。

ゲスト間、ゲストーホスト間の通信の制限

ゲストOSにループバックデバイスを設定した場合、パケットのフィルタリングはsysconfig.pyの中でやっており、送受信は全て許可されているため、ゲスト間、ゲストーホスト間の通信の制限はwebadminではできません。

/etc/rc.localに記述するなどして、INPUTテーブルにルールを挿入する必要があります。

RCLOCAL=on にして、INPUT にlo向けに新しいチェインを挿入して、ルールを追加してみました。

以下の例だと、ゲストは一切ホスト側に通信できなくなります。 アドレスは適当に読み直してください。

# local.lrp startup script
#
# this script is saved by save_conf to config.lrp.

RCDLINKS="2,S99 2,K00"

###########################
#
# main
#
###########################

# if you want to run this script ,set RCLOCAL=on.
RCLOCAL=on

[ "$RCLOCAL" = on ] || exit

IPT=/sbin/iptables
iptables_lo(){
        case $1 in
                start)
                        $IPT -N INPUT_LO
                        $IPT -I INPUT -j INPUT_LO -i lo
                        # $IPT -A INPUT_LO -p icmp -j ACCEPT
                        for me in localhost 192.168.0.1 グローバルIP
                        do
                                $IPT -A INPUT_LO -d $me -s ! $me -j DROP
                        done
                        ;;
                stop)
                        $IPT -D INPUT -j INPUT_LO -i lo
                        $IPT -F INPUT_LO
                        $IPT -X INPUT_LO
                        ;;
        esac
}
    
case $1 in
  start )
    echo "Starting $0:"
    # write startup script.
    iptables_lo start
    echo .
    ;;
  stop )
    echo "Stopping $0:"
    # write stop script.
    iptables_lo stop
    echo .
    ;;
  restart )
    $0 stop
    sleep 1
    $0 start
    ;;
  * )
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac