こんにちは! JQです。
前回は『Amazon VPC編~Natインスタンスパート①~』ということで、AWS管理コンソールでNatインスタンスの構築をしてそれを確認するまでをお話しました。
今回は『Amazon VPC編~Natインスタンスについてパート②~』と題して、Natインスタンスのスクリプトを使って起動して、そのNatインスタンスにアクセスするまでを記述したいと思います。
っと、その前にAWSの更新情報をご紹介します。
今回AWS EC2 コンソールにTagsが新しく追加されました!
Tagsページを利用する事で、今までコンソールでは1つ1つ行うしかなかったタグの操作が1度で出来るようになったり、関連づけられたタグを基にEC2のリソースを閲覧したりする事が可能となります。
Tagでの管理がさらに簡単にできますね!
さらに詳しい情報がお知りになりたい方は、公式ブログの「【AWS発表】EC2コンソールに新しいタグ管理ツールが追加」をご覧下さい。
さて、ここから本題に入りまして、前回構築したVPCのNatインスタンスに実際に接続して確認していきたいと思います。
パート①ではテンプレートを利用して構築したNatインスタンスを確認するところまでを紹介しました。
今回は、簡単なスクリプトでインスタンスを立てて実際に接続確認をしていきましょう。
1. インスタンスの起動
まずはCommand Line Tool , AWS SDK ,WEB Consoleなど、自分が好きな物でPublicとPrivate双方にインスタンスを作成しましょう。
今回は分かりやすいよう、簡単なスクリプトを作成してみました。
指定したVPCの全てのSubnetにインスタンスを1つ立てるスクリプトになります。
※KeyとSecurityGroupがない場合は事前に作成をしましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#!/usr/bin/env ruby require 'rubygems' require 'aws-sdk' ec2 = AWS::EC2.new( :ec2_endpoint => 'ec2.ap-northeast-1.amazonaws.com', :access_key_id => ‘xxxxxxxxxxx’, :secret_access_key => 'xxxxxxxxxxxxx' ) instances=Hash::new p "loading subnets" ec2.vpcs["vpc-xxxxxxxx"].subnets.each {|s| p s.id instances[s.id] = ec2.instances.create( :image_id => "ami-173fbf16", # => AmazonLinux :subnet => s.id, :key_name => "xxxxxx", :security_group_ids => "sg-xxxxxx") } sleep 60 instances.each_pair {|s,i| sleep 60 while i.status == :pending p "#{i.id} => #{i.status}" } p "Compleate!!" |
AWS管理コンソールから確認すると、以下のようにPublicとPrivateの両方に作成されました。
2. インスタンスの設定
※この手順2での設定については、AWS管理コンソールよりおこないます。
まずは、Public側のインスタンスにEIPを付与してアクセス出来るようにします。
ただ、このままでは接続は出来ないのでSecurityGroupの設定をします。
・Natインスタンスが所属するSecurityGroupではPrivateからのアクセスを許可します。
※検証の為の設定となります。
制御の設定は適宜変更して下さい。
Inbound :ALL:10.0.1.0/24
Outbound :ALL:0.0.0.0/0
・PublicのSecurityGroupには自社のIPからの22番ポート(SSH)を許可します。
Inbound :22:xxx.xxx.xxx.xxx/32
Outbound :ALL:0.0.0.0/0
・PrivateのSecurityGroupにはPublicからのアクセスを許可します。
Inbound :ALL:10.0.0.0/24
Outbound :ALL:0.0.0.0/0
3. それぞれにログインして確認
接続出来る環境が整ったので、PuTTYなどの接続ツールよりPublic・Private・Natのインスタンスに接続してみます。
まずはPublicのインスタンスに接続してみます。
1 2 3 4 5 6 7 8 9 10 11 |
login as: ec2-user Authenticating with public key "imported-openssh-key" __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2013.03-release-notes/ There are 9 security update(s) out of 14 total update(s) available Run "sudo yum update" to apply all updates. $ |
問題なく接続出来ていますね。
次にPrivateに対してアクセスを行なってみます。
グローバルIPが無い為、Publicからローカルで接続してみます。
1 2 3 4 5 6 7 8 9 10 11 12 |
# ssh -i xxxx.pem ec2-user@10.0.1.189 The authenticity of host '10.0.1.189 (10.0.1.189)' can't be established. RSA key fingerprint is 15:2b:5c:a3:5e:ac:21:25:63:86:0d:36:aa:b9:0e:d0. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.0.1.189' (RSA) to the list of known hosts. __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2013.03-release-notes/ $ |
こちらも問題なく接続出来ました!
最後に今回の本題であるインターネットへの接続に関して試してみましょう。
tracerouteコマンドにて確認してみます。
※分かりやすいようにGoogleを宛先にしています。
Publicで叩いてみます。
Natインスタンスを通過せずにそのままインターネットに進んでいるのが分かります。
1 2 3 4 5 6 7 8 9 |
$traceroute www.google.com traceroute to www.google.com (173.194.38.81), 30 hops max, 60 byte packets 1 ec2-175-41-192-56.ap-northeast-1.compute.amazonaws.com (175.41.192.56) 1.432 ms 1.642 ms 1.639 ms 2 27.0.0.146 (27.0.0.146) 2.572 ms 2.748 ms 2.743 ms 3 27.0.0.134 (27.0.0.134) 57.566 ms 57.321 ms 57.535 ms 4 15169.tyo.equinix.com (203.190.230.31) 3.553 ms 3.276 ms 3.280 ms 5 72.14.236.82 (72.14.236.82) 3.464 ms 3.393 ms 3.114 ms 6 209.85.251.237 (209.85.251.237) 3.529 ms 3.408 ms 3.562 ms 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 2 3 4 5 6 7 8 9 10 11 |
$ traceroute www.google.com traceroute to www.google.com (74.125.235.80), 30 hops max, 60 byte packets 1 ip-10-0-0-94.ap-northeast-1.compute.internal (10.0.0.94) 2.329 ms 2.327 ms 2.389 ms 2 ec2-175-41-192-58.ap-northeast-1.compute.amazonaws.com (175.41.192.58) 3.716 ms 3.958 ms 4.166 ms 3 27.0.0.164 (27.0.0.164) 3.912 ms 3.903 ms 4.082 ms 4 27.0.0.146 (27.0.0.146) 4.908 ms 4.645 ms 5.057 ms 5 27.0.0.134 (27.0.0.134) 5.775 ms 5.682 ms 5.665 ms 6 15169.tyo.equinix.com (203.190.230.31) 5.938 ms 5.345 ms 5.301 ms 7 72.14.236.82 (72.14.236.82) 5.349 ms 5.141 ms 5.554 ms 8 209.85.250.249 (209.85.250.249) 6.071 ms 6.255 ms 6.487 ms 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インスタンスの冗長構成に挑戦してみたいと思いますので、お楽しみに!