Archive

Posts Tagged ‘lxc’

Fedora16のLXC内にSL6.2を入れてみる

まあ、基本的にはうまく行くよね。問題が起こるとすればkernelのバージョンを見ているプログラムとかか。(3系なので。)

・ホストFedoraの/etc/yum.repos.dにsl.repoを突っ込む
 disableにしておきましょう、忘れた頃に事故ると悲惨なことになります。
 あと、GPGKEYがないと怒られるので入れるかチェックを無効に。
 $releaseverは6.2に置換しておきます。
・yum –installrootを使ってLXC用ディレクトリにインストール
 だいたいFedoraといっしょ。Fedoraのリポジトリをdisablerepoするのを忘れずに。
 yumとか入れとくこと。
・chroot
・この状態でSLのrpmを使うとエラーが出る(/var/lib/rpm/Nameが壊れてるとかなんとか)ので、
 該当ファイルを削除してrpm –rebuilddb
・/etc/rc.d/rc.sysinitを適宜修正
– /sbin/start_udevを削除しないとptyが上書きされてrequest failになるっぽい

かんせい。

カテゴリー:GNU/Linux タグ: , ,

続・FedoraでLXCためしてみた ネットワーク編

前回はLXCで作成したコンテナをホストと同じネットワークに繋いだので、
今度はホストをゲートウェイとして、仮想的なネットワークに突っ込んでみた。
基本的には物理ネットワーク2本でルータを構築するのと同じ。

コンテナの作成自体は前回と同じなので省略。
ホストのネットワーク構成に違いがあり、eth0をbr0に含めないのがポイント。eth0にはそのままipアドレスを割り当てたままにし、br0にはbr0で別個にipアドレスを割り当てる。
以下、ホストの外側(eth0)ipアドレスが192.168.1.21、ブリッジのipアドレスが192.168.3.1、コンテナが192.168.3.2。
/etc/sysctl.confでipv4フォワードを有効にするのをお忘れなく。

/etc/sysconfig/iptables

*nat
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i br0 -o eth0 -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

コンテナ側でroute add default gw 192.168.3.1を書いて完成。

これだけだと外からアクセスできないので、ホストのポート2222にアクセスするとコンテナのsshに繋がるようにしてみた。
ついでなのでインターフェイス毎にチェインを分離。
複数個のコンテナを動かすならさらにFORWARDを-dでさらに分離してもいいかもしれない。

*nat
-A PREROUTING -p tcp --dport 2222 -i eth0 -j DNAT --to 192.168.3.2:22
-A POSTROUTING -o eth0 -s 192.168.3.0/24 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-N HOST_INPUT
-N HOST_FORWARD
-N GW_INPUT
-N GW_FORWARD

-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -i eth0 -j HOST_INPUT
-A INPUT -i br0 -j GW_INPUT

-A HOST_INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A HOST_INPUT -j REJECT --reject-with icmp-host-prohibited

-A GW_INPUT -j REJECT --reject-with icmp-host-prohibited

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -p icmp -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

-A FORWARD -i eth0 -j HOST_FORWARD
-A FORWARD -i br0 -j GW_FORWARD
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

-A HOST_FORWARD -o br0 -p tcp -d 192.168.3.2 --dport 22 -j ACCEPT
-A HOST_FORWARD -j REJECT --reject-with icmp-host-prohibited

-A GW_FORWARD -j ACCEPT

COMMIT

ちなみに、コンテナ用のフィルターはどこに書くの?と思ったらコンテナ内部からiptablesを使えるようです。
これは複数コンテナとブリッジで仮想ネットワーク&ルータを作りたい放題ということか!

/* Fedora17のalphaでやったらどうやってもプロセスが分離されなかったんだがどういうことだろうか・・・
追記:Fedora16の別環境でやっても分離されない・・・何故だ・・・
さらに追記:procをホスト環境からマウントするとこうなるらしい、lxc.mountのfstabに書かれたファイルからprocがマウントされると正常になる。
*/

カテゴリー:GNU/Linux タグ: , ,