LoginSignup
1
0

More than 1 year has passed since last update.

VPCに関わる技術練習

Last updated at Posted at 2022-04-06

初めに

今回、AWS VPC周り主な機能について、ご説明させていただきます。

主な内容

  • Internet GateWay(IGW)
  • Virtual Private GateWay
  • Routing Table
  • Network Access Control lists(NACL)
  • Security Group(SG)
  • Public Subnets
  • Private Subnets
  • Nat Gateway
  • Customer GateWay
  • VPC Endpints

構成図

截屏2022-04-06 19.15.35.png

VPCを構築

 以下の項目を設定する

  • vpc名前
  • Ipv4CIDRブロック
    ※ AWSルールによりipv4CIDRの設定範囲は16〜28間の数字です。
    截屏2022-04-05 00.03.14.png
IPv4 CIDR
10.0.0.0/27
ネットマスク:11111111.11111111.11111111.11100000
使用可能なIP:2^5=32個

VPCのルートテーブルとNACL確認

VPCを作成すると自動的にvpcのメインルートテーブルとメインネットACLが作成してくれる
截屏2022-04-04 19.03.16.png

ルートテーブル

各ルートテーブルには、VPC 内で通信を有効にするローカルルートが含まれます。このルートは、デフォルトですべてのルートテーブルに追加されます。ルートを変更または削除することはできません。

截屏2022-04-04 19.05.23.png

NACL(Network Access Control List)

デフォルトのネットワーク ACL は、すべてのトラフィックが、関連するサブネットを出入りすることを許可するように設定されます。各ネットワーク ACL にも、ルール番号がアスタリスクのルールが含まれます。このルールによって、パケットが他のいずれの番号のルールとも一致しない場合は、確実に拒否されます。

NACLインバウンドルール

截屏2022-04-04 19.08.19.png

アウトボウンドルール

截屏2022-04-04 19.20.26.png

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

截屏2022-04-05 00.23.24.png

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

截屏2022-04-04 19.25.44.png

インターネットゲートウェイをvpcルートテーブルにルート追加

截屏2022-04-04 19.28.35.png

サブネットを作成

vpc ipv4CIDR
ネットマスク:11111111.11111111.11111111.11100000
使用可能IP範囲
11111111.11111111.11111111.11100000から
11111111.11111111.11111111.11111111まで
全部32個IPが使用可能です。
二つサブネットを作成します。半分半分で分けていきます。

private subnet

private subnet
11111111.11111111.11111111.11100000から
11111111.11111111.11111111.11101111まで
使用可能IP数:2^4 =16個
ブネットに割り当てる IP アドレスをすべて使用できません、各サブネットにおいて、Amazon が先頭の 4 つの IP アドレスを確保し、最後の 1 つの IP アドレスは、IP ネットワーキングの目的で確保されます。 
使用できるIPアドレス数は11個です
ネットマスク:10.0.0.0/28

截屏2022-04-05 00.42.43.png

public subnet

11111111.11111111.11111111.11110000から
11111111.11111111.11111111.11111111まで
ネットマスク:10.0.0.16/28
論理使用可能IP数:2^4 =16個,AWSに5個専用IPを引いて、実は使用可能のIP数は11個です。

截屏2022-04-05 13.01.54.png

サブネットのルートテーブルを設定

パブリックサブネットとプライベートサブネットの違いは、インターネットゲートウェイとルーティングできるかどうかです。

private subentの専用ルートを設定

ルート

截屏2022-04-05 13.19.17.png

截屏2022-04-05 13.09.05.png

public subnetの専用ルートを設定

截屏2022-04-05 13.23.40.png

public subnetにEC2を起動するために、準備こと

  • SG(security group)

デフォルトの VPC および作成した VPC には、デフォルトのセキュリティグループが適用されます。リソースによっては、リソースの作成時にセキュリティグループを関連付けない場合、デフォルトのセキュリティグループが関連付けられます。例えば、EC2 インスタンスを起動時にセキュリティグループを指定しない場合、デフォルトのセキュリティグループが関連付けられます。

デフォルトのセキュリティグループのルールは変更できます。デフォルトのセキュリティグループを削除することはできません。デフォルトのセキュリティグループを削除しようとした場合、Client.CannotDelete エラーが発生します。

今回カスタマイズセキュリティグループを使用させていただきます。

SG情報

アウトバウンドルール

截屏2022-04-05 13.56.17.png

アウトバウンドルール

截屏2022-04-05 13.57.41.png

public subnetにEC2を起動

  • ゴール:EC2にApacheをインストールして、デフォルトページを切り替え

user data

#!/usr/bin/env bash
su ec2-user
sudo yum install httpd -y
sudo service httpd start
sudo su -c "cat > /var/www/html/index.html <<EOL
<html>
<head>
	<meta charset="utf-8">
	<title> call to Arms</title>
	<style type="text/css"></style>
</head>
<body>
	<img src="https://media.giphy.com/media/rgTB82z9P63fTGhxQo/giphy.gif" height="100%">

</body>
</html>
EOL"
1.AMIの選択

今回1番目のAMIを選択します
截屏2022-04-05 14.56.34.png

2.インスタンスタイプを選択

t2.microを選択して、次のステップに移します。
截屏2022-04-05 15.40.38.png

3.インスタンスの設定
  • ネットワークにvpcを選択
  • サブネットに作成したpublic subnetを選択
  • 高度な詳細に事前に用意したユーザーデータを貼付します。
  • 他の設定は全部デフォルトにします。
    截屏2022-04-05 16.44.21.png

截屏2022-04-05 15.54.33.png

4.ストレージの追加
  • 全ての設置はデフォルトにします。
    截屏2022-04-05 15.57.12.png
5.タグの追加
  • 全ての設置はデフォルトにします。
6.セキュリティグループの設定
  • 事前に作成したセキュリティグループを選択

截屏2022-04-05 15.59.44.png

7.確認
  • 各設定項目をチェックして、起動ボタンをクリックします。
  • キーペアを選択(既存のキーペアを選択するか、新しいキーペアを作成するか)
  • インスタンスの作成ボタンをクリックする
    ※ 自分は以前キーペアがあるので、既存のキーペアを選択します。

截屏2022-04-05 16.02.53.png
截屏2022-04-05 16.05.09.png

public subnetに起動したec2状況を確認

截屏2022-04-05 17.42.58.png

パブリックIPv4アドレスでアクセスしてみます。以下のgif表示されています。成功!
截屏2022-04-05 17.44.20.png

private subnetにEC2を起動

今回EC2がprivate subnetにいるので、公開IPv4アドレスがなくて、直接sshアクセスできないです。今回Systems Manager セッションマネージャーでアクセスします。
以下の記事を参照させていただきました。

EC2用IAMロールを作成

マネジメントコンソールから「iam」と検索して、「IAM」を選択します。

截屏2022-04-05 18.16.40.png
ロール作成ボタンをクリックする

截屏2022-04-05 18.17.09.png
ユースケースの選択で「EC2」を選択して,他のAWSのサービスユースケースに「Systems Manager」を選択して次に進めます。

截屏2022-04-05 18.20.08.png

ポリシーの検索欄に、「AmazonSSMManagedInstanceCore」と入力し、表示されたポリシーを選択して次に進みます。

截屏2022-04-05 18.23.08.png

今回はタグなしで次に進みます。
名前と詳細を確認してロールを作成します。
截屏2022-04-05 18.25.45.png

private subnetにEC2を起動

マネジメントコンソールから「ec2」と検索して、「EC2」を選択します。
截屏2022-04-05 18.29.59.png
EC2ダッシュボードから「インスタンスを起動」をクリックします。
截屏2022-04-05 18.30.38.png
AMIはAmazon Linux 2 AMI (HVM)を選択します。
截屏2022-04-05 18.31.27.png
インスタンスタイプはt2.microを選択します。
截屏2022-04-05 18.31.45.png
インスタンスの詳細の設定では、ネットワーク、サブネット、IAMロールを編集します。
截屏2022-04-05 18.33.23.png
ストレージの追加とタグの追加はデフォルトにする
セキュリティグループは作成ずみの「SG-for-ec2-in-vpc-02」にします。
截屏2022-04-05 18.39.35.png

セッションマネージャーでアクセスするため、キーペアは不要です。

截屏2022-04-05 18.41.05.png

Systems Manager の VPCエンドポイントを作成します。

VPCエンドポイントにはセキュリティグループをアタッチする必要があるため、先にセキュリティグループを作成します。
マネジメントコンソールから「vpc」と検索して、「vpc」を選択します。
截屏2022-04-05 18.52.07.png

  • インバウンドルールを設定(HTTPSをVPC CIDRで許可)
  • アウトバンドルールを設定(デフォルトの全許可のまま)
  • vpcを選択

截屏2022-04-06 15.58.23.png
截屏2022-04-06 15.59.35.png

「エンドポイント」をクリックします。
截屏2022-04-06 16.01.38.png

今回作成するエンドポイントは以下の3つです。
・com.amazonaws.ap-northeast-1.ssm
・com.amazonaws.ap-northeast-1.ssmmessages
・com.amazonaws.ap-northeast-1.ec2messages

ひとまずcom.amazonaws.ap-northeast-1.ssmのエンドポイントを作成していきます。
エンドポイントの名前を入力します。
截屏2022-04-06 16.07.03.png
サービスにcom.amazonaws.ap-northeast-1.ssmを検索して、com.amazonaws.ap-northeast-1.ssmサービスを選択します。
截屏2022-04-06 16.06.44.png

今回作成したvpcを選択します。
プライベートDNS名の有効はデフォルトでチェックがついているので、そのままにしておきます。
截屏2022-04-06 16.08.44.png

プライベートサブネットを選択

截屏2022-04-06 16.10.11.png
ポリシーでアクセス制御もできますが、
今回はフルアクセスのままにしておきます。
截屏2022-04-06 16.14.00.png
作成直後は「保留中」となりますが、しばらくすると「使用可能」に変わります。
截屏2022-04-06 16.19.35.png
あとは残りのエンドポイントも同様の手順で作成します。
エンドポイントの選択以外は同様の手順なので、選択箇所以外は省略します。

問題

全てのエンドポイントを正しく作成した後、EC2にsession managerでアクセスしようと思いますが、接続ボタンが押せなかった。
以下の記事を調べたところ、デフォルトでは、SSM Agent は 2017.09 以降の Amazon Linux ベースの Amazon マシンイメージ (AMI) にインストールされます。SSM Agent は、Amazon Linux 2 AMI および Amazon Linux 2 ECS に最適化されたベース AMI にもデフォルトでインストールされます。最新の Amazon EKS 最適化 AMI では、SSM Agent が自動的にインストールされます。

今回プライベートサブネットに起動されたec2のインスタンスAMIはAmazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Typeです。
デフォルトでは、ec2にSSM Agentをインストールされてるはずなんです。なんで接続できないのは謎です。

プライベートサブネットなので、EC2に入れないから、確認もできなかった。

改善策

s3 エンドポイントの経由でプライベートサブネットにいるec2にSSM Agentをインストールさせます。

s3エンドポイントを作成
截屏2022-04-06 17.24.08.png

プライベートサブネットにいるec2のユーザーデータ

#!/bin/bash
cd /tmp
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent

上のprivate subnetにEC2を起動手順と全部同じ、ユーザーデータだけを初期設定します。

ec2を起動後、セッションマネージャーで接続ボタンが押せるようになりました

截屏2022-04-06 17.30.09.png
セッションを開始してみます。
截屏2022-04-06 17.32.14.png
接続できました!

s3エンドポイントでプライベート EC2からs3に接続

せっかくS3エンドポイントを作成したので、この部分S3エンドポイントを利用して、プライベート EC2からs3に接続していこうと思います。

セッションマネージャーでec2に接続し、既存s3リストを確認

截屏2022-04-06 18.30.20.png

An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

以上のエラーが返してくれました。原因としてはec2のルールにs3のアクセス権限がないため、ec2のロールを修正します。

ロールを確認

截屏2022-04-06 18.34.04.png
ロール名は「private-ec2-role」です、ロールリンクをクリックして、s3アクセス権限を追加します。

截屏2022-04-06 18.37.11.png
アクセス許可を追加ボタンをクリックします。ポリシーをアタッチする。
[s3]を検索して、一旦[AmazonS3FullAccess]ポリシーを追加します。
截屏2022-04-06 18.41.42.png

セッションマネージャーでもう一回コマンドを実行します。
截屏2022-04-06 18.42.21.png

既存のs3リストが全部表示できるようになりました。成功!

NATを使用して、プライベートEC2を外部アクセス

日常の仕事でプライベートサブネット内のインスタンスのソフトウエア、ライブラリをインストールしたり、開発言語環境を構築したり、するなどタスクがあると思います。
NAT ゲートウェイは、ネットワークアドレス変換 (NAT) サービスです。NAT ゲートウェイを使用すると、プライベートサブネット内のインスタンスは VPC 外のサービスに接続できますが、外部サービスはそれらのインスタンスとの接続を開始できません。
プライベートEC2なので、googleにpingして、通らないことを確認しました。
截屏2022-04-06 18.46.51.png

NAT ゲートウェイを作成

vpc画面にNAT ゲートウェイをクリックする
截屏2022-04-06 18.49.16.png

  • NAT ゲートウェイ名前を入力する
  • サブネットを選択(必ずパブリクサブネットを選択)
  • 接続タイプ:パブリック
  • Elastic IPを割り当てる

截屏2022-04-06 19.02.04.png
NAT ゲートウェイを作成しました。

プライベートサブネットのルートテーブルを更新

NATゲートウェイができたらプライベートサブネットのルートテーブルにNATゲートウェイのルーティングを追加します。

截屏2022-04-06 19.07.02.png

確認

googleをpingしたら、通るようになりました。成功!
截屏2022-04-06 19.08.50.png

1
0
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
1
0