[解決済み】AWS VPC - インターネットゲートウェイ vs. NAT【終了しました
質問
インターネットゲートウェイとは何ですか?NATインスタンスとは何ですか?どのようなサービスを提供しているのですか?
AWS VPCのドキュメントを読むと、プライベートIPアドレスをインターネットに接続可能なアドレスにマッピングしてリクエストを送信し、インターネットからのレスポンスをサブネット上のリクエスト送信者にルーティングしているようです。
では、両者の違いは何でしょうか?インターネットゲートウェイの代わりに(あるいはインターネットゲートウェイ以外に)NATインスタンスを使用する場合、どのようなシナリオになるのでしょうか。 NATインスタンスは、基本的に何らかのネットワーク・アプリケーションを実行するEC2インスタンスなのか、それともルーターのような特別なハードウェアなのでしょうか。
単純にAWSドキュメントのリンクを紹介するのではなく、パブリックサブネットとプライベートサブネットについて、ネットワークの知識が乏しい初心者が理解しやすいように、背景を補足しながら説明していただけないでしょうか。 また、NATインスタンスの代わりにNATゲートウェイを使用する必要があるのはどのような場合ですか?
P.S. 私はAWS VPCの初心者なので、ここでリンゴとオレンジを比べるかもしれません。
解決方法は?
インターネットゲートウェイ
インターネットゲートウェイは Amazon VPCとインターネット間の論理接続 . それは ではない 物理デバイスです。各VPCに1つだけ関連付けることができます。それは ではない インターネット接続の帯域幅を制限します。(帯域幅の制限は、Amazon EC2インスタンスのサイズのみであり、VPC内部およびインターネットへのすべてのトラフィックに適用されます。)
VPCの場合 はありません。 がインターネットゲートウェイを持つ場合、VPC内のリソースは インターネットからアクセスできない (トラフィックが企業ネットワークとVPN/Direct Connectを経由して流れる場合を除く)。
サブネットは、以下のようにみなされます。 パブリックサブネット インターネットゲートウェイにトラフィックを誘導するルートテーブルがある場合。
NATインスタンス
NATインスタンスは、インターネットにトラフィックを転送するように設定されたAmazon EC2インスタンスです。既存のAMIから起動することもできますし、このようにユーザーデータから設定することもできます。
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -j MASQUERADE
/sbin/iptables-save > /etc/sysconfig/iptables
mkdir -p /etc/sysctl.d/
cat <<EOF > /etc/sysctl.d/nat.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.eth0.send_redirects = 0
EOF
インターネットにアクセスしたいプライベートサブネット内のインスタンスは、ルートテーブルの設定により、インターネット行きのトラフィックをNATインスタンスに転送させることができます。NATインスタンスはその後、インターネットにリクエストを行い(パブリックサブネットにあるため)、レスポンスはプライベートインスタンスに転送されて戻ってきます。
NATインスタンスに送信されるトラフィックは、通常、NATインスタンス自体に関連しないIPアドレスに送信されます(インターネット上のサーバーが宛先となります)。そのため 送信元/送信先チェック オプションを使用すると、トラフィックはブロックされます。
NATゲートウェイ
AWSが導入した NATゲートウェイ・サービス NATインスタンスの代わりとなるものです。NAT Gatewayサービスを利用するメリットは、以下の通りです。
- フルマネージドサービスであり、作成するだけでフェイルオーバーを含め自動的に動作します。
- 最大10Gbpsのバーストが可能(NATインスタンスはEC2インスタンスタイプに関連する帯域幅に制限される)。
しかし
- セキュリティグループ 不可 NATゲートウェイに関連付けることができる
- 単一のAZでのみ動作するため、各AZに1つずつ必要です。
関連
-
[解決済み] Amazon S3のファイルやフォルダの名前を変更する方法は?
-
[解決済み] LATERAL VIEW EXPLODE in presto(ラテラルビュー エクスプロード イン プレスト
-
[解決済み] AWS-CLI: autoscalinggroupsをリストダウンする方法
-
[解決済み] MSCK REPAIR TABLEは裏で何をしているのか、なぜこんなに遅いのか?
-
[解決済み] DNS名foo.を持つRRSetはゾーンバーで許可されていません。
-
[解決済み] 新しいIAM管理者ユーザーに "この操作を実行する権限がありません "と表示される
-
[解決済み] アクセスポイントを経由してAmazon S3へのロールを認可する
-
[解決済み] ウェブサイトがAmazonネームサーバーを持っているが、別のサーバーでホストされている方法
-
[解決済み] aws-cliでdynamodbのitemを返却する方法
-
[解決済み] なぜVPCにプライベートサブネットが必要なのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AWS S3 Bucketの名前を変更する方法
-
[解決済み] AzureにはAWSのCloudFormationのようなIaCツールはあるのでしょうか?[クローズド]
-
[解決済み] AWS-CLI: autoscalinggroupsをリストダウンする方法
-
[解決済み] CloudFormation Stack Errors with REST API Doesn't Contain Any Methods
-
[解決済み] エラー: networkMode 'awsvpc' が指定された場合、ネットワーク構成を提供する必要があります。
-
[解決済み] スケジュールされたイベントソースをトリガーとするラムダ関数を設定するには、terraformを使用します。
-
[解決済み] コード NoSuchBucket
-
[解決済み] プライマリネームサーバが親に登録されていない
-
[解決済み] DynamoDBのBatchGetItemとQueryの違いとは?
-
[解決済み] EC2でインスタンスを削除するには?