AWS勉強②VPC,サブネット,インターネットへルーティング
では、早速手を動かしながらやっていこうと思います!
まずは、VPCを作成。
IAMユーザーでログインし、VPCへ。
リージョンを確認し、東京であることを確認。
IPv4 CIDR ブロックとはVPC全体のIPアドレスの範囲をCIDR表記で指定すること。
今回は10.0.0.0/16に設定。
テナンシーとは、物理ハードウェアを専有するオプション。
設定するとEC2料金が割高になるし、専有する必要がないのでデフォルト。
これでVPC作成OK。
お次にサブネットを作成。
その前にサブネットを分割する理由について復習を。
・アベイラビリティゾーンを分けて物理的に離すことで災害時等の対策。
・セキュリティ上の理由(WEBサーバーはインターネットアクセス可能、DBサーバーはインターネットからアクセスを不可にする時等)
今回はパブリックサブネット(10.0.10.0/24)とプライベートサブネット(10.0.20.0/24)
この2種類を作成しました。
パブリックサブネットはWEBサーバー、プライベートサブネットはDBサーバーを割り当てる想定で実装します。
お次はパブリックサブネットをインターネットへ接続できるようにルーティング。
その前に、まずはルーターについて。
インターネットでは、ルーターがIPアドレスの行き先を管理しています。
そのおかげでネットワークとネットワークがIPアドレスを通じて接続することが出来る仕組みになっており、これをルーティングといいます。
ここまでの設定では、VPCで設定した10.0.0.0/16の範囲外の宛先の通信は全て破棄されている状態。そのためインターネットへ接続できていません。ルートテーブルに変更を加えインターネットへ接続できる状態にしたい。
そこで必要となってくるのが「インターネットゲートウェイ」です。
これは「VPCとインターネットを繋げる仮想のルーター」であり、パブリックサブネット用のルートテーブルを作成し、10.0.0.0/16のターゲットをlocalに、0.0.0.0/0のターゲットをインターネットゲートウェイとすることで10.0.0.0/16以外の接続をインターネットゲートウェイへ接続するように設定することが可能。
ここまでのまとめと、するべきことは以下の2点です。
2,ルートテーブルを作成しパブリックサブネットに紐付ける
それでは1から実装していきます!
まずインターネットゲートウェイを新規作成。
完了直後はVPCに紐付いていない為、状態は"detached"となります。
なので作成したVPCにアタッチし、状態が"attached"に変わればOK。
次は2のルートテーブルの作成。
ここまでの実装でルートテーブルには送信先10.0.0.0/16でターゲットがlocalになっていることを確認。これは送信先10.0.0.0/16のIPアドレスが自分のIPアドレスであるということ。逆に言えば、それ以外の通信は破棄する状態。そこでルートテーブルを新規作成しデフォルトルートをインターネットゲートウェイへ向けるように設定します!
ではルートテーブルを新規作成。作成したVPCを選択し新規作成。
これをパブリックサブネットに関連付けする。サブネットの関連付けから、パブリックサブネットを選択し保存することでこのルートテーブルをパブリックサブネットに割り当てることが可能。その後デフォルトのルートをインターネットゲートウェイへする。
ルートの追加をクリックし、0.0.0.0/0を送信先に設定。ターゲットをインターネットゲートウェイへ設定し保存。
正しく設定しているかは、ルートの欄に送信先に先程設定した項目が記入されていればOK。これによってパブリックサブネットからインターネットへ接続が可能なる。
では、最後にVPC設計とサブネット設計のポイントをまとめます。
・VPC設計
①プライベートIPアドレス範囲から指定
VPCで作るネットワークはプライベートなネットワーク空間なので、
プライベートIPアドレスの使用が推奨されている。
②作成後は変更できないので、大きめに設定(推奨は/16)
・サブネット設計
①IPアドレス数を見積もって設定、標準は/24。
②サブネットの分割について
ルーティングポリシーとアベイラビリティゾーンを基準に考える。
サブネットに割り当てられるルートテーブルは一つのみ。
今回2つのサブネットを作成した理由はインターネットアクセスの有無を分けるため。
そのため最低2つのサブネットが必要になる為2つ作成した。
また、耐障害性を考え複数のアベイラビリティゾーンに設置したほうが良い。
以上。
次はサーバー(EC2)を設置していこうと思います!
こうやって学んだことをアウトプットしながら実際に構築していくと、ある程度考えながら進むことが出来るのでこのままこのやり方で実装を目指します!