Amazon VPCとEC2を利用して仮想プライベート環境を構築(前編)

■　Amazon VPC って何？

皆さんはVPCと聞いて、何を思い浮かべるでしょうか？全く判らないが大半で、多少知っている方だと「ああ、Virtual PC(仮想OS)でしょ？」と言われます。仮想化の世界では知らない人はいない、vmware社のESXiが有名ですね。今回はそれとは全く…では無いのですが、異なるサービスを紹介しつつどんな風に使ったらいいの？というレビューをさせて頂きます。

EC2やIoT、そういったOS側のレビューはよく見かけるのですが、Cloudfront等のネットワーク・インフラ系は専門知識を要する為、技術資料も余り多くありません。最低限のネットワーク知識、ファイアーウォールの知識、更にOSやネットワーク設計の知識と、様々な知識を必要とします。

さて、Amazon VPCは「Amazon Virtual Private Cloud」の略です。仮想空間上に、自分だけが利用できるプライベートネットワークをAmazon AWS上に構築しつつ、AWSの他のサービスと連携してスケーラブル(サーバを増やしたり減らしたり)な環境を構築できます。と言ってもピンとこないですね。

ものすごくざっくり言うと、

「自宅にネットワークスイッチとパソコンを用意して、
　それらを複数繋いで隔離されたネットワーク環境を作れる」

のです。AWS上に。

これって凄い事です。なんせAWS自体は基本的にクラウド上にあって、インターネット経由で利用する訳です。それなのにプライベート？外界から遮断されたネットワークを構築？と思うのも不思議ではありません。このVPCがどの様な物なのか、解説していきたいと思います。


■　Amazon VPC の概略

まず、大前提として Amazon VPC は Amazon EC2(仮想サーバー) と連携して動きます。仮想サーバーでネットワークの設定をする際に、VPCと接続する訳です。

現実世界で考えてみましょう。インターネットに接続されているスイッチングハブと、ローカルにしか繋がっていないスイッチングハブがそれぞれある状態です。そこにサーバーがあり、インターネットに接続されているスイッチングハブにLANケーブルを差してネットに接続して運用します。ところが開発環境や会計サーバ等、インターネットに接続したくないサーバも当然ある訳です。これらが複数あってネットワークで繋ぎたい場合、ローカルにしか繋がっていないスイッチングハブにLANケーブルを差します。これはインターネットに出る事ができません。

この後者をクラウド上に構築する事ができるサービスが、Amazon VPC だと思ってください。つまり、VPC単体ではLANケーブルとスイッチングハブを用意するだけなので何もできません。EC2という仮想サーバと繋いで、始めて意味を為す訳です。何となくぼんやりと概要が判ってきましたか？

VPCの詳細をもう少し説明すると、このVPCネットワークは他の仮想ネットワークから完全に独立しています。完全に独立しているという事は、ネットワークアドレスは他者と被る事は無いので、自分の好みで自由に設定できます。

![20180220_01.png](https://qiita-image-store.s3.amazonaws.com/0/239605/7c24c939-4081-d729-fd09-4c3d515f9fea.png)

この図はVPCのページにあります。AWSという全体のサービスの中に、VPCという自分だけの独立したネットワーク空間を作成しています。そのネットワークの中で、自由にEC2のインスタンスをいくらでも起動できる訳です。ちょっとデータセンターの知識がある方だと、「プライベートクラウド」という言葉を聞いた事があると思いますが、ほぼそれと同一の物だと理解してください。


■　Amazon VPC を実際に設定する

今回はAmazon VPC内部でEC2インスタンス(Windows)を起動してみましょう。後編では、それを企業ネットワークのルーターとVPN接続する所まで設定してみます。コンソールへの登録やログイン方法は当然判っているものとして、割愛させて頂きます。それから、本当はVPNを構築する関係上ネットワーク設計をしないといけないのですが、難しいので割愛します。大凡VPCのウィザードは 10.*.*.* というアドレスを作成するので、受け側ネットワークと被る可能性は低いと思います。

まずはコンソールにログインして、「サービス」の中の「ネットワーキング ＆ コンテンツ配信」の「VPC」を選択します。右側に分かりやすく「VPCウィザードの開始」というボタンがあるので、こちらをクリックする…前にリージョンを変更します。リージョンとは何ぞや？簡単に言うとデータセンターのある場所です。ブログ主は当然日本なので日本でVPCを作成しますが、デフォルトでは米国東部(バージニア北部)になっています。

![20180220_03.png](https://qiita-image-store.s3.amazonaws.com/0/239605/4e67e1d5-6bb1-f24f-4823-b7214961d08c.png)

これを「アジアパシフィック(東京)」に変更します。

後程説明致しますが、米国東部(バージニア北部)の方が断然安いです。ただレイテンシ(通信反応速度)が大体200～300msと相当遅い部類になります。アジアパシフィック(東京)だと、平均9～20msなので10倍程早い計算になります。それ程頻繁に使わなければ海外でも良いですが、ターミナルサービスやプライベート環境を頻繁に弄る様になると、このレイテンシの遅さではいちいちストレスになるので、「アジアパシフィック(東京)」でVPCを作成する事をオススメ致します。

そうしたら「VPCウィザードの開始」を押します。

【ステップ1: 1個のパブリックサブネットを持つVPC】という説明が出てきますが、そのまま「選択」を押します。

![20180220_04.png](https://qiita-image-store.s3.amazonaws.com/0/239605/d5e5cfbd-29f6-59bc-97aa-ccb99ee74636.png)

【ステップ2】漸くネットワークらしい設定画面が出てきました。

【IPv4 CIDR ブロック】これはVPC全体のアドレス空間です。
この空間内部でパブリックサブネットを作成していきます。初期は 10.0.0.0/16 となっていますが変更する必要は無いでしょう。

【IPv6 CIDR ブロック】は基本的に使う人だけが設定すれば良いので、今回は無しでいきます。

【VPC名】 は自由に付けてください。今回は 「kamuikotan」 と名付けてみました。

次に【パブリックサブネットの IPv4 CIDR】です。これが空間内部を細切れに使う為に必要な設定です。インスタンスを強烈に起動しなければ、/24 の251台で設定すれば良いと思います。今回は 10.0.1.0/24 とつけてみました。

【アベイラビリティーゾーン】は、考え方的にはVLANが近いです。
アベイラビリティーゾーンごとに1つ以上のサブネットを追加する事ができ、
他のアベイラビリティーゾーンで発生した障害から切り離す事ができます。
今回は「ap-northeast-1a」を選択しました。

【サブネット名:】は自由に付けてください。今回は「ciset01」と名付けました。

![20180220_05.png](https://qiita-image-store.s3.amazonaws.com/0/239605/b2f5a7e2-170e-5388-5667-aaa1b3ea8917.png)

そうしたら、右下の「VPCの作成」ボタンを押します。いくつかの処理が自動的に行われ、【VPCが正常に作成されました】と表示されます。

![20180220_06.png](https://qiita-image-store.s3.amazonaws.com/0/239605/c0df16aa-0f4a-e471-62b1-70f2f8bda9df.png)


これでVPCの作成は完了です。「OK」を押すとVPC詳細ページに戻ります。
kamuikotan VPCが作成され、VPC IDが自動的に割り振られました。

![20180220_07.png](https://qiita-image-store.s3.amazonaws.com/0/239605/2dc379c9-013d-bed6-eca1-919abe61e926.png)


■　まとめ

今回はここまでです。VPCの作り方ですが、ウィザード形式なのでとても簡単です。ネットワーク的な知識は多少必要ですが、気にしなければポチポチと押していくだけでクラウド上にプライベートネットワークができてしまいます。

しかし、まだガワができただけなので、後編ではこのガワの中でEC2インスタンスを起動してみたいと思います。