CloudStack⑫NATの設定

システムVM起動まではできましたが、テンプレートの取得がうまくいっていません。
SSVMはストレージに関する処理を行ってくれるところです。ISOやテンプレートのイメージをwebからダウンロードしたり、テンプレのコピー、スナップショットのバックアップをします。ですので、インターネットに接続できなければならないわけです。
ところが、私の行った設定ではSSVMにはローカルIPしか割り当てられておらず、お外へ出られなくなっています。というわけでこれからNATを設定して、テンプレをダウンロードできるように設定していきます。

行う設定のイメージは以下の図の通りです。
①NATの設定をするために、インターフェイスを新しく作成
②NATの設定を行う(青と赤のルートを作る)
brg5261

 

インターフェイスを管理サーバーに作ります
#ifconfig eth0:1 SSVMリンクローカルアドレス/24
#ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr ____
inet addr:____ Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:17 Memory:de020000-de040000

イーサ0の設定をコピー
#cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1
バイスとI‘Pを書き換える
#vi /etc/sysconfig/network-scripts/ifcfg-eth0:1
#ifup eth0:1
device eth0:1 is already a member of a bridge; can't enslave it to bridge cloudbr0.
#ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr _____
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:17 Memory:de020000-de040000

IPの情報かでてこない・・・
#service network restart

# /sbin/iptables -t nat -A PREROUTING -d ___ -i eth0:1 -j DNAT --to 作ったインターフェスのアドレス

クラウドブリッジのところが変だなあ。どのように直せばよいのだろう。
というわけで、気を取り直してもう一度やってみた。

#ifconfig eth0:1 eth0:1に割り当てたいアドレス/24
#ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr ____
inet addr:____ Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:17 Memory:de020000-de040000

# /sbin/iptables -t nat -A PREROUTING -d 172.16.96.116 -i eth0:1 -j DNAT --to 作ったインターフェスのアドレス
#service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
#service iptables restart
iptables: Setting chains to policy ACCEPT: nat [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
#service network restart

SSVMからイーサ01におくり、イーサ01からGWにおくるルートをつくればいいのではないかと考えた。
以下前と後の比較

#iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT all -- anywhere SSVM to:192.168.2.254(作ったインターフェスのアドレス)
DNAT all -- anywhere SSVM to:192.168.2.254

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

# /sbin/iptables -t nat -A PREROUTING -d 192.168.2.254 -i et
h0:1 -j DNAT --to GW
#iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT all -- anywhere SSVM to:192.168.2.254
DNAT all -- anywhere SSVM to:192.168.2.254
DNAT all -- anywhere 192.168.2.254 to:GW

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

#iptable save/restart
UIで準備完了になっているか確認をするも変わらず。何がたりないのだろう。

ここで荒井さんにSNATの設定も必要だと聞く。
なぜSNATが必要なのかがわからなかったのでSNATをもう一度調べたところ、staticNATだと思っていたものが、sourceNATというものだと分かりました。
SNATを使うと、送信元アドレスを変換することができます。
続く

ちなみにiptablesで不要になった部分の消し方は・・・

チェーンに番号を表示させて、
# sudo iptables -t nat -L --line-numbers
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 SNAT all -- ____ anywhere to:192.168.2.254

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

指定して消す
# sudo iptables -t nat -D POSTROUTING 1

確認すると
# sudo iptables -t nat -L --line-numbers
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

なくなっています:)

 

参考
http://www.atmarkit.co.jp/ait/articles/0111/23/news003_2.html
http://aidemoire.hatenablog.com/entry/2013/10/04/184507
http://jehupc.exblog.jp/11784724/
http://jmgcomputer.blogspot.jp/2012/09/snatdnat.html
http://seesaawiki.jp/w/kaakichi7/d/ifconfig%A4%C7%A5%CD%A5%C3%A5%C8%A5%EF%A1%BC%A5%AF%A4%CE%C0%DF%C4%EA%A4%F2%A4%B9%A4%EB
http://itpro.nikkeibp.co.jp/article/COLUMN/20080715/310814/