先日、AWSから新しいサービスElastic Network Interfaceがリリースされました。
簡単に言うとAmazon VPC内のインスタンスにNICの二枚差しが可能になるサービスなようです。
今までAWSのインスタンスはeth0しか使えなかったので、これは便利になりそうです。
VPC内のネットワーク構成の幅が大きく広がるようなサービスなので、少しだけ触ってみました。
二枚差しって事はVPC内のルーティングテーブルを使わずにVyattaとかでルーティングしたりNATしたり出来るので、それを試します。
※ちなみにこちらにあるように、今までもNAT Addressingを使ってNATをする事は出来ました。
今回テストをした構成は以下のようなイメージとなります。
Vyattaは@j3tm0t0さんが作成されたAMIを使用させて頂きました。
※ENIはManagement Consoleからも作成可能で、インスタンス起動時/起動後どちらでも追加する事が出来ます。
※インスタンス起動後にChange Source/Dest CheckをDisableにする事をお忘れなく。
■割り当てたローカルIPと同じ設定をVyatta側に設定します
■Vyattaで行うNATの設定を行います
■確認用インスタンスAの起動直後のルーティングテーブルは以下のようになっています
■確認用インスタンスAに以下のようなルーティングを追加してみます
■設定後のルーティングテーブルは以下のようになります
■インスタンスBへの疎通テストを行ってみます
■インスタンスBへの経路を確認するとVyattaを経由している事がわかります
■インスタンスAからインスタスBにアクセスしてNATが動作しているかApacheのアクセスログを見て確認してみました
今回はインスタスAからインスタンスBでNATされていますが、NATせずルーティングのみさせた場合はNetwork ACLsも動作します。
まだ触り始めたばかりですが、ENIはVPCで色々なネットワークを構成出来るのでインフラエンジニア的にはとてもワクワクしますね!
2011年12月25日日曜日
2011年10月10日月曜日
Vyattaを使ってAmazon VPC内に独自NAT環境を作る
このブログでクラウド関連の話題というと、ほとんどRackspace Cloudばかりなのですが…
今回のエントリは珍しくAWSをテーマにしてみたいと思います。
Twitterを見ているとVyattaが最近アツく、個人的にも書籍を購入したのでAmazon VPCと連携させたいです。
AWSではVPCネットワークから外部へ接続するためのNATアドレッシングインスタンスが提供されておりますが、こちらをVyattaに置き換えて使ってみるという事です。
今回はNATを構成するだけですが、Vyattaは機能が豊富で様々な可能性をVPCに付け加える事が出来そうです。
ちなみに先日Vyatta社からアナウンスされた6.3のAMIはSubscription Editionということなので、今回はVyatta Core6.1のAMIを使用しています。
[ネットワーク構成]
[VPCの設定]
VPC内にはVyattaを起動する公開サブネットと、Webサーバを起動する非公開サブネットの2つを用意します。
[Vyattaインスタンスを起動]
今回はこちらのAMIを使用し、インスタンス起動後にはSouce/Dest. CheckをDisableとします。
この設定はVyattaインスタンスを起動後にインスタンスを選択して、右クリックのメニューから変更が出来ます。
VPC内でElastic IPを取得してVyattaインスタンスに割り当てる事も忘れずに!
このIPを使用してWebサーバは通信をします。
[ルートテーブル]
Management Console(VPC)のRoute Tableメニューで公開用/非公開用のルートテーブルを設定します。
公開用サブネットはデフォルトルートがインターネットゲートウェイとなり、非公開用はVyattaインスタンスのinstance-idを指定します。
[セキュリティグループ]
Vyattaに割り当てるセキュリティグループは、Webサーバからの必要な通信をブロックしなければ自由に設定可能です。
また、VPCで設定可能なネットワークACLも同じように自由に使えました。
[Vyattaインスタンスの設定]
起動したVyattaインスタンスにSSH接続し以下のような設定を行います。
それでは動作確認用に適当なインスタンスを非公開用セグメントで起動します。
インスタンス起動後は外部接続の動作確認を行い、Apacheをインストールしました。
Vyattaに割り当てたElastic IPにポート8080番を指定してアクセスすると以下のようにWebサーバに転送されました。
※おまけ
実はこの構成でVPCのDHCP Options Setを無効にしてDHCPサーバも動かそうとしたのですが、VPCもブロードキャストの通信がサポートされてないという事なので断念しました(汗)
[投入を予定していたDHCP関連の設定]
AWSが提供しているNATアドレッシングインスタンスも便利ですが、Vyattaユーザやルータの設定経験がある方はこのような構成にした方が理解しやすい部分もありそうですね。
[参考資料]
今回のエントリは珍しくAWSをテーマにしてみたいと思います。
Twitterを見ているとVyattaが最近アツく、個人的にも書籍を購入したのでAmazon VPCと連携させたいです。
AWSではVPCネットワークから外部へ接続するためのNATアドレッシングインスタンスが提供されておりますが、こちらをVyattaに置き換えて使ってみるという事です。
今回はNATを構成するだけですが、Vyattaは機能が豊富で様々な可能性をVPCに付け加える事が出来そうです。
ちなみに先日Vyatta社からアナウンスされた6.3のAMIはSubscription Editionということなので、今回はVyatta Core6.1のAMIを使用しています。
[ネットワーク構成]
[VPCの設定]
VPC内にはVyattaを起動する公開サブネットと、Webサーバを起動する非公開サブネットの2つを用意します。
[Vyattaインスタンスを起動]
今回はこちらのAMIを使用し、インスタンス起動後にはSouce/Dest. CheckをDisableとします。
この設定はVyattaインスタンスを起動後にインスタンスを選択して、右クリックのメニューから変更が出来ます。
VPC内でElastic IPを取得してVyattaインスタンスに割り当てる事も忘れずに!
このIPを使用してWebサーバは通信をします。
[ルートテーブル]
Management Console(VPC)のRoute Tableメニューで公開用/非公開用のルートテーブルを設定します。
公開用サブネットはデフォルトルートがインターネットゲートウェイとなり、非公開用はVyattaインスタンスのinstance-idを指定します。
[セキュリティグループ]
Vyattaに割り当てるセキュリティグループは、Webサーバからの必要な通信をブロックしなければ自由に設定可能です。
また、VPCで設定可能なネットワークACLも同じように自由に使えました。
[Vyattaインスタンスの設定]
起動したVyattaインスタンスにSSH接続し以下のような設定を行います。
■ホスト名の設定
$ configure
[edit]
# set system host-name vyatta61
# commit
# exit
■時刻の設定
$ configure
[edit]
# set system time-zone Asia/Tokyo
# commit
# exit
$ show date
■NAT設定(内部から外部への変換)
$ configure
[edit]
# set service nat rule 10 outbound-interface eth0
# set service nat rule 10 source address 10.0.2.0/24
# set service nat rule 10 type masquerade
# commit
■NAT設定(外部からの8080番ポートを内部へ変換)
# set service nat rule 20 destination port 8080
# set service nat rule 20 inbound-interface eth0
# set service nat rule 20 inside-address address 10.0.2.100
# set service nat rule 20 protocol tcp
# set service nat rule 20 type destination
# commit
# save
■NAT設定確認
# show service nat
rule 10 {
outbound-interface eth0
protocol tcp
source {
address 10.0.2.0/24
}
type masquerade
}
rule 20 {
destination {
port 8080
}
inbound-interface eth0
inside-address {
address 10.0.2.100
}
protocol tcp
type destination
}
[Webサーバインスタンスの起動]それでは動作確認用に適当なインスタンスを非公開用セグメントで起動します。
インスタンス起動後は外部接続の動作確認を行い、Apacheをインストールしました。
■NAT動作確認インスタンス起動 $ ping google.co.jp $ sudo yum -y install httpd $ sudo vi /etc/httpd/conf/httpd.conf 136 Listen 8080 $ sudo chkconfig --level 2345 httpd on $ sudo /etc/rc.d/init.d/httpd start $ sudo vi /var/www/html/index.html[ブラウザから動作確認]
Vyattaに割り当てたElastic IPにポート8080番を指定してアクセスすると以下のようにWebサーバに転送されました。
※おまけ
実はこの構成でVPCのDHCP Options Setを無効にしてDHCPサーバも動かそうとしたのですが、VPCもブロードキャストの通信がサポートされてないという事なので断念しました(汗)
[投入を予定していたDHCP関連の設定]
■DHCP設定 Amazon VPCの標準機能ではなくVyattaルータの設定で行います $ configure [edit] # set service dhcp-server shared-network-name oko_chang subnet 10.0.1.0/24 # set service dhcp-server shared-network-name oko_chang subnet 10.0.1.0/24 start 10.0.1.100 stop 10.0.1.200 # set service dhcp-server shared-network-name oko_chang subnet 10.0.1.0/24 default-router 10.0.1.254 # set service dhcp-server shared-network-name oko_chang subnet 10.0.1.0/24 dns-server 10.0.1.254 # commit # exit ■DNS設定 Amazon VPCの標準機能ではなく、Googleが提供しているルータの設定を行います $ configure [edit] # set system name-server 8.8.8.8 # commit # exit ■DNS転送設定 $ configure [edit] # set service dns forwarding listen-on eth0 # commit # exit
AWSが提供しているNATアドレッシングインスタンスも便利ですが、Vyattaユーザやルータの設定経験がある方はこのような構成にした方が理解しやすい部分もありそうですね。
[参考資料]
登録:
投稿 (Atom)




