🕌

AWS入門 - VPC について整理してみる

2021/10/24に公開

AWSを使う必要が出てきたので、色々と試してみる。
ここでは、VPC周りについて整理してみる。

Virtual Private Cloud (VPC)

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/what-is-amazon-vpc.html

VPCとはAWS環境内に構築される、AWSアカウント専用の仮想ネットワーク環境である。
このVPCの中にEC2・RDSなどを配置していく。

大雑把なイメージとしては、自分だけの専用ネットワーク環境のこと。
他の人とネットワークを共有すると、ネットワーク内で通信できてしまうので、それぞれ切り離されたネットワークを用意している。

デフォルトVPC

各AWSアカウントには最初から用意されている、デフォルトVPC というものがあるらしい。
デフォルトVPCには最初からインターネットGWが設定されていたりと、後から作成した場合と若干状態が異なるとのこと。

IPアドレス

VPCで使うIPアドレスの範囲を決められる。
デフォルトではIPv4のみで、追加でIPv6も設定できる。

デフォルトVPCでは、172.31.0.0/16で設定されていた。
もしかしたらアカウントによって違うかも。

インターネット

VPCへインターネットからアクセスするためには、VPCにインターネットゲートウェイを設定し、サブネットからインターネットゲートウェイへと通信が流れるようにする必要がある。

パブリックIP(グローバルIP)はインスタンスに対して付与することができる。
もしくは、Elastic IP を使用して、インスタンスに対してIPアドレスを紐付けることもできる。

ただし、各インスタンスにパブリックIPを付与する場合は、インスタンスが停止されたりするとIPアドレスが変わってしまうらしい。
なので、IPアドレスを固定したい場合は Elastic IP を使う必要がある。

Security Group

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_SecurityGroups.html

セキュリティグループは通信のホワイトリストを定義できる。
VPCやEC2インスタンスに設定できる。

基本的には、外部からの通信は必要な部分だけ穴あけしておくのが良いはず。

VPC作成 ~ EC2起動 ~ SSH

それでは、VPCを新規作成し、EC2インスタンスを立ち上げてみる。
また、インターネット経由でSSHしてみる。

VPC

名前・IPv4 CIDR を入力することが出来る。

VPC を作成するときは、RFC 1918 に指定されているように、プライベート IPv4 アドレス範囲からの CIDR ブロックを指定することをお勧めします。

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Subnets.html#VPC_Sizing

とあるので、デフォルトVPCと重複するのだけ避けて、172.16.0.0/16で設定してみる。

作成できた。
DHCP options set・Main route table・Main network ACL あたりは自動的に付与されている。

Security Group も自動的に作成されている。

Subnet

次に、サブネットを作成する。
デフォルトVPCと同じく/20で切ってみる。

  • 172.16.0.0/20 (0000) <-- 今回はここ
  • 172.16.16.0/20 (0001)
  • 172.16.32.0/20 (0010)
  • 172.16.64.0/20 (0100)
  • 172.16.128.0/20 (1000)

Internet Gateway

次に、Internet Gateway を作成する。

作成したIGを、VPCに紐付ける。

Route Table

次に、Internet Gateway 経由で通信するため、作成した Subnet に紐付いている Route Table にルーティングを追加する。
宛先その他すべて(0.0.0.0/0)を Internet Gateway に向けてあげる。

Security Group

SSHを許可するための Security Group を作成する。

EC2

これまでに作成した、VPC・Security Group を指定し、パブリックIPを付与してインスタンスを立ち上げる。

これで、立ち上げるときに作成したSSH鍵を指定して、SSHすると無事に入れた。

$ ssh -i my-key-pair-01.pem ec2-user@13.231.64.23
Last login: Sun Oct 24 11:41:48 2021 from sp49-98-217-201.msd.spmode.ne.jp

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

https://aws.amazon.com/amazon-linux-2/
3 package(s) needed for security, out of 15 available
Run "sudo yum update" to apply all updates.
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

まとめ

AWSじゃないけど、昔はこんな感じでOpenStackのインスタンス立ち上げて、ルーティング設定してたりしたなと懐かしく感じる。

デフォルトVPCが用意されているけど、システム構成が大きくならないうちはデフォルトVPC内に配置する形で良いのだろうか?
(同じAWSアカウントで開発環境作りたい時だけVPCを追加するとか)

しかし、今の時代こんなところに時間かけるのは面倒なので、可能であればVPC周りを意識しなくて済む構成にしたいところではある。

IAM周りも気になるところなので、追って調べてみる。

その他

Discussion