VPCについて

前提知識

これらを前提としたうえで、awsにおけるネットワークの設定を理解し、設定できるようにする。

vpc

VPCとは何か?

  • awsのサービスの一つ
  • awsのインフラ環境上に仮想的なネットワークを作り出すことができる。
  • ファイアウォールなどのセキュリティ関連の機能もvpcの一部として用意されている。
  • vpcに用意されたvpnの機能で企業ネットワークと接続することも可能。

vpcのイメージ

リージョンとアベイラビリティゾーン(rzとaz)

リージョンとは

  • awsのデータセンターが存在するエリアのことをリージョンといいます。
  • リージョンごとに提供しているサービス、未提供のサービスがあります。

  • 現状日本のリージョンは大阪と東京の二つ。
  • 基本は東京リージョンでap-northeast-1と指定することができる。

東京が災害で壊れても大阪があるので問題ない。これがリージョン

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

リージョン内に存在する物理的に離れた個々のデータセンターのこと

東京リージョンには現状4つのアベイラビリティゾーンが存在します。

特定のアベイラビリティゾーンの障害に備えて、複数のアベイラビリティゾーンで使用することができる。

アベイラビリティゾーンは東京の中でも物理的に離れている。

vpcの利用料金について

vpc利用では - vpn接続(企業とawsの接続) - aws private link(s3やdynamo dbとの接続でインターネットを経由しないでアクセスする方式) - natゲートウェイプライベートクラウドがインターネットに出るための料金)の利用で料金が発生します。

これらの機能のみ料金がかかる

vpcとサブネットの作成

以下のようなvpcを作る。

vpcの作成
vpcの作成

  • tutrial-vpc1

    • cidrブロック:192.168.0.0/16
  • サブネット名:subnet1

  • cidr:192.168.1.0/24(vpcのnetworkの一部を細分化して割り当てている)

/16/24はipの範囲で自由に割り振ることができるが、ここではクラスフルに

手順

まずは「vpcの作成」を押下

押すと、 - 名前タグ - ipv4 cidrブロック - ipv6 cidrブロックの選択有無 - てなんしー(ハードウェアレベルのネットワークの占有、基本的に不要)

の指定が可能になる

作成で新しvpcが作られる。

そのほかにも、最初から存在するデフォルトvpcがある。インスタンスの作成時には、こちらがデフォルトで選択された状態になっている。

from [初心者向け]VPC作成からEC2インスタンス起動までを構成図見ながらやってみる(その1) | DevelopersIO

サブネットの作成

subnet1を作成する

左のメニューから「サブネットの作成を押下」

  • 名前タグには:subnet1を入れる
  • vpcを選べるので先ほど作成したvpcを作る
  • アベイラビリティゾーンを指定することが可能(基本は指定なしでok)
  • cidrブロック:192.168.1.0/24

作成されたサブネットを確認すると、利用可能なサブネットの数が出てくる(おそらく251)

ec2インスタンスを繋げてみる

インスタンス作成時の「ステップ3:インスタンスの詳細の設定」にて

  • ネットワーク
  • サブネット

の設定が可能

このように指定することで、作成したvpc、そしてその中のサブネット内にec2インスタンスを配置することが可能です。

その際に、自動割り当てパブリックipを有効かしておくことで、ipアドレスを付与してくれる。

インスタンスの詳細の設定
インスタンスの詳細の設定

セキュリティグループの作成

「ステップ6:セキュリティグループの設定」にて セキュリティグループの作成が可能

新しいセキュリティグループを作成するを押した後

  • セキュリティグループ名
  • 説明
  • ルールの追加 が可能になる

ここでは

  • 名前:tutrial-sg
  • 説明:任意

を指定。ルールの追加ではドフォルトで22番をつけることが可能

  • ソース:マイip(sshの接続をマイipにすることで、ローカルpcからのssh接続を許可することができる。ここでマイipを指定すると、自宅のグローバルipルーターが紐づけられる?)

ここでのソースとは、ec2に対する接続の出身地のことで、sshの接続にマイipを指定しておくことで家からのsshが許可される。そのほかは許可されない)

しかし、このままでは接続できない。

自宅から接続するには「インターネットゲートウェイの作成」が必要となる。

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

前回sshで接続できなかったのは、vpcのサブネットからインターネットに出るための出口がなかったため。

この場合、「ルーター」とインターネットゲートウェイが必要になる・

  • ルーター:ほかのインスタンスやネットワーク機器と通信するための案内を担う。ルーターvpc内部に自動的に作成されるため今回は意識する必要はない。
  • インターネットゲートウェイ:インターネットへの出口となるもの。これはvpcの内と外の境目に設置されるが、自動的には作られない。

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

https://www.udemy.com/course/amazon-web-service-vpc/

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

「インターネットゲートウェイ」を開き、「インターネットゲートウェイの作成」を押す。

  • nameタグをつける(tutrial-gw)gwを末尾に着けるのが通例

  • 作成した直後は「デタッチ」された状態なので、作成したインターネットゲートウェイを指定して「アクション」から「vpcにアタッチ」する必要がある。

https://www.udemy.com/course/amazon-web-service-vpc/

しかし、このままではvpc内部でどのように「インターネットゲートウェイ」を通過するかを指定できない。

そこで、サブネットのルートテーブルを変更して、インターネット向けのルートテーブルを追加する。

  • サブネットの画面から変更したいサブネットを選択。
  • 下のルートテーブルタブを開き、ルートテーブルの変更を押下

個々の画面を見てみると

送信先が192.168,0.0/16とipv6のものがターゲットlocalに指定している。これは、ターゲットがlocalのルートは同じサブネット内のインスタンス間で通信するためのルートである。

ここにゲートウェイの別ルート追加する。 今回は

ここで重要な点は、ほかのどのルートにもマッチしなかった場合の送信先として「0.0.0.0/0」を指定することができる。この場合はどのルートにもマッチしない場合、「インターネットゲートウェイ」に接続される

https://www.udemy.com/course/amazon-web-service-vpc/

デフォルトvpcについて

最初から作成されているデフォルトのvpcのこと

  • ipv6 cidrが設定されていない
  • アベイラビリティゾーン3つでそれぞれ別々のサブネットが配置されている
  • ルートテーブルは
  • サブネット内のec2間で通信できる「local」
  • そのほかの送信先はインターネットゲートウェイにつながる という設定になっている

セキュリティグループの役割について

セキュリティグループはvpcやサブネットとは別途考える必要があり、ec2やrdsごとにアタッチできる。

セキュリティグループはファイアウォールの役割を担る。

from https://www.udemy.com/course/amazon-web-service-vpc/

この図の場合

  • インバウンドはインターネットから入ってくる情報に対する制限
  • アウトバウンドはec2から出力される情報に対する制限

ともいえる

例えば、外部からsshでアクセスする場合、インバウンドトラフィックでアクセスしていなければ通信がブロックされる。

ほかには80番ポートや443番ポートを開けないとhttp,httpsの通信を許可できない。

セキュリティグループの通例

外部のインターネットからec2を守るために必要。

nginxを構築する例

vpcエンドポイントについて

awsとのほかのサービスとの接続を インターネットに出ることなくプライベートに行うことができる機能である。

ec2からs3を利用する際に、natゲートウェイを経由してからインターネットに出る必要がある。

from https://www.udemy.com/course/amazon-web-service-vpc/

そこで、awsのエンドポイントを使用することでs3へのアクセスを行う。

from https://www.udemy.com/course/amazon-web-service-vpc/

エンドポンとの設定

左にある「エンドポイント」のタブから新しく「エンドポイントの作成」を押下して作成する。

エンドポイントの作成を押下すると、「awsのサービスが選択可能となり、ここで確認できるawsのサービスへ疎通が可能となる」

サービスを選んだあとは「どのvpcに適応するか」と「どのルートテーブルを選択するか」を選択できる

そのほかは「基本的に降るアクセスを選択」することと「基本的にgatewayを選択」することを覚えておけばよい

ネットワークACL

ネットワークACLはネットワークアクセスリストの略。 複数のサブネット名にかぶさる形で有効化される。

from https://qiita.com/chiita__/items/57b9b1cc3437f0034449

ネットワークACLはネットワークトラフィックを検出したとき、ルールの番号順にてらしあわせ、合致した条件を見つけた場合に許可、拒否をする。 例えば、SSHの22番のポートをピンポイントで拒否することができる。

https://qiita.com/chiita__/items/57b9b1cc3437f0034449

プライベートサブネットの使用

二層構造のWEBサイトを作るとき、フロントエンドのWebは解放しつつもバックエンド側のECS、EC2は非公開にしておくことができる。

この二層構造はパブリックサブネット、プライベートサブネットの二つのサブネットからできあがる。

プライベートサブネット

プライベートサブネットは、インターネットに直接つながっていないサブネットのこと。 デフォルトでは「ルートテーブル」に対してインターネットゲートウェイが設定されてしまっている。

from https://www.udemy.com/course/amazon-web-service-vpc/

これは消しておかなければならない。

「ルートテーブル」の作成から、「サブネット」への関連付けをし、ルートテーブルを上書きする。

from https://www.udemy.com/course/amazon-web-service-vpc/

その後、プライベートにあるEC2を設定するときに、「セキュリティグループの設定」にてソースを「パブリックにあるセキュリティグループ」に設定するのを推奨する。

from https://www.udemy.com/course/amazon-web-service-vpc/

最後に、パブリックサブネットにあるプロキシーEC2にsshで接続し、さらにそこからプライベートにあるEC2にssh接続することができる。

NATゲートウェイ

プライベートにあるEC2からインターネット接続するためにはNATゲートウェイをパブリックサブネット内部に置かなければならない。

新しいEIPを作成することで、NATゲートウェイIPアドレスを付与することができる。

その後、プライベートサブネットのルートテーブルを編集し、パブリックサブネット内のルートテーブルを編集、NATゲートウェイへ送信する必要がある。