📌

【AWS】VPC~EC2試してみた①

2021/04/10に公開

最終目標

AWS VPCを作成し、その中に二つのサブネット(片方はパブリック、もう片方はプライベート)を構築。そして各サブネットの中にAWS EC2を作成する。
※プライベートEC2にはパブリックEC2を踏み台にしてログインする事として、プライベートからのインターネット接続は、NAT gatewayを経由する事とする。

今回の目標

VPC、サブネットを構成図のように作成し、パブリックEC2を作成。ターミナルからEC2にsshログインできることを確認する。

環境

端末:MacBook Pro(13-inch, 2020, Four Thunderbolt 3 ports)
OS :MacOS Catalina(ver10.15.6)

VPCの作成

AWSマネジメントコンソールの上部検索でVPCを検索して開く

左メニューバーからVPCを選択してVPCの作成をクリック

名前をtest-vpcとしてIPv4 CIDR ブロックを以下のように設定する。

10.0.0.0/21について

「/21」IPアドレスを2進数表記したときにどこまで固定するかを示すもの。
(00000000 00000000 00000000 00000000)の32ビットで表現されたIPアドレスの
上から21番目までを固定していることになるので、今回の場合は以下の範囲である。
(10.0.0.0)〜(10.0.7.255)

サブネットの作成

左メニューバーからサブネットを選択してサブネットの作成をクリック

先ほど作成したVPCを選択して関連付ける。

名前をtest-subnet-0としてIPv4 CIDR ブロックを以下のように設定する。

名前をtest-subnet-2としてIPv4 CIDR ブロックを以下のように設定する。

10.0.0.0/24,10.0.2.0/24について

VPCで設定したIPアドレスの範囲の中でそれぞれサブネットを作成している。
・test-vpc :(10.0.0.0)〜(10.0.7.255)
・test-subnet-0:(10.0.0.0)〜(10.0.0.255)
・test-subnet-2:(10.0.2.0)〜(10.0.2.255)
「/24」は「/21」と比べて1/8の範囲であることがわかる。

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

インターネットゲートウェイはVPC内部からインターネット接続するためのコンポーネントであり、VPCにアタッチすることで可能となる。

左メニューバーからインターネットゲートウェイを選択してインターネットゲートウェイの作成をクリック

名前をtest-internetgatewayとして作成する。

※作成してすぐは、どこにもアタッチされていないので、作成したインターネットゲートウェイを選択し、「アクション」→「VPCにアタッチ」より作成したVPCにアタッチする。成功すると、以下のように状態が「Attached」になる。

ルートテーブルの編集

ローカルの通信はVPCにそれ以外はインターネットゲートウェイにサブネットのルートテーブルを編集する。

作成したサブネットをクリックし、下部にあるルートテーブルを表示させ、IDを右クリックして新しいタブで開く

画面下部のルートを選択しルートの編集をクリック

送信先を0.0.0.0/0としてターゲットを作成したインターネットゲートウェイに設定する。

0.0.0.0/0について

このIPアドレスは全てと言う意味があり、「デフォルトルート」と呼ばれる。流れとしては、デフォルトでは、ターゲットがインターネットゲートウェイになるが、VPC内部のIPアドレスのみターゲットがローカルになる。

EC2の作成

AWSマネジメントコンソールの上部検索でEC2を検索して開く

インスタンスを起動をクリックし作成するインスタンスの設定を行う


今回は以下のAmazon Linux2 AMIを選択する。

ネットワークで作成したVPCを選択、サブネットはtest-subnet-0を選択する。
※今回は自動割り当てパブリックIPを有効にしパブリックIPが割り当てられるようにする。
そしてストレージは起動確認を行うだけなので8GBのままで進める。

タグとしてNameにtest-ec2-1と名前を付ける。
セキュリティグループは今回はデフォルトのままにする。

最後に起動ボタンをクリックするし、新しいキーペアを作成し、ダウンロードする。
全て終了したらインスタンスを作成ボタンをクリックして作成を完了させる。
※作成に時間がかかる場合があるので、起動中になるのを待つ。

セキュリティグループを作成する

左メニューバーからセキュリティグループを選択してセキュリティグループの作成をクリック

名前をtest-sg-1とし、VPCを作成したVPCに設定する。

インバウンドとアウトバウンドのルールを設定する

今回はSSHログインすることが目的なので、SSHのインバウンドを全てに設定する。

インスタンスに割り当てられているセキュリティグループを変更する

インスタンスを選択し、「アクション」→「セキュリティ」→「セキュリティグループの変更」をクリックする。

デフォルトのセキュリティグループは削除し、作成したセキュリティグループを追加する。

EC2にログインする

ターミナルを開き、ダウンロードしたキーファイルの場所に移動する。以下のコマンドを打つと、yes/no?と聞かれるのでyesと打つ。

$ ssh -i test-keypair.pem ec2-user@"パブリックIPアドレス"
  The authenticity of host 'パブリックIPアドレス (パブリックIPアドレス)' can't be
  established.
  ECDSA key fingerprint is   
  SHA256:D/7dRLRCptEnfW88nn1ke+uuFqjCgEfWx3+kSVyBbro.
  Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

ec2-user

EC2インスタンスを作成したときにデフォルトで作成されるユーザ。

ログインがうまくいかない時

キーファイルの権限の問題でログインできない場合がある。その場合は、キーファイルの権限を設定し直すことでログインができるようになる。

Warning: Permanently added 'パブリックIPアドレス' (ECDSA) to the list of known hosts.
Connection closed by "パブリックIPアドレス" port 22  ←権限エラー

$ chmod 400 test-keypair.pem ←権限設定(読み込みのみ)
$ ssh -i test-keypair.pem ec2-user@1"パブリックIPアドレス"

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

https://aws.amazon.com/amazon-linux-2/
25 package(s) needed for security, out of 40 available
Run "sudo yum update" to apply all updates.

次回

このEC2に対してElastic IPアドレスを振り、IPアドレスが変わらないようにする。
https://zenn.dev/taka_tech/articles/5f07ff7fbd908a

Discussion