[さくらVPS]centos6の環境にlxcを構築する 3 – ゲストOSをWEBサーバにする


nullpopopoみなさんこんにちは。頭のCPUアイドル100% (っ´∀`)っ ゃーでございます。今回は、VPS上にlxcで作成したゲストOS(コンテナ)をWEBサーバにしてみたいと思います。lxcのインストールとVM起動までの手順はこちらをご覧ください。ゲストOSはプライベートIPアドレスしか持っていないので、ホストOS側のiptablesでNATとIPマスカレードを設定してあげます。

ホストOS側のiptablesは、通常のfilter設定に加え、natの設定を行います。

[ (っ´∀`)っ@友の会 ~]$ sudo vi /etc/sysconfig/iptables
*nat
:PREROUTING ACCEPT
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.3.10:80 
:POSTROUTING ACCEPT
-A POSTROUTING -s 10.0.3.0/24 -j MASQUERADE 
:OUTPUT ACCEPT
COMMIT
*filter
:INPUT DROP
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 23456 -j ACCEPT 
-A INPUT -s xxx.xxx.xxx.xxx/32 -p tcp -m tcp --dport 22 -j ACCEPT 
COMMIT

natのルールを上から順に説明しますと、ホストOSのTCP80番ポートに来たパケットを、WEBサーバ(10.0.3.10)の80番ポートにDNATしてあげます。逆に、ゲストOS(10.0.3.0/24)からのパケットはIPマスカレードしてあげています。

filterのルールですが、localhostのパケットはすべて許可し、通信中のパケットも許可します。TCPの23456番ポートは、SSHのポートとして使うことにします。/etc/ssh/sshd_configの設定も「Port 23456」を追加してあげましょう。しかし、SSHのポートを指定して接続するのが面倒なので、自宅のIPアドレス「xxx.xxx.xxx.xxx」からは22番ポートで接続を許可してあげます。

iptablesファイルの設定が終わったら、iptablesデーモンを再起動しましょう。

[ (っ´∀`)っ@友の会 ~]$ sudo /etc/init.d/iptables restart
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter nat      [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

あとはゲストOSにApacheやnginxをインストールし、ホストOSのグローバルIPアドレスめがけてhttp接続し、コンテンツが閲覧できればOKです。

[amazonjs asin="4774150363" locale="JP" title="サーバ構築の実際がわかる Apache実践運用/管理 (Software Design plus)"]