ネットワーク

Amazon VPC

システムの環境

開発環境 テスト環境 本番環境

システムを構築していく際、1つの環境で完結するのではなく、環境を移しながら構築を進めていく。より細かい分類もできるけど、大まかには開発環境テスト環境本番環境の順に環境を移していくことになる。

開発環境は、システムの開発で使う環境のこと。いきなり高性能な環境を使うことはせず、簡単に用意できる環境で開発を進めるよ。

システムを開発したら、それをテスト環境に渡します。テスト環境は、名前の通り、テストで使う環境のこと。テストを進める中でバグが見つかれば、開発環境に戻して作り直すことになる。

これを何回か繰り返し、バグがなくなったら、いよいよ本番環境に移すよ。本番環境は、システムの提供に使う環境のこと。実際のユーザーに使ってもらう、高性能な環境だよ。

ネットワークとインターネット

ネットワークインターネットによって、遠くの人や物が繋がることができるようになった。日常的には、ネットワークとインターネットを同じ意味で使うと思う。でも、より理解を深めるため、ここからはネットワークとインターネットを分けて考えることにするよ。

ネットワーク インターネット


ネットワークとインターネットは、どちらも何かと何かを繋ぐものだけど、厳密には異なるよ。

ネットワークは、企業、学校、家庭など拠点内のコンピュータを繋ぐもの。例えば、社内ネットワークであれば、企業内のパソコンやプリンターを繋ぐ接続になる。ネットワークは、接続できる人や物が限定されているので、セキュリティが高い点が特徴だよ。身分証明書を印刷する時など、家内ネットワークで繋がったパソコンやプリンターであれば、安心して印刷することができる。また、回線が混雑することがなく、接続が安定している点も長所だよ。

一方、インターネットは、ネットワーク同士を繋ぐもの。外出先から会社への接続、自宅から動画サイトへの接続、オンプレからAWSへの接続は、インターネットが使われている。不特定多数の人が使うため、紛れているハッカーに攻撃されやすく、セキュリティが低いといえる。直感的にも、身分証明書をインターネットにアップロードすることに抵抗を感じると思う。セキュリティ面に加えて、回線が混雑すれば接続が不安定になる点も短所だよ。

まとめると、グループ内を繋ぐものがネットワークグループ同士を繋ぐものがインターネットになる。インターネットよりネットワークの方が、セキュリティが高く、安定しているよ。

Amazon VPC

Amazon VPCは、AWS内のネットワークを分割するAWSリソース。AWS内のネットワークは、アプリ、サービス、組織、部署、環境(開発環境、テスト環境、本番環境)ごとに分けるよ。

なぜ分ける必要があるのかというと、それぞれを適切に管理するため。少し大げさな例えだけど、世界はいくつかの国に分かれている。もしそうではなかったら、大きすぎて管理できなかったと思う。

Amazon VPCでネットワークを分ける理由もこれと同じ。Amazon VPCは、国のようにネットワークを分けて、他国または国内の繋がりを作る。

大きなネットワークを小さなネットワーク分けることによって、管理しやすくなり、必要な接続を作ることができるよ。

VPC Amazon VPC


Amazon VPCで分けたネットワークは、サブネットでさらに小さく分ける。Amazon VPCを国に例えるなら、サブネットは都道府県に当たるよ。

Amazon VPCやサブネットに、IPアドレスを割り振る。分けられた土地の名前や住所を分かるようにするためだよ。

Amazon VPCは、1つのアベイラビリティゾーンに作成することができ、複数のアベイラビリティゾーンを跨いで作ることもできる

サブネットは、1つのアベイラビリティゾーンに作成することができ、複数のアベイラビリティゾーンを跨いで作ることができない

Amazon VPCの機能

Amazon VPCには、主に3つの機能があるよ。


ゲートウェイ サブネット ルートテーブル

Amazon VPCやサブネットは、最初はどことも通信できないように設定されている。そのため、他の国とやり取りする場合は通信の許可を行う必要がある。通信の許可をすることによって、特定のAmazon VPCやサブネットを、インターネットなどに繋げることができるよ。

他の国に当たる、インターネットやオンプレと接続するには、ゲートウェイが必要になる。

ゲートウェイは、Amazon VPCの外と内を隔てる門のこと。主なゲートウェイは3種類あるよ。

  • インターネットゲートウェイ
  • NAT(Network Address Translator)ゲートウェイ
  • 仮想プライベートゲートウェイ

インターネットゲートウェイNATゲートウェイは、Amazon VPCをインターネットに繋げるための門。

仮想プライベートゲートウェイは、Amazon VPCをオンプレに繋げるための門。

これらの門が空いていれば、インターネットやオンプレに到達することができる。逆に、門を作らなければ、インターネットやオンプレに到達できない設定になるよ。



ゲートウェイ サブネット ルートテーブル

ルートテーブルは、インターネットやネットワークの地図のようなもの。ルートテーブルには、IPアドレスゲートウェイを書いておく。

左の例だと、192.168.0.0/28はインターネットゲートウェイへと書かれている。

こうすることで、このIPアドレスはこのゲートウェイに向かってほしい、そのゲートウェイからはそのIPアドレスに向かってほしいといった、道案内をすることができるよ。


ゲートウェイ サブネット ルートテーブル

パブリックサブネットは、インターネットに繋がっているサブネット。

パブリックサブネットのIPアドレスは、ルートテーブルでインターネットゲートウェイに向けられている。インターネットに繋がっているため、ユーザーに公開されていて、ハッカーから狙われやすい部分になるよ。

プライベートサブネットは、インターネットに繋がっていないサブネット。

プライベートサブネットのIPアドレスは、ルートテーブルでインターネットゲートウェイに向けられていないよ。インターネットに繋がっていないため、非公開で安全な部分になる。

プライベートサブネットは、顧客情報など大事なデータを置く場合に適しているよ。

ゲートウェイの詳細

それぞれのゲートウェイの詳細はこちら。

インターネットゲートウェイとNATゲートウェイの違い

インターネットゲートウェイとNATゲートウェイは、どちらもAmazon VPCをインターネットに繋げるための門。

特に、インターネットゲートウェイはパブリックサブネットをインターネットに繋ぐための門だよ。パブリックサブネットからインターネットにアクセスすることができ、インターネットからパブリックサブネットにアクセスすることもできる。

一方、NATゲートウェイは、プライベートサブネッットをインターネットに繋ぐための門だよ。プライベートサブネットからインターネットにアクセスすることができるけと、インターネットからプライベートサブネットにアクセスすることはできないよ。

プライベートサブネットは、大事なものを隠すように置く場所なので、インターネットと繋がっていない方が望ましい

でも、どうしてもプライベートサブネットをインターネットに繋がなければならない場合があるよ。仮に、プライベートサブネットにAmazon EC2を配置したとする。Amazon EC2は、一部アンマネージドサービスなので、定期的にソフトウェアの更新を行わなければならない。ソフトウェアの更新は、インターネットに繋がなければ行えない作業だよ。

そういった事情で、プライベートサブネットをインターネットに少しだけ繋ぎたい時、NATゲートウェイを踏み台にする。具体的には、NATゲートウェイをパブリックサブネットに配置して、NATゲートウェイを経由してインターネットと繋ぐ。

NATゲートウェイ 踏み台


この配置を取ることで、NATゲートウェイを踏み台、言い換えれば身代わりにすることができる。もしハッカーに攻撃されても、被害はNATゲートウェイのあるパブリックサブネットに留まり、プライベートサブネットに及ぶことはないよ。

NATゲートウェイを踏み台にすることにより、プライベートサブネットをインターネットで繋いで、安全にソフトウェアの更新などを行うことができる。

NATゲートウェイとNATインスタンスの違い

NATゲートウェイと同じく、踏み台の役割を果たすものにNATインスタンスというものがある。

NATゲートウェイとNATインスタンスの違いはこちら。

NATゲートウェイ NATインスタンス
管理 マネージドサービス 一部アンマネージドサービス
単一障害点 ならない なる
カスタマイズ性 なしあり
コスト 高い安い


NATゲートウェイはマネージドサービス。管理をAWS側で行うため、単一障害点になることはない。カスタマイズ性が低く、料金はやや高め。

NATインスタンスはAmazon EC2で作成する。Amazon EC2が一部アンマネージドサービスなので、何もしなければ単一障害点になってしまう。NATインスタンスを複数台用意して、複数のアベイラビリティゾーンに配置するなど、単一障害点にならないよう工夫する必要があるよ。また、カスタマイズ性があり、コストを抑えることができる点が長所。

NATインスタンスを作る時の注意点として、送信元/送信先チェックの無効化が挙げられる。送信元/送信先チェックが有効になっていると、上手く通信できない可能性があるので、忘れずに無効化するよ。

NATゲートウェイとEgress-Onlyインターネットゲートウェイの違い

もう1つ、NATゲートウェイと同じ踏み台の役割を果たすものに、Egress-Onlyインターネットゲートウェイというものがある。

NATゲートウェイとEgress-Onlyインターネットゲートウェイは、扱えるIPアドレスが異なる。NATゲートウェイはIPv4のIPアドレスを扱えるのに対し、Egress-OnlyインターネットゲートウェイはIPv6のIPアドレスを扱うことができるよ。

以前はIPv4のIPアドレスしかなかったけれど、IPアドレスが使われていくにつれて、だんだんと不足していった。そこで、その不足を補うために、IPv6のIPアドレスが作られた。

NATゲートウェイは、プライベートサブネットからIPv4のIPアドレスでインターネットに繋ぐ。それに対し、Egress-Onlyインターネットゲートウェイは、プライベートサブネットからIPv6のIPアドレスでインターネットに繋ぐよ。

仮想プライベートゲートウェイ

仮想プライベートゲートウェイは、Amazon VPCをオンプレに繋げるための門。ルートテーブルで、行先を仮想プライベートゲートウェイに指定すると、オンプレに接続することができる。

仮想プライベートゲートウェイ VPVゲートウェイ

AWS Direct ConnectAWS VPNは、Amazon VPCとオンプレ間を接続する専用線のこと。

カスタマーゲートウェイは、仮想プライベートゲートウェイと同じ役割を持つもので、Amazon VPCとオンプレを接続する門。

カスタマーゲートウェイと仮想プライベートゲートウェイは、配置場所が異なるだけ。仮想プライベートゲートウェイはAWS側に、カスタマーゲートウェイはオンプレ側に配置するよ。

VPCピアリング

VPCピアリングは、2つのAmazon VPCをネットワークで接続するもの。異なるリージョンや、異なるAWSアカウントにあるAmazon VPC同士を、インターネットを介さずに接続することができる。

VPCピアリング

VPCピアリングは、間接的に繋ぐことができない

上では、VPC①とVPC②、VPC②とVPC③はVPCピアリングで接続されている。

しかし、これでVPC①とVPC③が繋がったことにはならない。VPC①とVPC③を繋ぐのであれば、VPC①とVPC③で直接VPCピアリングを行う必要がある。

プロトコルとポート番号

プロトコル ポート番号

ゲートウェイやVPCピアリングは、他国との繋がりを作るもの。ここからは、国内の繋がりを作る話に移るよ。

前提知識として、プロトコルポート番号というものがある。

プロトコルは、通信する時の決まりごと。IPアドレスが住所なら、プロトコルは配送方法のこと。車、船、飛行機など様々な配送方法があるように、通信する方法にも種類があり、それをプロトコルという。

プロトコルには、それぞれ番号が割り振られている。その番号のことを、ポート番号というよ。

ポート番号 プロトコル 正式名称 用途
20、21 FTP File Transfer Protocol ファイルの送受信
22 SSH Secure Shell リモート(遠隔)操作
23 Telnet Telnet リモート(遠隔)操作
25 SMTP Simple Mail Transfer Protocol メールの送信
53 DNS Domain Name System 名前解決
80 HTTP Hypertext Transfer Protocol インターネットでの通信(内容の暗号化なし)
110 POP3 Post Office Protocol version 3  メールの受信
143 IMAP4 Internet Mail Access Protocol version 4 メールの受信
443 HTTPS Hypertext Transfer Protocol Secure インターネットでの通信(内容の暗号化あり)
445 SMB Server Message Block ファイルやプリンター共有
1433 SQL Server Microsoft SQL Server Microsoft社のデータベースとの通信
1521 Oracle Database Oracle Database オラクル社のデータベースとの通信
2049 NFS Network File System ネットワークを経由したファイルシステムの通信
3306 MySQL、
Amazon Aurora
MySQL、Amazon Aurora MySQLやAmazon Auroraとの通信
3389 RDP Remote Desktop Protocol デスクトップのリモート(遠隔)操作
5432 PostgreSQL PostgreSQL PostgreSQLとの通信
5439 Redshift Amazon Redshift Amazon Redshiftとの通信

もっと見る



名前解決は、IPアドレスとドメイン名を変換すること。IPアドレスとドメイン名は、イコールの関係にある。IPアドレスはコンピュータ向け、ドメイン名は人向けの住所の書き方だよ。

MySQLPostgreSQLは、データベースエンジンと呼ばれるもので、今のところはデータベースの種類と思ってほしい。

Amazon AuroraAmazon Redshiftは、データベース関連のAWSリソース。

アクセス管理

Amazon VPCで分けたネットワークの内側は、セキュリティグループネットワークAccess Control List(ACL)で管理する。

これらでアクセス管理をする時、セキュリティの観点から、最小限の許可に留めることが望ましい。必要な通信のみ許可して、不要な通信は排除するよう心掛けるよ。

セキュリティグループとネットワークACLの違いについてはこちら。

  セキュリティグループ ネットワークACL
対象 インスタンスの通信 サブネットの通信
方向 インバウンドとアウトバウンドで制御 インバウンドとアウトバウンドで制御
ステート ステートフル ステートレス
デフォルト 全てのインバウンドを拒否、同じセキュリティグループ内のインスタンスのアウトバウンドのみ許可 全てのインバウンドとアウトバウンドを許可
順序性 全てのルールを適用 数字が低い方から適用

インスタンスは、何らかの実物のことで、例えばAmazon EC2やAmazon RDSのこと。

インバウンドは、外部からAmazon VPC内へ入ってくる内向きの制御のこと。

アウトバウンドは、Amazon VPC内から外部に出ていく外向きの制御のこと。

ステートフルは、状態を維持すること。行きのトラフィックが許可されれば、戻りのトラフィックも許可される。

ステートレスは、状態を維持しないこと。行きのトラフィックが許可されても、戻りのトラフィックも許可しない限り遮断される。



ステートフルとステートレスの違いはこちら。



  • ステートフル

    セキュリテイグループ ネットワークACL

    インバウンドとアウトバウンドで2つ許可されていれば、セキュリティグループ①とセキュリティグループ②は通信できる。

    行きの設定のみ必要だよ。

  • ステートレス

    セキュリテイグループ ネットワークACL

    インバウンドとアウトバウンドで4つ許可されていれば、ネットワークACL①とネットワークACL②は通信できる。

    行き帰りの両方で設定が必要だよ。

  • ステートフルとステートレス

    セキュリテイグループ ネットワークACL

    まとめると、インスタンス①とインスタンス②が通信するには、6つの許可が必要。

0 / 0

エンドポイント

エンドポイントは、Amazon VPC内からAmazon VPC外のAWSリソースに、ネットワークで接続するもの。基本的にAWSリソースはVPC内に配置するけど、例外的にVPC外に配置することもある。Amazon VPC外のAWSリソースと接続する場合、エンドポイントを介する必要があるよ。

エンドポイントには、ゲートウェイ型プライベートリンク型の2つがある。ゲートウェイ型は、Amazon VPC内からAmazon S3Amazon DynamoDBに接続することができる。プライベートリンク型は、Amazon VPC内からその他全てのAWSリソースに接続することができるよ。

VPCエンドポイント

AWS PrivateLinkは、ネットワークで接続するAWSリソース。

ENI(Elastic Network Interface)は、物理的な環境におけるNIC(Network Interface Card)のこと。NICは、インターネットと接続するための有線(LANケーブル)を挿す、PCにある穴だよ。

VPCフローログ

VPCフローログは、Amazon VPC内の通信のログを取るもの。ENIごとに、どのような通信が行われていたかを記録するよ。

VPCフローログで取得されるログは、IPアドレス、ポート番号、プロトコル、データ量など。障害が起きた時や、不正アクセスがされた際に、VPCフローログを分析すれば原因の特定に役立つよ。

コメントを残す

*