LoginSignup
4
2

More than 3 years have passed since last update.

【NATインスタンス(AWS)】基本構築(iptables利用)

Last updated at Posted at 2020-07-14

目標

AWSネットワーク上にNATインスタンスを構築し、プライベートインスタンスからのインターネット接続を可能にする。
NATインスタンス構築時のツールはiptablesを利用する。

前提

・パブリックサブネット及びプライベートサブネットにEC2インスタンスが構築済みであること。
・プライベートインスタンス接続用の踏み台サーバが構築済みであること。

完成フロー

①プライベートインスタンスからNATインスタンスへ接続する。
②NATインスタンスが送信元IPアドレスをグローバルIPアドレスへNAT変換し、インターネット接続する。
③インターネット側からのレスポンスがNATインスタンスへ返る。
④送信先IPアドレスをプライベートインスタンスのIPアドレスにNAT変換しレスポンスを届ける。

nat (4).png

作業の流れ

項番 タイトル
1 NATインスタンスのセットアップ
2 プライベートサブネットのルートテーブル修正
3 接続検証

手順

1.NATインスタンスのセットアップ

パブリックサブネットに作成済みのEC2インスタンスをNATインスタンス化させます。

①NATインスタンスのセキュリティグループ確認
22番ポートに加え、443番ポート(https)が開いていることを確認します。
image.png

②送信元/送信先の変更チェック無効化(※)
EC2コンソールのアクションネットワーキング送信元/送信先の変更チェックはい、無効化するをクリック

※送信元/送信先の変更チェック無効化とは
EC2インスタンスはデフォルトで送信元/送信先チェックを有効化しています。つまり、対象のEC2インスタンス宛てでないパケットはデフォルトで弾く仕様ということです。
今回はインターネット宛てのパケットをEC2で経由させる必要があるためこの機能を無効化し、パケットを弾かせないように変更する必要があります。

tempsnip.png

③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コンソールから対象のプライベートサブネットにアタッチされているルートテーブルを確認します。
tempsnip.png

ルートの編集をクリック
tempsnip.png

デフォルトゲートウェイをNATインスタンスに向けるようにルートを追加します。
tempsnip.png

3.接続検証

①踏み台サーバから手順2でセットアップしたプライベートインスタンスへ接続


ssh -i <keypairfile_pass> <private_ip>

②任意のインターネットサイトへcurl接続
接続先サイトからレスポンスが返ってきたらOKです!


curl "<URL>"
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2