【AWS】インフラ志望なのにAWS触ったことないってマジ?と言われないために勉強した【暇人の勉強ログ vol. 1】

はじめに

ニートを極めると勉強する習慣すら消え去っていくので、リハビリがてらAWSの再入門をしました。

参考資料

基本的に以下の書籍を読んだというブログです。

https://www.amazon.co.jp/dp/B084QQ7TCF

(はてなブログって商品画像のプレビューできなかったっけ…?)

AWS の基本

サーバ

  • そもそもサーバは、適当な OS にどのようなソフトウェア (ミドルウェアとも)をインストールするかでその役割が決まる
    • Apache を入れれば Web サーバ、MariaDB を入れれば データベースサーバ。両方入れれば両方。

リージョンとアベイラビリティゾーン

  • 「リージョン」
  • アベイラビリティゾーン」
    • 各リージョンをさらに分割したもの。
    • AZ は独立したファシリティを用い、耐障害性を高めている。
    • アジアパシフィック(東京)リージョンは"ap-northeast-1a"、"ap-northeast-1c"、"ap-northeast-1d"の 3 つの AZ から構成されている
    • 同リージョンの AZ 間は専用線で結ばれているだけでなく、データの複製や他 AZ のリソースの参照など可能である。

ネットワークと VPC

  • Amazon Virtual Private Cloud
    • 仮想ネットワークの構築が可能
    • IP アドレス範囲の選択、サブネットの作成、ネットワークゲートウェイの設定など
    • プレフィックス長は 16 以上(それはそう)を指定する。

AWS VPC 補足

VPC 作成と同時に作成されるもの (予想)

Amazon DNS

VPC 内で利用可能な DNS サーバ CIDR の 3 番目のアドレスを使用(10.0.0.0/16 の場合は 10.0.0.2)

Router

VPC 内のルーティングを行う。VPC 内のサーバのデフォルトゲートウェイは全てこれ。

Default Route Table

デフォルトとなるルートテーブル。VPC 内は自動でルートを持ち、削除不可である。

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

VPC 内パブリックサブネットのデフォルトゲートウェイとして設置される。 ルートテーブルは、以下のようになる

dst target
10.1.0.0/16 local (VPC 内)
0.0.0.0/0 Internet Gateway

IGW における「VPC にアタッチ」とは、以下の図でイメージされるように VPC 内の Router と IGW を接続することであると理解できる。

f:id:puyobyee18:20201020223125p:plain
引用:VPC をネットワーク図で理解してみる

一方、「パブリックサブネットをインターネットに接続する」(=作成したサブネットをパブリックとして扱う)とは、ルートテーブルに {dst: 0.0.0.0/0, target: IGW} を追加することである。

IAM

適当に作る

作業手順

VPC の作成

  1. コンソールから「VPC」を選択し、作成
    • name: my-first-VPC
    • CIDR: 10.0.0.0/16
  2. サブネットを作る
    1. パブリックサブネットの作成
      • name: my-vpc-public
      • CIDR: 10.0.1.0/24
    2. プライベートサブネットの作成
      • name: my-vpc-private
      • CIDR: 10.0.2.0/24
  3. ゲートウェイを作る
    • パブリックサブネットとインターネットとを接続する
  4. ルートテーブルを作る
    • VPC を作成した時点でルートテーブルが作成されている
      • dst: 10.0.0.0/16, target: local
      • これは、VPC 領域の CIDR ブロック宛のパケットは、全て local(=自身のネットワーク)に流される。それ以外は破棄。
    • サブネットを作成すると、上記のルートテーブルがデフォルトとして設定されている
    • デフォルトゲートウェイをインターネットに向けて設定

EC2 の作成

  • t2.micro で作成
  • VPC を設定
  • ネットワークインターフェイスからプライマリ IP = 10.0.1.10 を設定
  • ストレージを Elastic Block Store の 8GB を選択
    • インスタンスを「停止」してもストレージは止まらないので注意。
  • セキュリティグループを設定。とりあえず「マイ PC」に制限。
  • キーペアを作成。多分秘密鍵のこと。
    • 適当に保存。

SSH 注意事項

  1. 起動 / 停止のたびにインスタンスのグローバル IP は変わるので注意
    • 固定したかったら Elastic IP を使う
  2. なんらかのタイミングで「マイ PC」の IP アドレスが変わるので注意
    • プロバイダの気分次第
  3. 秘密鍵の権限は 400 にする
    • SSH 用では概してこのパーミッションにすべきであるが、AWSではエラーが発生するので必ず変更しなくてはならない。
  4. ユーザ名は ec2-user であることに注意
    • IAM のユーザ名ではないっぽい
    • 他 OS の場合、デフォルトユーザ名が異なるらしい

Web サーバソフトのインストール

DNS サーバの構成

  1. VPC コンソールから該当の VPC を選択し、アクション -> DNS ホスト名を編集 を選択。有効化にチェック。
  2. EC2 コンソールに「パブリック IPv4 DNS」が増える
  3. 独自ドメインを使用する場合は、 Route53 などを利用する。

EC2 内から nslookup を実行すると次の通り。

[ec2-user@ip-10-0-1-10 ~]$ nslookup ec2-xx-xxx-xx-xxx.ap-northeast-1.compute.amazonaws.com
Server:         10.0.0.2
Address:        10.0.0.2#53

Non-authoritative answer:
Name:   ec2-xx-xxx-xx-xxx.ap-northeast-1.compute.amazonaws.com
Address: 10.0.1.10

これより、VPC 内で DNS サーバが 10.0.0.2 に、EC2 サーバには 10.0.1.10 が割り当てられていることが分かる。

プライベートサブネットの作成

インターネットからの接続を拒否したネットワークを作成する。 しかし安直に作るとインターネットに接続することも出来ないため、NAT を適切に構築する。

基本的には「EC2 の作成」と同様。10.0.2.10 を割り当てた。

プライベートサブネット内のサーバに SSH

踏み台サーバを経由する。

NAT の構成

NAT をファイアウォール(IP フィルタ)のように用いて、プライベートサブネット内のサーバからインターネットへの接続を可能にする。

具体的には、パブリックサブネットのデフォルトゲートウェイには IGW を、プライベートサブネットには NAT-GW を関連付ければよい。

編集中、メインルートテーブルを変更したところ戻せなくなった。
そもそも「ゲートウェイルートテーブルをメインルートテーブルとして設定することは出来ません」とあるのに何故変更できたのか…

参考