LoginSignup
58
57

More than 5 years have passed since last update.

素人がvpc(仮想プライベートクラウド)でpublicとprivateのサブネットの環境を作るよ!

Last updated at Posted at 2015-02-05

pp_img_3_col_VPC_1_378x171.png

・・・と、題名は書いてみたものの、2日間悩みました。一番の問題は、私自身、ネットワークがかなり弱く、言葉でやりたいことを表現すると。

  • WEBとかDBとかにグローバルIPをもたせたくない
  • グローバルIPはいらないんだけど、プライベートIPしかもっていないサーバからもインターネットには接続させたい
  • EC2 再起動毎に、IP ADDRESSが変わるのが許せないので、固定IPにしたい

です。いまさらながら、VPCでれば、それが実現できると聞きまして、やって見た、作業証跡になります。他のサイトの例を参考にして試行錯誤はしていたのですが、皆様のレベルが高すぎて、あたりまえの部分があえて省略している多く、そのあたりまえの部分もわからない僕には、一からつくるときのパターンが知りたくて、あえて手順をおこしました。なので、若干というかかなり自分用のメモに近いと思います。セキュリティの観点から・・とか・・実装的には・・・とかかなり無視しておりますので、そのあたりのツッコミは無しでお願いします。

とりあえず!

この手順どおりやれば、15分でVPCが実現できるよー!ってだけで、あとの細かい設定は、調整してみてくださいね。

VPC の設定

設定手順

本当にゼロベースでVPCを作る手順になりますので、もうすでに設定が完了している箇所についてはいろいろ読み飛ばしてください。
また、EIPとか、VPCとか、NATとかの説明はこちらでは説明しません。だって自分もよくわかってないから・・そのあたりは勘弁してください。

VPC Dashboard から「START VPC Wizard」を選択

2015-02-04_114328.jpg

「VPC with Public and Private Subnets」 を選択し、「Select」ボタンをクリック

2015-02-04_114456.jpg

下記の通り設定しました

2015-02-04_114640.jpg

  • 「VPC name」は任意でMyVPC
  • AZは、1aに(10.0.0.0/24,10.0.1.0/24)
  • 「Key pair」は、登録時に設定したもの

以上で、基本的な構成が完了します。楽ですね。

再び、VPC Dashboard へ

じゃあ、どんなものが、どうできたかを確認してみたいと思います

「Your VPCs」

2015-02-04_114834.jpg

「Subnets」

10.0.0.0/24 および 10.0.1.0/24 の2のSubnetができているのがわかるかと思います

Private

2015-02-04_114916.jpg

Public

2015-02-04_114954.jpg

「Route Tables」

2015-02-04_115047.jpg
2015-02-04_115047.jpg

「Internet Gateways」

2015-02-04_115218.jpg

「Elastic IPs」

2015-02-04_115332.jpg

「Create Security Group」ボタンをクリック

上記までは、ウィザードのデフォルト値ですが、ここだけ独自に作成しました、今回設定したのは、ウィザードで自動生成された、NATインスタンスに対するSGです
2015-02-04_115415.jpg

下記通り設定しました

2015-02-04_115514.jpg

生成されたSGの設定をします

端的に説明すると、入力リクエストは何を許可するか、出力は何を許可するかの設定ですね。EC2関係なければ、FIREWALL(IPTABLESの設定)だと思ってくれれば良いのではないかと思います

「Inbound Rules」

2015-02-04_115635.jpg
2015-02-04_120252.jpg

「Outbound Rules」

2015-02-04_120340.jpg

EC2 Dash board へ

「Instances」

見慣れないインスタンスができていると思います。これが、ウィザードで生成された、NATインスタンスです。
2015-02-04_120709.jpg

このままだと、なんのインスタンスだかわかんなくなりそうなので、Natというタグをつけました

2015-02-04_120803.jpg

ちょっと確認

送信元のパケットをチェックする?かな?

2015-02-04_120939.jpg

2015-02-04_121037.jpg
NATの場合は、「チェックしない」の設定になっていることを確認するみたいです。なので、Statusが「Disabled」になっていることを確認して、Cancelをクリックします

セキュリティグループの変更

VPCの場合は、セキュリティグループを変更できます。逆にEC2(という表現で良いのか?)では、変更できないらしいです
2015-02-04_121151.jpg
さきほど作成した、NATSGグループに変更します
2015-02-04_121300.jpg
NATSGの内容はこんな感じですね。
* PORT 22は、全部受ける
* http は、「Private Subnet」からのリクエストのみ受け付ける
* https も、「Private Subnet」からのリクエストのみ受け付ける
2015-02-04_121358.jpg

以上で、すくなくとも、「vpc(仮想プライベートクラウド)でpublicとprivateのサブネットの環境を作る」というところまでは実現できました。たぶん・・・

Private Subnet 環境に、EC2 インスタンスを作ってみよう!!

長々と書きますが、これから作成するインスタンスは、【グローバルIPを所有していないインスタンス】になります。職場でも、ご自宅でもインターネットの環境がある方ってPC自体にグローバルIPが設定されている人はいないですよね。これから実現したいことは、まさに、皆様のPC環境(と似たようなもので) ルータを介して、プライベートIPアドレスなのに外部のインターネットに接続できるようにする設定です。ご自宅のインターネット環境でいいますと、きっとルータといわれるものがありますよね。いままで作った環境がまさにそれで、外部から接続できなくするための設定です。

前置きはさておき、EC2インスタンスを作ってみます。これを見ている皆様はEC2に関しては何回も作っていると思うので、いろいろ端折ります。

10.0.1.0/24 サブネットにインスタンスを作成する

VPC Dashboard

VPC Dashボードから、「Launch EC2 Instasnce」ボタンをクリックします
2015-02-04_124328.jpg

いろいろ説明すっとばします。

2015-02-04_124400.jpg

2015-02-04_124416.jpg

Step3. Configre Instance Details

2015-02-04_124624.jpg
* Network : 作成したVPCインスタンスを選択
* Subnet : 10.0.1.0 (Private Subnets) を選択
* Network Interfaces : 固定IPを設定

以降もいろいろ説明すっとばします。

2015-02-04_124641.jpg

2015-02-04_124748.jpg

SGの設定

Public SubnetからのhttpのリクエストをACCEPTするように設定します

Inbounds

2015-02-04_125351.jpg

2015-02-04_125456.jpg

これですべて設定は終わりです!!

接続してみよう!!

接続してみよう!といっても、Private Subnetなので接続できるわけがない!wということで、じゃあ、どうやって接続するのか
という話しになりますが、NASにSSHしてから接続されたNATから再度接続する感じになります。ちょっとわかりづらいですかね・・

NATにsshで接続した状態から・・・

Last login: Wed Feb  4 15:00:36 2015 from v157-7-64-118.z1d9.static.cnode.jp

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
[ec2-user@ip-10-0-0-132 ~]$ 

NATを介してさらに、プライベートサブネットのインスタンスへ接続します

[ec2-user@ip-10-0-0-132 ~] ssh -i /usr/local/aws/Glueth_Private_Key.pem ec2-user@10.0.1.100
Last login: Thu Feb  5 01:22:27 2015 from ip-10-0-0-132.ap-northeast-1.compute.internal

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
[ec2-user@ip-10-0-1-100 ~]$ 

Private Subnetから、curl でインターネットに出れるか確認してみます。

いけましたね(^_^)

[ec2-user@ip-10-0-1-100 ~]$ curl https://qiita.com/                                                                                    
<!DOCTYPE html><html xmlns:og="http://ogp.me/ns#"><head><meta charset="UTF-8" /><title>Qiita - プログラマの技術情報共有サービス</title><meta content="width=device-width,height=device-height,initial-scale=1" name="viewport" /><meta content="Qiitaは、プログラマのための技術情報共有サービスです。 プログラミングに関するTips、ノウハウ、メモを簡単に記録 &amp;amp; 公開することができます。" name="description" /><meta content="summary" name="twitter:card" /><meta content="@Qiita" name="twitter:site" /><meta content="Qiita - プログラマの技術情報共有サービス" property="og:title" /><meta content="website" property="og:type" /><meta content="https://qiita.com/" property="og:url" /><meta content="https://cdn.qiita.com/assets/qiita-fb-982b84457c670df6145579238c40a453.png" property="og:image" /><meta content="Qiitaは、プログラマのための技術情報共有サービスです。 プログラミングに関するTips、ノウハウ、メモを簡単に記録 &amp;amp; 公開することができます。" property="og:description" /><meta conte
58
57
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
58
57