今回は、プライベートサブネット内にEC2インスタンスを作成・運用した場合に、そのインスタンスからアウトバンドのインターネットアクセスをさせるケースとして、NATゲートウェイを設定する方法を紹介したいと思います。
下の構成図のプライベートサブネットのPrivateServerから、NATゲートウェイで外部アクセスできるようにします。PrivateServerの構築手順は本サイトで特に明記していませんが、こちらを参考に作成ください。(なお、セキュリティグループ設定時に、Privateサブネットのため、パブリックサブネットからのSSHも 許可することを忘れないようにしてください)
では、PrivateServerができているという環境から、NATゲートウェイの設定手順を紹介します。
1.NATゲートウェイの作成
AWSマネージドコンソールから、VPCの管理画面に行き、左メニューから「NATゲートウェイ」をクリック。
「NATゲートウェイの作成」をクリックします。
「NATゲートウェイの作成」画面で、”サブネット”、”Elastic IP割り当てID"、"タグ"をそれぞれ設定します。
サブネットでは、テキストボックスを選択し、割り当てるサブネットを選びます。ここで、パブリックサブネットを選択することが重要です。プライベートサブネットからの通信なので、プライベートサブネットを選択しがちですが、NATゲートウェイはパブリックサブネットを選択する必要があります。
Elastic IP割り当てIDも、同様にテキストボックスを選択し、割り振ることができるElastic IPが自動的に出力されるので任意の内容を選択します。割り当て可能なEIPがない場合は「新しいEIPの作成」ボタンをクリックすることにより、EIPを設定することから開始します。
タグは「Name」の設定をしておいた方がよいので、設定します。
ここでは下記の内容をそれぞれ設定します。
- サブネット:tancox-Publiczoneを選択
- Elastic IP割り当てID:選択したEIP
- タグ
- キー:Name
- 値:tancox-natgw
選択・入力後、「NATゲートウェイ作成」ボタンをクリック。
下図のような画面が出力されたら作成完了です。
引き続きルートテーブルを編集しますので、「ルートテーブルを編集」ボタンをクリックします。
2.ルートテーブルの作成
VPCのルートテーブル画面に遷移しますので、「ルートテーブルの作成」をクリックします。
「ルートテーブルの作成」画面で、”名前タグ”、”VPC"、"タグ"を設定します。
ここでは下記の内容をそれぞれ設定します。
- 名前タグ:tancox-natgw-rt
- VPC:tancoxを選択したVPC
- タグ
- キー:Name
- 値:tancox-natgw-rt
下図のように表示されたら作成できたので、「閉じる」ボタンをクリックします。
ルートテーブルの管理画面でも、作成したものが表示されます。
3.ルートの追加
作成したルートテーブルに、インターネットゲートウェイからインターネットに出るルートを追加します。
作成したルートテーブルを選択し、下部に出力された情報のうち「ルート」タブを選択し、「ルートの編集」ボタンをクリックします。
「ルートの編集」画面で「ルートの追加」をクリックします。
新たなテーブルが出力されるため、下記の内容を入力・選択します。
- 送信先:0.0.0.0/0
- ターゲット:tancox-natgwを選択
「ルートの保存」ボタンをクリックします。
下図のように表示されたら「閉じる」をクリックします。
元のルートテーブルの画面に戻り、新たなルートができているか確認します。
4.サブネットへの関連付け
最後にサブネット(今回ではPrivateサブネット)にルートテーブルを関連付けます。
AWSマネジメントコンソール画面のVPCの管理画面からサブネットを選択します。
該当のサブネット(tancoxのPrivateサブネット)を選択し、「ルートテーブル」タブをクリックします。「ルートテーブル関連付けの編集」ボタンをクリックします。
「ルートテーブル関連付けの編集」画面で「ルートテーブルID」のテキストボックスを選択し、先ほど作成した「tancox-natgw-rt」を選択します。
ルートテーブルの表が設定した内容に更新されたら「保存」ボタンをクリックします。
下図のように表示されたら正常完了のため、「閉じる」ボタンをクリックします。
サブネット情報の画面に戻るため、ルートテーブル内容が更新されたことを確認します。
これで設定作業は完了です。
5.確認
設定が成功したか確認します。ここでは、プライベートゾーンに設置したEC2インスタンスから、外部へ通信ができるかを確認してみます。
インスタンスへsshでログインします。
ただし、PrivateServerへ直接はできないため、PublicServer経由でログインします。
PublicServerにログイン後、秘密鍵をPublicServerに設置し(ここでは、~/.ssh/xxx.pemとして設置)、下記でログインします。
$ ssh -i .ssh/xxx.pem [PrivateServerのプライベートIPアドレス]
ログイン後、外部でPingを許可しているサイトへ実行し、通信が外部に通信できているか確認します。
[設定前]
$ ping ietf.org
PING ietf.org (4.31.198.44) 56(84) bytes of data.
^C
--- ietf.org ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1021ms
[設定後]
$ 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=41 time=122 ms
64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=41 time=121 ms
64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=3 ttl=41 time=121 ms
^C
--- ietf.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 121.824/121.922/122.085/0.419 ms
無事外部へ通信できていることが確認できたら、完了です。
コメント
コメントを投稿