「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
NAT インスタンス
VPC でパブリックサブネットのネットワークアドレス変換 (NAT) インスタンスを使用し、プライベートサブネットのインスタンスからはインターネットや他の AWS のサービスへのアウトバウンド IPv4 トラフィックを開始できますが、インターネット上で他の人が開始したインバウンドトラフィックはインスタンスで受信しないようにすることができます。
パブリックサブネットとプライベートサブネットの詳細については、「サブネットのルーティング」を参照してください。NAT の詳細については、「NAT」を参照してください。
NAT では IPv6 トラフィックがサポートされていません。Egress-Only インターネットゲートウェイを使用してください。詳細については、「Egress-Only インターネットゲートウェイ」を参照してください。
NAT インスタンスのクォータは、リージョンのインスタンスのクォータによって異なります。詳細については、「EC2 のよくある質問
また、NAT ゲートウェイを使用することもできます。NAT ゲートウェイはマネージド NAT サービスであり、可用性と帯域幅に優れ、運用管理の手間を節約できます。一般的ユースケースには、NAT インスタンスではなく NAT ゲートウェイを使用することをお勧めします。詳細については、「NAT ゲートウェイ」および「NAT インスタンスと NAT ゲートウェイの比較」を参照してください。
内容
NAT インスタンスの基本
次の図は、NAT インスタンスの基本を示しています。メインルートテーブルはプライベートサブネットと関連付けられ、プライベートサブネットのインスタンスからパブリックサブネット内の NAT インスタンスにトラフィックを送信します。次に、NAT インスタンスは、そのトラフィックを VPC のインターネットゲートウェイに送信します。トラフィックは NAT インスタンスの Elastic IP アドレスによってもたらされます。NAT インスタンスは応答用に大きなポート番号を指定します。応答が戻ってきた場合、NAT インスタンスはそれをプライベートサブネット内のインスタンスに、応答用のポート番号に基づいて送信します。
プライベートサブネット内のインスタンスからのインターネットトラフィックは NAT インスタンスにルーティングされ、NAT インスタンスはインターネットと通信します。したがって、NAT インスタンスはインターネットにアクセスできる必要があります。また、パブリックサブネット (インターネットゲートウェイへのルートを持つルートテーブルを持つサブネット) に存在し、パブリック IP アドレスまたは Elastic IP アドレスを持っている必要があります。

NAT インスタンス AMI
Amazon では、NAT インスタンスとして実行されるように設定された Amazon Linux AMI を提供しています。これらの AMI の名前には文字列 amzn-ami-vpc-nat
が含まれているため、Amazon EC2 コンソールで識別することも、AWS CLI を使用して検索することもできます。
NAT AMI からインスタンスを起動すると、次の設定がインスタンスで発生します。
-
IPv4 転送が有効になり、ICMP リダイレクトが
/etc/sysctl.d/10-nat-settings.conf
で無効になります -
/usr/sbin/configure-pat.sh
にあるスクリプトが起動時に実行され、iptables IP マスカレードが設定されます
Amazon Linux サポートの詳細については、「Amazon Linux AMI に関するよくある質問
常に最新バージョンの NAT AMI を使用し、既存の NAT インスタンスを更新して設定およびセキュリティ更新を利用することをお勧めします。
NAT AMI の ID の取得
最新の Amazon Linux AMI 2018.03 を使用することをお勧めします。AMI ID のリストについては、「Amazon Linux AMI 2018.03 リリースノートamzn-ami-vpc-nat
を含む AMI を探し、その ID をコピーします。
AWS CLI を使用することもできます。describe-images
コマンドを使用し、フィルタを指定することで、Amazon が所有しており名前に文字列 amzn-ami-vpc-nat-2018.03
が含まれる AMI についてのみ結果を返します。次の例では、最新の AMI をすばやく特定できるように、--query
パラメータを使用して AMI ID、名前、および作成日のみを出力に表示しています。
aws ec2 describe-images --filter Name="owner-alias",Values="amazon" --filter Name="name",Values="amzn-ami-vpc-nat-2018.03*" --query "Images[*].[ImageId,Name,CreationDate]"
既存の NAT インスタンスの更新
NAT インスタンスが既にある場合は、次のコマンドを実行して、インスタンスにセキュリティ更新を適用します。
sudo yum update --security
また、AWS Systems Manager パッチマネージャーを使用して、セキュリティ関連の更新をインストールするプロセスを自動化することもできます。詳細については、AWS Systems Manager ユーザーガイドの「AWS Systems Manager Patch Manager」を参照してください。
NAT インスタンスを設定する
VPC ウィザードを使用すると、NAT インスタンスで VPC を設定できます。詳細については、「パブリックサブネットとプライベートサブネットを持つ VPC (NAT)」を参照してください。ウィザードは、NAT インスタンスの起動やルーティングのセットアップなどの多くの設定ステップを実行します。ただし、必要に応じて、次のステップを使用して VPC と NAT インスタンスを手動で作成および設定することができます。
開始する前に、NAT インスタンスとして実行するように設定されている AMI の ID を取得します。詳細については、「NAT AMI の ID の取得」を参照してください。
-
2 つのサブネットを持つ VPC を作成します。
注記 次のステップは、手動で VPC を作成および設定するためです。VPC ウィザードを使用する VPC の作成ではありません。
-
VPC を作成する (「VPC を作成する」を参照)
-
2 つのサブネットを作成する (「サブネットを作成する」を参照)
-
インターネットゲートウェイを VPC にアタッチする (「インターネットゲートウェイの作成とアタッチ」を参照)
-
VPC の外部宛てのトラフィックをインターネットゲートウェイに送信するカスタムルートテーブルを作成し、1 つのサブネットに関連付けて、パブリックサブネットにする (「カスタムルートテーブルを作成する」を参照)
-
-
NATSG セキュリティグループを作成します (「NATSG セキュリティグループを作成する」を参照)。このセキュリティグループは、NAT インスタンスの起動時に指定します。
-
NAT インスタンスとして実行されるように設定された AMI からパブリックサブネット内にインスタンスを起動します。
-
Amazon EC2 コンソールを開きます。
-
ダッシュボードで、[インスタンスの作成] ボタンを選択し、次のようにウィザードを実行します。
-
[Amazon マシンイメージ (AMI)] ページで、[コミュニティ AMI] カテゴリを選択します。検索フィールドに、特定しておいた AMI の ID を入力します。[Select] を選択します。
-
[インスタンスタイプの選択] ページでインスタンスタイプを選択し、[次の手順: インスタンスの詳細の設定] を選択します。
-
[インスタンスの詳細の設定] ページで、[ネットワーク] のリストから作成した VPC を選択し、[サブネット] のリストからパブリックサブネットを選択します。
-
(オプション) [パブリック IP] チェックボックスをオンにして、NAT インスタンスがパブリック IP アドレスを受け取るように指定します。ここでパブリック IP アドレスを割り当てない場合、Elastic IP アドレスを割り当てて、インスタンスの起動後にそのアドレスをインスタンスに割り当てることができます。起動時のパブリック IP の割り当ての詳細については、「インスタンス起動時のパブリック IPv4 アドレスの割り当て」を参照してください。[次の手順: ストレージの追加] を選択します。
-
インスタンスにストレージを追加することができます。次のページでは、タグを追加できます。完了したら、[次の手順: セキュリティグループの設定] を選択します。
-
[セキュリティグループの設定] ページで、[既存のセキュリティグループを選択する] オプションを選択し、作成した NATSG セキュリティグループを選択します。[Review and Launch] を選択します。
-
選択した設定を確認します。必要な変更を行い、[Launch] を選択し、キーペアを選択してインスタンスを起動します。
-
-
-
(オプション) NAT インスタンスに接続し、必要に応じて修正を加え、NAT インスタンスとして実行されるように設定された独自の AMI を作成します。この AMI は、次回 NAT インスタンスを起動する必要があるときに使用できます。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Amazon EBS-backed AMI の作成」を参照してください。
-
NAT インスタンスの
SrcDestCheck
属性を無効にします (「送信元/送信先チェックを無効にする」を参照)。 -
起動時に NAT インスタンスにパブリック IP アドレスを割り当てていない場合(手順 3)、Elastic IP アドレスをそのインスタンスに関連付ける必要があります。
-
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで [Elastic IPs] を選択し、[Allocate new address] を選択します。
-
[Allocate] を選択します。
-
リストから Elastic IP アドレスを選択し、[Actions]、[Associate address] を選択します。
-
ネットワークインターフェイスリソースを選択し、NAT インスタンスのネットワークインターフェイスを選択します。[Private IP] リストから Elastic IP アドレスを関連付けるアドレスを選択して、[Associate] を選択します。
-
-
メインルートテーブルを更新して、NAT インスタンスにトラフィックを送信します。詳細については、「メインルートテーブルを更新する」を参照してください。
コマンドラインを使用した NAT インスタンスの起動
サブネット内に NAT インスタンスを起動するには、次のいずれかのコマンドを使用します。詳細については、「Amazon VPC へのアクセス」を参照してください。NAT インスタンスとして実行するように設定されている AMI の ID を取得するには、「NAT AMI の ID の取得」を参照してください。
-
run-instances (AWS CLI)
-
New-EC2Instance (AWS Tools for Windows PowerShell)
NATSG セキュリティグループを作成する
次の表に示すように NATSG セキュリティグループを定義し、NAT インスタンスを有効にして、インターネットに接続されたトラフィックを、プライベートサブネットのインスタンスから受け取ります。また、SSH トラフィックをネットワークから受け取ります。また、NAT インスタンスは、インターネットにトラフィックを送信することもできます。これにより、プライベートサブネットのインスタンスがソフトウェア更新を取得できます。
Inbound |
|||
---|---|---|---|
Source
|
Protocol
|
Port range
|
Comments
|
|
TCP |
80 |
プライベートサブネットのサーバーからのインバウンド HTTP トラフィックを許可する |
|
TCP |
443 |
プライベートサブネットのサーバーからのインバウンド HTTPS トラフィックを許可する |
ホームネットワークのパブリック IP アドレスの範囲 |
TCP |
22 |
ホームネットワークから NAT インスタンスへのインバウンド SSH アクセス (インターネットゲートウェイ経由) を許可する |
|
|||
Destination
|
Protocol
|
Port range
|
Comments
|
|
TCP |
80 |
インターネットへのアウトバウンド HTTP アクセスを許可する |
|
TCP |
443 |
インターネットへのアウトバウンド HTTPS アクセスを許可する |
NATSG セキュリティグループを作成するには
-
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで [Security Groups] を選択して、[Create Security Group] を選択します。
-
[Create Security Group] ダイアログボックスで、セキュリティグループ名として
NATSG
を指定し、説明を入力します。[VPC] リストで VPC の ID を選択し、[Yes, Create] を選択します。 -
先ほど作成した NATSG セキュリティグループを選択します。詳細ペインに、セキュリティグループの詳細と、インバウンドルールおよびアウトバウンドルールを操作するためのタブが表示されます。
-
次に示すように、[Inbound Rules] タブを使用して、インバウンドトラフィックのルールを追加します。
-
[Edit] を選択します。
-
[Add another rule] を選択し、[Type] リストから [HTTP] を選択します。[Source] フィールドで、プライベートサブネットの IP アドレス範囲を指定します。
-
[Add another rule] を選択し、[Type] リストから [HTTPS] を選択します。[Source] フィールドで、プライベートサブネットの IP アドレス範囲を指定します。
-
[Add another rule] を選択し、[Type] リストから [SSH] を選択します。[Source] フィールドで、ネットワークのパブリック IP アドレス範囲を指定します。
-
[Save] を選択します。
-
-
次に示すように、[Outbound Rules] タブを使用して、アウトバウンドトラフィックのルールを追加します。
-
[Edit] を選択します。
-
[Add another rule] を選択し、[Type] リストから [HTTP] を選択します。[Destination] フィールドで、[
0.0.0.0/0
] と指定します。 -
[Add another rule] を選択し、[Type] リストから [HTTPS] を選択します。[Destination] フィールドで、[
0.0.0.0/0
] と指定します。 -
[Save] を選択します。
-
詳細については、「VPC のセキュリティグループ」を参照してください。
送信元/送信先チェックを無効にする
EC2 インスタンスは、送信元/送信先チェックをデフォルトで実行します。つまり、そのインスタンスは、そのインスタンスが送受信する任意のトラフィックの送信元または送信先である必要があります。しかし、NAT インスタンスは、送信元または送信先がそのインスタンスでないときにも、トラフィックを送受信できなければなりません。したがって、NAT インスタンスでは送信元/送信先チェックを無効にする必要があります。
実行中または停止している NAT インスタンスの SrcDestCheck
属性は、コンソールまたはコマンドラインを使用して無効にできます。
コンソールを使用して、送信元/送信先チェックを無効にするには
-
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ナビゲーションペインで、[インスタンス] を選択します。
-
NAT インスタンスを選択し、[Actions] (アクション)、[ネットワーキング]、[Change Source / Dest.Check] を選択します。
-
NAT インスタンスの場合は、この属性が無効になっていることを確認します。それ以外の場合は、[Yes, Disable] を選択します。
-
NAT インスタンスにセカンダリネットワークインターフェイスがある場合は、[Description] (説明) タブの [ネットワークインターフェイス] でそのインターフェイスを選択してから、インターフェイス ID を選択すると、ネットワークインターフェイスのページに移動します。[Actions] (アクション)、[送信元/送信先の変更チェック] の順に選択し、その設定を無効にして、[Save] (保存) を選択します。
コマンドラインを使用して送信元/送信先チェックを無効にするには
次のコマンドの 1 つを使用できます。詳細については、「Amazon VPC へのアクセス」を参照してください。
-
modify-instance-attribute (AWS CLI)
-
Edit-EC2InstanceAttribute (AWS Tools for Windows PowerShell)
メインルートテーブルを更新する
VPC 内のプライベートサブネットはカスタムルートテーブルに関連付けられないため、メインルートテーブルを使用します。デフォルトでは、メインルートテーブルによって、VPC 内のインスタンスはお互いに通信することができます。その他のすべてのサブネットトラフィックを NAT インスタンスに送信するルートを追加する必要があります。
メインルートテーブルを更新するには
-
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで、[Route Tables] を選択します。
-
VPC のメインルートテーブルを選択します ([Main] 列に [Yes] と表示されます)。詳細ペインには、ルート、関連付け、ルートのプロパゲーションを操作するタブが表示されます。
-
[Routes] タブで [Edit] を選択し、[Destination] ボックスに [
0.0.0.0/0
] と指定します。次に、[Target] リストから NAT インスタンスのインスタンス ID を選択して、[Save] を選択します。 -
[サブネットの関連付け] タブで [編集] を選択し、プライベートサブネットの [関連付け] チェックボックスをオンにします。[Save] を選択します。
詳細については、「ルートテーブル」を参照してください。
NAT インスタンスの設定のテスト
NAT インスタンスを起動して上記の設定手順を完了したら、テストを実行し、NAT インスタンスを踏み台サーバーとして使うことで、NAT インスタンス経由でプライベートサブネットのインスタンスからインターネットにアクセスできるかどうかを確認できます。これを行うには、インバウンドおよびアウトバウンドの ICMP トラフィックとアウトバウンドの SSH トラフィックを許可するように NAT インスタンスのセキュリティグループルールを更新し、プライベートサブネットでインスタンスを起動します。次に、プライベートサブネットのインスタンスにアクセスするように SSH エージェント転送を設定し、インスタンスに接続して、インターネット接続をテストします。
NAT インスタンスのセキュリティグループを更新するには
-
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ナビゲーションペインで、[Security Groups] を選択します。
-
NAT インスタンスに関連付けられたセキュリティグループを探し、[Inbound] タブで [Edit] を選択します。
-
[ルールの追加] を選択し、[タイプ] リストから [すべての ICMP - IPv4] を、[送信元] リストから [カスタム] を選択します。プライベートサブネットの IP アドレス範囲 (例:
10.0.1.0/24
) を入力します。[Save] を選択します。 -
[Outbound] タブで、[Edit] を選択します。
-
[ルールの追加] を選択し、[タイプ] リストから [SSH] を、[送信先] リストから [カスタム] を選択します。プライベートサブネットの IP アドレス範囲 (例:
10.0.1.0/24
) を入力します。[Save] を選択します。 -
[ルールの追加] を選択し、[タイプ] リストから [すべての ICMP - IPv4] を、[送信先] リストから [カスタム] を選択します。「
0.0.0.0/0
」と入力し、[Save] を選択します。
プライベートサブネット内にインスタンスを起動するには
-
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ナビゲーションペインで、[インスタンス] を選択します。
-
プライベートサブネット内にインスタンスを起動します。詳細については、「サブネット内にインスタンスを起動する」を参照してください。起動ウィザードの次のオプションを必ず設定し、[Launch] を選択します。
-
[Choose an Amazon Machine Image (AMI)] ページで、[Quick Start] カテゴリから [Amazon Linux AMI] を選択します。
-
[Configure Instance Details] ページで、[Subnet] リストからプライベートサブネットを選択します。このときに、インスタンスにパブリック IP アドレスを割り当てないでください。
-
[Configure Security Group] ページで、NAT インスタンスのプライベート IP アドレスからの SSH アクセス、またはパブリックサブネットの IP アドレス範囲からの SSH アクセスを許可するインバウンドルールがセキュリティグループに含まれていて、アウトバウンド ICMP トラフィックを許可するアウトバウンドルールがあることを確認します。
-
[Select an existing key pair or create a new key pair] ダイアログボックスで、NAT インスタンスの起動に使用したのと同じキーペアを選択します。
-
Linux または OS X の SSH エージェント転送を設定するには
-
ローカルマシンから、認証エージェントにプライベートキーを追加します。
Linux の場合、次のコマンドを使用します。
ssh-add -c
mykeypair
.pemOS X の場合、次のコマンドを使用します。
ssh-add -K
mykeypair
.pem -
-A
オプションを使用して NAT インスタンスに接続し、SSH エージェント転送を有効にします。その例を次に示します。ssh -A ec2-user@
54.0.0.123
Windows (PuTTY) 用に SSH エージェント転送を設定するには
-
既にインストールされていない場合は、PuTTY のダウンロードページ
から Pageant をダウンロードしてインストールします。 -
プライベートキーを .ppk 形式に変換します。詳細については、「PuTTYgen を使用してプライベートキーを変換する」を参照してください。
-
Pageant を起動し、タスクバーの Pageant アイコン (非表示の場合があります) を右クリックして、[Add Key] を選択します。作成した .ppk ファイルを選択し、必要に応じてパスフレーズを入力して、[Open] を選択します。
-
PuTTY セッションを開始して NAT インスタンスに接続します。[Auth] カテゴリで、必ず [Allow agent forwarding] オプションを選択し、[Private key file for authentication] フィールドは空のままにします。
インターネット接続をテストするには
-
ICMP が有効なウェブサイトに対して
ping
コマンドを実行して、NAT インスタンスがインターネットと通信できることをテストします。次に例を示します。ping ietf.org
PING ietf.org (4.31.198.44) 56(84) bytes of data. 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=48 time=74.9 ms 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=48 time=75.1 ms ...
ping
コマンドをキャンセルするには、Ctrl + C を押します。 -
NAT インスタンスから、プライベート IP アドレスを使用してプライベートサブネットのインスタンスに接続します。例:
ssh ec2-user@
10.0.1.123
-
プライベートインスタンスから
ping
コマンドを実行して、インターネットに接続できることをテストします。ping ietf.org
PING ietf.org (4.31.198.44) 56(84) bytes of data. 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=47 time=86.0 ms 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=47 time=75.6 ms ...
ping
コマンドをキャンセルするには、Ctrl + C を押します。ping
コマンドが失敗した場合、次の情報を確認します。-
NAT インスタンスのセキュリティグループルールで、プライベートサブネットからのインバウンド ICMP トラフィックを許可していることを確認します。許可していない場合、NAT インスタンスはプライベートインスタンスから
ping
コマンドを受け取ることができません。 -
ルートテーブルが正しく設定されていることを確認します。詳細については、「メインルートテーブルを更新する」を参照してください。
-
NAT インスタンスの送信元/送信先チェックを無効にしたことを確認します。詳細については、「送信元/送信先チェックを無効にする」を参照してください。
-
ICMP を有効にしたウェブサイトに対して ping を実行していることを確認します。そうでない場合、応答パケットを受け取ることはできません。これをテストするには、自分のコンピュータのコマンドラインターミナルから同じ
ping
コマンドを実行します。
-
-
(オプション)必要がなくなった場合は、プライベートインスタンスを終了します。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「インスタンスの終了」を参照してください。