Hanatare's PaPa

Make life a little richer.

Virtual Space of Hanatare's PaPa

人生をほんの少しだけ充実させる

【AWS】パブリックサブネットとプライベートサブネットを持つVPCの構築

f:id:nothing-title:20210126162751j:plain

インフラ環境はクラウドサービスにによって手軽に作成ができるようになりました。AWSはネットワークの知識がなくても簡単にインフラ設定ができますが、理解して使うのと、理解しないのでは全く違うので、実際に自分でVPCを作成しながら、理解を深めたいと思います。

記事のポイント
  • AWS VPCの作成をハンズオンで実践
  • パブリックサブネット・プライベートサブネットを理解
  • セキュリティグループを理解し、プライベートサブネットのEC2に接続

AWS VPCを作成

AWS VPC(Amazon Web Service Virtual Private Cloud)とは、ユーザー専用のプライベートなクラウド環境を提供するサービスになります。VPCでは主に以下のような設定ができます。

  • サブネットの設定
  • IP アドレス範囲の選択
  • ルートテーブルの設定
  • ネットワークゲートウェイの設定

まず。VPCを作りたいと思います。この手順で作る構成イメージは以下のようなイメージになります。今回はすべて東京リージョンで構築します。(リージョンの記載は省略させていただきます。)

構成図

VPCを作成した構成図

手順

VPC

VPCの画面から『VPCの作成』ボタンをクリックしてVPC作成画面にうつります。

VPCの作成

『名前タグ』、『IPv4 CIDR ブロック』、『IPv6 CIDR ブロック』、『テナンシー』を入力して『作成』ボタンをクリックします。『IPv4 CIDR ブロック』は以下の範囲で割当が可能で、/16〜/28のネットマスクCIDRブロックを入力します

     
  • 10.0.0.0 - 10.255.255.255 (10/8 プレフィックス)
  •  
  • 172.16.0.0 - 172.31.255.255 (172.16/12 プレフィックス)
  •  
  • 192.168.0.0 - 192.168.255.255 (192.168/16 プレフィックス)

名前タグ

区別しやすいVPCの名称を設定します。例えば、構築するシステム名などです。

IPv4 CIDR ブロック

割当可能なIPアドレスの範囲で/16〜/28のネットマスクCIDRブロックを設定します。

CIDRブロック設定時の注意点
  • 既に使っているアドレスや、これから使う予定のあるアドレスは避けてください。
  •  
  • 一度作成したアドレスブロックは変更ができません

IPv6 CIDR ブロック

IPv4よりもより大きい範囲のアドレスが必要な場合に設定しますが、よほど大きなシステム出ない限りにおいては、利用する機会はかなり低いです。基本的にはIPv4 CIDR ブロックを利用するで大丈夫です。

テナンシー

ハードウェアを専有するかどうかを設定します。クラウドにもどこかに物理ハードウェアが存在します。その物理ハードウェア上で様々なサービスが提供されますが、共有ハードウェアの場合は同一の場所に他のユーザーの資産も保存されます。『専有する』を選択するとそのシステム専用に物理ハードウェアが確保されます。ただし費用は発生します。コンプライアンスの問題など、要件上の問題がない限りにおいては共有で問題ありません。

VPCの作成完了

上記の画面が表示されれば、VPCが作成されたことになります。

サブネットの作成

VPC上にそのままEC2を作成することはできません。次はサブネットを作ります。

サブネットは必ずいずれかのアベイラビリティゾーン(AZ)に属する必要があります。今回は以下の図の通り、1つのパブリックサブネットと1つのプライベートサブネットをそれぞれ別のAZに属する形で作成します。

構成図

サブネット作成の構成図

手順

サブネット作成手順ではパブリック・プライベートの差は特にありません。そのため、同じ手順を2度繰り返して2つサブネットを作成してください。

サブネットの一覧

VPC ダッシュボードの画面で『サブネットの作成』をクリックします。

サブネットの作成

サブネット作成画面で、『名前タグ』、『VPC』、『アベイラビリティゾーン』、『IPv4 CIDR ブロック』を設定します。

名前タグ

区別しやすいサブネットの名称を設定することおすすめします。今回であれば、publicとprivateという記載があればわかりやすいかと思います。

VPC

サブネットを作成するVPCをリストから選択します。

アベイラビリティゾーン

AZは1つ以上のデータセンターで構成されています。リージョン内には複数のAZが存在ます。またAZは地理的・電源・ネットワーク的に離れています。またリージョン内のAZは高速の専用線でつながっているため、低レイテンシーを実現できます。今回、パブリックとプライベートのサブネットは別のAZを選択します。

IPv4 CIDR ブロック

VPCで決定したIPv4の範囲内でサブネット内の利用可能はIPの範囲を決定します。

サブネットの作成完了

上記の画面が表示されたら作成完了です。

インターネットゲートウェイの作成

サブネットを作っただけでは、まだそのサブネット上のサービスは外部との接続ができません。そのため、インターネットの出入り口となるインターネットゲートウェイをVPCに設置します。完成図は以下のとおりです。

構成図

インターネットゲートウェイ作成の構成図

手順

インターネットゲートウェイ

『インターネットゲートウェイの作成』ボタンをクリックしてインターネットゲートウェイを作成を開始します

インターネットゲートウェイの作成

『名前タグ』を入力し、『インターネットゲートウェイの作成』をクリックします

インターネットゲートウェイ(VPCにアタッチ)

作成したインターネットゲートウェイを選択し、『アクション』リストから『VPCにアタッチ』をクリックします

VPCにアタッチ

アタッチするVPCを選択し、『インターネットゲートウェイのアタッチ』をクリックし、VPCにインターネットゲートウェイをアタッチします

ルートテーブルの作成

インターネットゲートウェイは入り口で、作成しただけでは、どのIPアドレス宛の通信をインターネットゲートウェイに向ければよいかがわからない状態です。そのためルートテーブルを設定して、パブリックサブネットからの通信においてはインターネットゲートウェイを通して外部と通信できるように設定をします。構成は下の図のようになります。

構成図

ルートテーブル作成の構成図

手順

ルートテーブルの一覧

VPC ダッシュボードから『ルートテーブル』をクリックし、『ルートテーブルの作成』ボタンをクリックします

ルートテーブルの作成

『名前タグ』と『VPC』を設定し、『作成』をクリックします

ルートテーブルの作成完了

指定したVPCで使えるルートテーブルが作成されます(まだ、作っただけで、設定はしていない状態です)

ルートテーブルへのサブネットの割り当て

ルートテーブルはVPC作成時にデフォルトで作成されます。サブネット作成すると、このデフォルトで作成されるルートテーブルが自動で割り当てられます。今回のように複数のサブネットがあり、それぞれ通信ルートが異なる場合は、デフォルトのルートテーブルを使うのではなく、要件に応じたルートテーブルを作成し、適切なサブネットに割り当てるようにします。

ルートテーブル作成時はVPC内の通信ルートしか登録されていません。次の手順では、ルートテーブルにインターネットゲートウェイへの通信設定をし、パブリックサブネットに適用したいと思います。

手順

ルートテーブルの一覧(編集)

作成したルートテーブルを選択し、画面下部にある『ルート』タブを選択し、『ルートの編集』ボタンをクリックします

ルート編集

ルート編集画面で『ルートの追加』をクリックし、『送信先』、『ターゲット』を設定し、『ルートの保存』をクリックします

送信先

送信先には0.0.0.0/0のデフォルトルートを設定しておくと適用したサブネット内の全ての通信がインターネットゲートウェイに向くようになります。

ターゲット

AWS上の通信に関わるサービスのリストが表示されます。今回は『Internet Gateway』を選択すると自動的に利用可能なインターネットゲーウェイの一覧が表示されます。表示された一覧から作成したインターネットゲートウェイを選択して、向き先を決定します。

ルート編集完了

上記画面でルートテーブルのルートの編集は完了です。

これでルートテーブルの作成とルールの作成ができました。次は作ったルートテーブルをサブネットと関連付けて利用できるようにします。

ルートテーブル(サブネット)

作成したルートテーブルを選択し、画面下部にある『サブネットの関連付け』タブを選択し、『サブネットの関連付けの編集』ボタンをクリックします

サブネットの関連付けの編集

サブネットの関連付けの編集画面でルートテーブルを適用したいサブネットを選択し、『保存』ボタンをクリックします。
※今回はパブリックサブネットの方を選択してください

パブリックIPの自動で割りを設定

次にEC2を作成しますが、事前にパブリックIPを自動で割り当てられるようします。

新規に作成したサブネットの初期設定では、パブリックIPは自動割当は有効になっていません。そのため、サブネット配下にEC2を作成しても自動的にパブリックIPは割り当てられないため、EC23に対してローカルPCから接続ができません。

手順

EC2の一覧

パブリックサブネット側を選択し、画面下部の『説明』タブにある『パブリックIPv4アドレスの自動割り当て』が『いいえ』になっていることを確認します

EC2の一覧(自動IP割り当て)

『アクション』をクリックし、『自動割り当てIP設定の変更』をクリックします

自動割り当てIPの設定

『IPv4の自動割り当て』欄にチェックし、『保存』ボタンをクリックします

サブネット内にEC2を作成

続いてパブリックサブネット、プライベートサブネットにEC2インスタンスを作成していきます。構成イメージは以下のとおりです。

構成図

EC2の作成の構成図

パブリックサブネット、プライベートサブネットそれぞれの中に作るEC2の作成方法は概ね同じ手順になるため、違いは手順の中で解説します。

手順

EC2一覧

『インスタンス』をクリックし、『インスタンスの追加』ボタンをクリックします

AMI

起動するマシンイメージを選択します。今回は無料枠のAmazon Linuxを選択します

インスタンスタイプの設定

次にインスタンスタイプを選択します。今回はここでも無料枠のインスタンスタイプを選択して『次のステップ』をクリックします。

インスタンスの詳細設定

インスタンスの詳細画面の設定画面の設定をします。設定内容はデフォルトのままで良いですが、ネットワークとサブネットは、作成したパブリックサブネット、もしくはプライベートサブネットを設定します

ストレージの追加

ストレージの追加画面でストレージを設定します。EBSボリュームの選択については、別途まとめたいと思います。

タグの追加

作成するインスタンスにタグを設定します。『タグの追加』をクリックし、『キー』と『値』を設定し、『次のステップ:セキュリティグループの設定』をクリックします。

セキュリティグループの追加

セキュリティグループの設定を行います。今回はパブリックとプライベートそれぞれのセキュリティグループ新しく作っておきます。設定は後述します。

『新しいセキュリティグループを作成する』を選択肢、セキュリティグループ名を入力し、『確認と作成』ボタンをクリックします。

インスタンス作成の確認

インスタンス作成の画面で設定内容を確認し、『起動』をクリックし、インスタンスを作成します

EC2にSSHで接続する

インスタンスが起動したらEC2への接続確認を行います。

手順

以下のコマンドを使ってSSHへの接続確認をします

ssh -i 保存した秘密鍵の場所 ec2-user@作成したEC2のパブリックIP

パブリックサブネット配下のEC2に接続ができたことが確認できればOKです。そして、プライベートサブネットに接続できなければ、OKです。

次はパブリックサブネットのEC2からプライベートサブネットのEC2へ接続できるようにします。

Macを使っている人の場合は以下のワーニングが表示され接続できないかもしれません。その場合は、秘密鍵の権限を以下のコマンドで変更してください。

chmod 400 保存した秘密鍵の場所

WARNING:UNPROTECTED PRIVATE KEY FILE!

セキュリティグループの設定

プライベートサブネットはインターネット(外部)とつながっていないため、ローカルPCから接続できません。そのため次はプライベートサブネットへ接続ができるように設定します

セキュリティグループとはファイヤーウォールのようなものです。ここではプライベートサブネット上のEC2に対して許可する要求(インバウンド)を設定します。構成イメージは以下になります。

構成図

セキュリティグループ修正後の構成図

手順

セキュリティグループの一覧

セキュリティグループ画面を表示し、プライベートサブネット用のセキュリティグループを選択します。画面下部の『インバウンドルール』タブをクリックし、『インバウンドルールを編集』ボタンをクリックします

インバウンドルールの編集

インバウンドルールの編集画面からルール設定を行います。今回はパブリックサブネット上のネットワークからのSSH接続とpingが通るようにします。『タイプ』は『SSH』と『すべてのICMP-IPV4』を選択します。『ソース』のところでIPを『パブリックサブネット』のIPを設定し、『ルールの保存』をクリックして完了です。

パブリックサブネットEC2にプライベートサブネットEC2の秘密鍵を配置する

セキュリティグループでパブリックサブネットからのSSHを許可したので、あとは接続をするための準備です

プライベートサブネットにEC2インスタンスを作成した際にキーペアをダウンロードしていると思いますので、そちらを使います。

まずはパブリックサブネット上のEC2に以下のコマンドで接続します。

ssh -i 保存した秘密鍵の場所 ec2-user@作成したEC2のパブリックIP


ssh -i 保存した秘密鍵の場所 ec2-user@作成したEC2のパブリックIP

パブリックインスタンスにSSH接続

続いて以下のコマンドで秘密鍵を作成します。(viコマンドの説明は割愛します。)

vi 秘密鍵の名前.pem

プライベートサブネット配下のEC2を作成した際にダウンロードした秘密鍵をローカルPCのエディタで開きその内容をコピーし、パブリックサブネットEC2上に先程作成した、秘密鍵に貼り付け保存します。

秘密鍵の作成

最後に秘密鍵にに対して以下のコマンドを実行して権限変更を行います。400といのは所有者に読み込み権限のみを与えるものです。

chmod 400 秘密鍵.pem

秘密鍵の権限編集

プライベートサブネットのEC2接続する

最後に接続確認をします

手順

以下のコマンドをパブリックサブネット上のEC2で実行し、プライベートサブネット上のEC2への接続を試みます。

ssh -i 保存した秘密鍵の場所 ec2-user@作成したEC2のプライベトートIP

プライベートEC2にSSH接続

上記のように接続ができれば、完了です。

まとめ

今回はVPCを作り、その配下にパブリックサブネットとプライベートサブネットを作成しました。構成イメージを書きながら手順を進めていくことで、環境がどういう状態なのかを視覚的にわかりやすくしたつもりです。EC2やセキュリティグループ周りについては省略している部分も多いので今後の記事の中でもう少しEC2やセキュリティグループといったところも記事にしていきたいと思います。