Amazon VPC編~Natインスタンスについてパート②~

こんにちは! JQです。

前回は『 Amazon VPC編~Natインスタンスパート①~ 』ということで、AWS管理コンソールでNatインスタンスの構築をしてそれを確認するまでをお話しました。

今回は『Amazon VPC編~Natインスタンスについてパート②~』と題して、Natインスタンスのスクリプトを使って起動して、そのNatインスタンスにアクセスするまでを記述したいと思います。

っと、その前にAWSの更新情報をご紹介します。

今回AWS EC2 コンソールにTagsが新しく追加されました!

Tagsページを利用する事で、今までコンソールでは1つ1つ行うしかなかったタグの操作が1度で出来るようになったり、関連づけられたタグを基にEC2のリソースを閲覧したりする事が可能となります。

Tagでの管理がさらに簡単にできますね!

さらに詳しい情報がお知りになりたい方は、公式ブログの「[【AWS発表】EC2コンソールに新しいタグ管理ツールが追加](http://aws.typepad.com/aws_japan/2013/04/new-tag-management-tools-in-the-ec2-console.html)」をご覧下さい。

さて、ここから本題に入りまして、前回構築したVPCのNatインスタンスに実際に接続して確認していきたいと思います。

パート① ではテンプレートを利用して構築したNatインスタンスを確認するところまでを紹介しました。

今回は、簡単なスクリプトでインスタンスを立てて実際に接続確認をしていきましょう。

20130422_01_01

1. インスタンスの起動

まずはCommand Line Tool , AWS SDK ,WEB Consoleなど、自分が好きな物でPublicとPrivate双方にインスタンスを作成しましょう。

今回は分かりやすいよう、簡単なスクリプトを作成してみました。

指定したVPCの全てのSubnetにインスタンスを1つ立てるスクリプトになります。

※KeyとSecurityGroupがない場合は事前に作成をしましょう。

1#!/usr/bin/env ruby23require 'rubygems'4require 'aws-sdk'56ec2 = AWS::EC2.new(7  :ec2_endpoint => 'ec2.ap-northeast-1.amazonaws.com',8  :access_key_id => ‘xxxxxxxxxxx’,9  :secret_access_key => 'xxxxxxxxxxxxx'10)1112instances=Hash::new1314p "loading subnets"15ec2.vpcs["vpc-xxxxxxxx"].subnets.each {|s|16        p s.id1718        instances[s.id] = ec2.instances.create(19                  :image_id => "ami-173fbf16", # => AmazonLinux20                  :subnet => s.id,21                  :key_name => "xxxxxx",22                  :security_group_ids => "sg-xxxxxx")23}2425sleep 602627instances.each_pair {|s,i|28        sleep 60 while i.status == :pending29        p "#{i.id} => #{i.status}"30}3132p "Compleate!!"

AWS管理コンソールから確認すると、以下のようにPublicとPrivateの両方に作成されました。

20130422_01_02

1. インスタンスの設定

※この手順2での設定については、AWS管理コンソールよりおこないます。

まずは、Public側のインスタンスにEIPを付与してアクセス出来るようにします。

20130422_01_03

ただ、このままでは接続は出来ないのでSecurityGroupの設定をします。

・Natインスタンスが所属するSecurityGroupではPrivateからのアクセスを許可します。

**※検証の為の設定となります。

制御の設定は適宜変更して下さい。**

Inbound :ALL:10.0.1.0/24

制御の設定は適宜変更して下さい。**

Inbound :ALL:10.0.1.0/24

Outbound :ALL:0.0.0.0/0

20130422_01_04

・PublicのSecurityGroupには自社のIPからの22番ポート(SSH)を許可します。

Inbound :22:xxx.xxx.xxx.xxx/32

Inbound :22:xxx.xxx.xxx.xxx/32

Outbound :ALL:0.0.0.0/0

20130422_01_05

・PrivateのSecurityGroupにはPublicからのアクセスを許可します。

Inbound :ALL:10.0.0.0/24

Inbound :ALL:10.0.0.0/24

Outbound :ALL:0.0.0.0/0

20130422_01_06

3. それぞれにログインして確認

接続出来る環境が整ったので、PuTTYなどの接続ツールよりPublic・Private・Natのインスタンスに接続してみます。

まずはPublicのインスタンスに接続してみます。

1login as: ec2-user2Authenticating with public key "imported-openssh-key"34       __|  __|_  )5       _|  (     /   Amazon Linux AMI6      ___|\___|___|78https://aws.amazon.com/amazon-linux-ami/2013.03-release-notes/9There are 9 security update(s) out of 14 total update(s) available10Run "sudo yum update" to apply all updates.11$

問題なく接続出来ていますね。

次にPrivateに対してアクセスを行なってみます。

グローバルIPが無い為、Publicからローカルで接続してみます。

1# ssh -i xxxx.pem ec2-user@10.0.1.1892The authenticity of host '10.0.1.189 (10.0.1.189)' can't be established.3RSA key fingerprint is 15:2b:5c:a3:5e:ac:21:25:63:86:0d:36:aa:b9:0e:d0.4Are you sure you want to continue connecting (yes/no)? yes5Warning: Permanently added '10.0.1.189' (RSA) to the list of known hosts.67       __|  __|_  )8       _|  (     /   Amazon Linux AMI9      ___|\___|___|1011https://aws.amazon.com/amazon-linux-ami/2013.03-release-notes/12$

こちらも問題なく接続出来ました!

最後に今回の本題であるインターネットへの接続に関して試してみましょう。

tracerouteコマンドにて確認してみます。

※分かりやすいようにGoogleを宛先にしています。

Publicで叩いてみます。

Natインスタンスを通過せずにそのままインターネットに進んでいるのが分かります。

1$traceroute www.google.com2traceroute to www.google.com (173.194.38.81), 30 hops max, 60 byte packets34 1  ec2-175-41-192-56.ap-northeast-1.compute.amazonaws.com (175.41.192.56)  1.432 ms  1.642 ms  1.639 ms5 2  27.0.0.146 (27.0.0.146)  2.572 ms  2.748 ms  2.743 ms6 3  27.0.0.134 (27.0.0.134)  57.566 ms  57.321 ms  57.535 ms7 4  15169.tyo.equinix.com (203.190.230.31)  3.553 ms  3.276 ms  3.280 ms8 5  72.14.236.82 (72.14.236.82)  3.464 ms  3.393 ms  3.114 ms9 6  209.85.251.237 (209.85.251.237)  3.529 ms  3.408 ms  3.562 ms10 7  nrt19s17-in-f17.1e100.net (173.194.38.81)  3.688 ms  3.781 ms  3.383 ms

では、Privateで叩いてみます。

こちらでは1番初めの経路にNatインスタンス(ip-10-0-0-94.ap-northeast-1.compute.internal)を通過してインターネットに進んでいるのが分かります。

1$ traceroute www.google.com2traceroute to www.google.com (74.125.235.80), 30 hops max, 60 byte packets3 1  ip-10-0-0-94.ap-northeast-1.compute.internal (10.0.0.94)  2.329 ms  2.327 ms  2.389 ms45 2  ec2-175-41-192-58.ap-northeast-1.compute.amazonaws.com (175.41.192.58)  3.716 ms  3.958 ms  4.166 ms6 3  27.0.0.164 (27.0.0.164)  3.912 ms  3.903 ms  4.082 ms7 4  27.0.0.146 (27.0.0.146)  4.908 ms  4.645 ms  5.057 ms8 5  27.0.0.134 (27.0.0.134)  5.775 ms  5.682 ms  5.665 ms9 6  15169.tyo.equinix.com (203.190.230.31)  5.938 ms  5.345 ms  5.301 ms10 7  72.14.236.82 (72.14.236.82)  5.349 ms  5.141 ms  5.554 ms11 8  209.85.250.249 (209.85.250.249)  6.071 ms  6.255 ms  6.487 ms12 9  nrt19s01-in-f16.1e100.net (74.125.235.80)  5.442 ms  5.665 ms  5.652 ms

いかがでしたでしょうか?

NatインスタンスによってPrivateからインターネットにアクセスする模様が理解出来たかと思います。

今回のものは基本設定になりますので、要件などによってさらに詳細な設定を行うようにしましょう!

次回は『 Amazon VPC編~Natインスタンスについてパート③~ 』ということで、

Natインスタンスの冗長構成に挑戦してみたいと思いますので、お楽しみに!

この記事を書いた人

aws-recipe-user