##目標
AWSネットワーク上にNATインスタンスを構築し、プライベートインスタンスからのインターネット接続を可能にする。
NATインスタンス構築時のツールはiptablesを利用する。
##前提
・パブリックサブネット及びプライベートサブネットにEC2インスタンスが構築済みであること。
・プライベートインスタンス接続用の踏み台サーバが構築済みであること。
##完成フロー
①プライベートインスタンスからNATインスタンスへ接続する。
②NATインスタンスが送信元IPアドレスをグローバルIPアドレスへNAT変換し、インターネット接続する。
③インターネット側からのレスポンスがNATインスタンスへ返る。
④送信先IPアドレスをプライベートインスタンスのIPアドレスにNAT変換しレスポンスを届ける。
##作業の流れ
項番 | タイトル |
---|---|
1 | NATインスタンスのセットアップ |
2 | プライベートサブネットのルートテーブル修正 |
3 | 接続検証 |
##手順
###1.NATインスタンスのセットアップ
パブリックサブネットに作成済みのEC2インスタンスをNATインスタンス化させます。
①NATインスタンスのセキュリティグループ確認
22番ポートに加え、443番ポート(https)
が開いていることを確認します。
②送信元/送信先の変更チェック無効化(※)
EC2コンソールのアクション
⇒ネットワーキング
⇒送信元/送信先の変更チェック
⇒はい、無効化する
をクリック
※送信元/送信先の変更チェック無効化とは
EC2インスタンスはデフォルトで送信元/送信先チェックを有効化しています。つまり、対象のEC2インスタンス宛てでないパケットはデフォルトで弾く仕様ということです。
今回はインターネット宛てのパケットをEC2で経由させる必要があるためこの機能を無効化し、パケットを弾かせないように変更する必要があります。
③OSログインし、ルートユーザへスイッチ
sudo su -
④ip_forwardの有効化
異なるネットワークへのパケット転送を有効化するため、ip_forward
を有効化させます。
vi /etc/sysctl.conf
# 以下のエントリを追加する
net.ipv4.ip_forward=1
ネットワークを再起動してsysctl.confでの編集を有効化させます。
systemctl restart network
⑤NAT(IPマスカレード)の有効化
iptablesを利用してNAT(IPマスカレード)を有効化させます。
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
###2プライベートサブネットのルートテーブル修正
デフォルトゲートウェイをNATインスタンスに向けるようにプライベートサブネットのルートテーブルを修正します。
まず、VPCコンソールから対象のプライベートサブネットにアタッチされているルートテーブルを確認します。
デフォルトゲートウェイをNATインスタンスに向けるようにルートを追加します。
###3.接続検証
①踏み台サーバから手順2でセットアップしたプライベートインスタンスへ接続
ssh -i <keypairfile_pass> <private_ip>
②任意のインターネットサイトへcurl接続
接続先サイトからレスポンスが返ってきたらOKです!
curl "<URL>"