ネットワーク - SunHigh105/AWS_SAA GitHub Wiki
ネットワークの基礎
CIDR
- IPアドレス + サブネットマスク = IPの範囲
- 10.0.1.0/16 (IPアドレス / サブネットマスク)
- IPアドレス (0~255) 4つ 各桁が8つのバイナリ値
OSI参照モデル
- TCP/IPモデル
ポート番号
- 通信の出入り口 集合住宅のメールボックスのような役割
サブネット
- 左からX桁固定...ネットワーク部
- それ以降は自由...ホスト部
- 上限: 1リージョンあたり200サブネット
サブネットマスク
- /21: 2048
- /22: 1024
- /23: 512
- /24: 256
VPC
- AWSアカウント設定用の仮想ネットワーク
- 主な概念
- サブネット
- ルートテーブル
- インターネットゲートウェイ
- VPCエンドポイント
- CIDR
- VPC CIDRブロックサイズは 16~28 (参考: VPC の IP アドレス指定)
サブネット
- VPCのIPアドレス範囲
- VPC作成時にAZごとに一つ以上のサブネットが必要
- 作成されたサブネットは、VPCのメインルートテーブルに自動的に関連付けされる
- プライベートサブネットに設置されたインスタンスからのインターネット接続
- プライベートサブネット→NATゲートウェイで変換→インターネットゲートウェイ
パブリックサブネット
- インターネットゲートウェイにルーティングされる
プライベートサブネット
ルートテーブル
- 「ルート」と呼ばれる一連のルールを定義
- ルートには「送信先」と「ターゲット」が含まれる
- サブネットまたはゲートウェイからのネットワークトラフィックの経路を判断する際に使用される
サブネットルートテーブル
- 各サブネットはルートテーブルと関連づける必要あり
- 特定のルートテーブルを明示的に関連づけできる
- ↑以外の場合はメインルートテーブルに暗黙的に関連づけられる
メインルートテーブル
- VPC作成時に自動的に割り当て
- デフォルト以外のVPC作成時、デフォルトではローカルルートのみ含む
- できないこと
- 削除
- ゲートウェイテーブルをメインルートテーブルに設定
- できること
- カスタムサブネットルートテーブルに置き換え
- ルートの追加・削除・変更
- サブネットをメインルートテーブルに関連づけ
カスタムルートテーブル
- デフォルトでは空 必要に応じてルート追加
- インターネットゲートウェイを持つVPC作成時にカスタムルートテーブルが作成され、インターネットゲートウェイにルートが追加される
- 関連づけがない時のみ削除可
ゲートウェイルートテーブル
- VPCに入るトラフィックのルーティングパスを制御
セキュリティグループ
- インスタンスの仮装ファイアウォールとして機能 インバウンドトラフィックとアウトバンドトラフィックをコントロール
- サーバ単位(インスタンスレベル)でトラフィック制御
- 一つのインスタンスに最大5つ割り当て可
- ステートフル
- インバウンドのみ設定すればアウトバウンドも許可される
- 全てのルールを適用
デフォルトのセキュリティグループ
インバウンド
送信元 | プロトコル | ポート範囲 |
---|---|---|
セキュリティグループID | 全て | 全て |
アウトバウンド
送信元 | プロトコル | ポート範囲 |
---|---|---|
0.0.0.0/0 | 全て | 全て |
::/0 | 全て | 全て |
ネットワークACL
- 1つ以上のサブネットのファイアウォールとして機能
- VPC/サブネットに対するトラフィック制御
- 各サブネットにネットワークACLを関連づける必要あり
- ステートレス
- インバウンド設定だけではアウトバウンドは許可されない
- 上から順(低い値から高い値)にルール適用 設定され次第即反映
デフォルトのネットワークACL
※IPv6アドレスのルール適用条件
- IPv6 CIDRブロックを持つvpcを作成
- IPv6 CIDRブロックを既存のvpcと関連づけ
インバウンド
ルール番号 | プロトコル | ポート範囲 | 送信元 | 許可/拒否 |
---|---|---|---|---|
100 | 全て | 全て | 0.0.0.0/0 | 許可 |
101 | 全て | 全て | ::/0 | 許可 |
* | 全て | 全て | 0.0.0.0/0 | 拒否 |
* | 全て | 全て | ::/0 | 拒否 |
アウトバウンド
ルール番号 | プロトコル | ポート範囲 | 送信元 | 許可/拒否 |
---|---|---|---|---|
100 | 全て | 全て | 0.0.0.0/0 | 許可 |
101 | 全て | 全て | ::/0 | 許可 |
* | 全て | 全て | 0.0.0.0/0 | 拒否 |
* | 全て | 全て | ::/0 | 拒否 |
Ephemeral ports
- インスタンスで実行されるサービスへの接続を有効にするには、ネットワークACLで以下を設定する必要あり
- 指定したポートのインバウンドトラフィック
- Ephemeral portからのアウトバンドトラフィック
- ポート範囲はクライアントのオペレーティングシステムによって異なる
- Linuxカーネル: 32768-61000
NATゲートウェイ
- ネットワークアドレス変換(NAT)サービス
- NAT: グローバルIPアドレスとプライベートIPアドレスを対応づけ
- プライベートサブネットがVPC外部のサービスと接続できるが、外部サービスはインスタンスとは接続できない
- NAT ゲートウェイと NAT インスタンスの比較
- NATゲートウェイの使用が推奨されている(可用性と帯域幅が向上し、管理にかかる負担が軽減されるため)
接続タイプ
- パブリック(デフォルト)
- パブリックサブネット内に作成
- Elastic IPアドレスを関連づける必要あり
- トラフィックはVPCのインターネットゲートウェイにルーティング
- 他のVPCやオンプレミスネットワークに接続可
- Transit Gatewayまたは仮想プライベートゲートウェイ経由でルーティング
- プライベート
- Transit Gatewayまたは仮想プライベートゲートウェイ経由でルーティング可
- Elastic IP関連づけ不可
- VPCにインターネットゲートウェイをアタッチできるが、インターネットゲートウェイにトラフィックをルーティングするとトラフィックがドロップされる
IPマスカレード
- 複数のプライベートIPアドレスを一つのグローバルIPアドレスに対応づけ
DNS hostnamesオプション
- これを有効化することでサブネットで起動されたインスタンスがDNSを取得できる
- 設定方法: enableDnsSupport属性をtrue, enableDnsHostnames属性をtrueに設定
- 参考: VPC 内の DNS 属性
VPCエンドポイント
- グローバルIPアドレスをもつAWSサービスに対し、VPC内から(インターネットを介さず)直接アクセスできる
- アクセスするにはエンドポイントのリージョン指定が必要
$ aws s3 ls // アクセスできず $ aws s3 --region ap-northeast-1 // アクセス可能
インタフェースVPCエンドポイント (Privatelink型)
- プライベートIPアドレスを使用し、VPC内、オンプレミス、または別のAWSリージョンからリクエストをルーティング
- AWS PrivateLinkを使用するサービスに接続できる
- サービスとの通信にインターネットゲートウェイ、NATデバイス、パブリックIPアドレス、DirectConnect、サイト間VPNが不要
- サポート: API Gateway, CloudWatch, etc...
Gatewayエンドポイント
- ルートテーブルの指定されたターゲットとなるゲートウェイ
- サポート: Amazon S3, DynamoDB
共有VPC
- 複数のAWSアカウントでアプリケーションリソースをVPC内に作成できる
- グループ会社や事業部単位で複数のAWSアカウントを利用するケースに最適
VPCでのVPN接続
- カスタマーゲートウェイに静的ルートテーブルを構成
VPCフローログ
- EC2インスタンスとネットワークインターフェース間を往来するIPトラフィック情報をキャプチャできる
VPCピアリング接続
- 2つのVPC間でプライベートなトラフィックのルーティングを可能にする接続
ELB(Elastic Load Balancing)
- アプリケーションへのトラフィックを1つまたは複数のAZ内のターゲットに分散
- 統合された証明書管理、ユーザ認証、およびSSL/TLS復号化によりアプリケーションを保護
- タイプ
- ALB (Application): HTTP/HTTPの負荷分散 パスベースルーティング ターゲットグループでのヘルスチェック可
- NLB (Network): TCP, USD, TLSの負荷分散
- GLB (Gateway)
- スティッキーセッション
- 同一ユーザのセッションを全て同じインスタンスに送信
- Application Load Balancerのスティッキーセッション
- Connection Draning
- インスタンスの登録解除を報告する前に、ロードバランサーが接続を維持する最大時間を指定できる(1~3,600秒)
- 既存の接続を開いたまま、登録解除または異常なインスタンスに対して行われた実行中のリクエストを完了
- クロスゾーンロードバランシング: AZ間の分散を均等に実施
- 登録解除の遅延
- 登録解除するターゲットへのリクエスト送信を停止
- デフォルト: 300秒
- ターゲットに未処理のリクエストやアクティブな接続がない場合、遅延時間を待たずに即時に登録解除プロセスを終了する
AWSサイト間VPN (Site-to-Site VPN)
- VPN接続を経由して、オンプレミスネットワークをVPCと接続
- 即時実行できる
- インターネットプロトコルセキュリティ(IPsec)通信で暗号化されたVPNトンネルを作成できる
- カスタマーゲートウェイ: ユーザ側にある物理的なデバイスまたはアプリケーション(カスタマーゲートウェイデバイス)に関する情報をAWSに提供するAWSリソース
- 仮想プライベートゲートウェイ: サイト間VPN接続のAmazon側にあるVPNコンセントレータ
Accelerated VPN connection
- オンプレミスネットワークから、利用者のゲートウェイデバイスに最も近いAWSエッジロケーションにトラフィックをルーティング
- →高可用性・高パフォーマンスが維持される
AWS Transit Gateway
- 中央ハブを介してVPCとオンプレミスネットワークを接続
- VPC、オンプレミスデータセンター、リモートオフィスにそれぞれ単一の接続を構築して管理 → 運用コスト削減
- ネットワーク間のルーティングを制御
AWS Global Accelerator
- AWSのグローバルネットワークインフラを利用して、トラフィックのパフォーマンスを向上させるサービス
- 2つのグローバルな静的パブリックIPが提供され可用性向上、バックエンドでALB、NLB、EC2、ElasticIPなどのAWSアプリケーションエンドポイントを追加・削除
- 正常で利用可能なエンドポイントに自動的に再ルーティング
- アプリケーション保護
- デフォルトでAWS Shieldを使ってDDoS攻撃から保護
API Gateway
- フルマネージド型 簡単にAPIの作成、公開、保守などができる
- Lambdaと連携
- API Gateway で作成された APIはHTTPSエンドポイントのみ公開。HTTPはサポートしない
- AWS X-Ray: ユーザリクエストの追跡および分析
- スロットリング制限設定
- リクエスト過多でバックエンドサービスが処理しきれなくなるのを防ぐ
- 参考: API リクエストを調整してスループットを向上させる
- キャッシュ
- パフォーマンスが向上し、バックエンドに送信されるトラフィックが減少
- キャッシュキーの作成方法と各メソッドに保存されるデータの有効期間(TTL)を制御
- Cognito ユーザプールを使用して、API GatewayのAPIにアクセスできるユーザを制御
プロキシサーバ
- proxyは英語で「代理」の意味
- コンピュータにかわりインターネットに接続し、Webサイトへのアクセスなどを行うサーバ
- ネットワークへの不正アクセス防止、キャッシュなどに使える
- AWSでプロキシサーバを使うには、環境変数
HTTP_PROXY
およびHTTPS_PROXY
を設定- 参考: HTTPプロキシを使用する