Edited at

AWSでEC2インスタンスを利用してNATを構築方法

More than 1 year has passed since last update.


背景

既存のAWSのNAT Gateway がない時代にNATを利用したネットワーク環境が欲しいとのことなので、

構築した内容を記載します。


短くいうと


準備するもの

公式の図を参考にしつつ値を決めていく。

nat-instance-diagram.png

 


設定値を準備する

項目

備考

VPCのアドレス
10.0.0.0/16
10.0.0.1 ~ 10.0.255.255のVPC

AZ用のサブネット(a)
10.0.0.0/24
publicIPを付与するサブネ

AZ用のサブネット(a)
10.0.1.0/24
privateIPを付与するサブネ

※AZはavailabilityzoneの略称です。


VPCを作る

とりあえず適当に設定する。

vpcを作成するの内容を参考にポチポチポチっとVPCを作成する


Subnetを作る

AZ用のサブネット(a)の値を参考にしてサブネットを作成します。

今回はpublicとprivateをそれぞれ作成します。


  • publicは紐づけられたGlobalIPを使用した通信をします。

  • privateはNAT経由で外部との通信をします。

サブネットを作成する


IGWを作る

新しくIGWを作成します。

特段気にする事が無いので、ただただ作ります。

インターネットゲートウェイをアタッチする


カスタムテーブルを設定する。

作成したVPCのサブネット(public)と作成したIGWを紐付けます。

これにより、

private-subnetからの通信をpublic-subnet経由で外部と通信ができる一番外側の設定が完了します。

設定はまだまだ続きます。

パブリックサブネットにする カスタムテーブルを設定する。


NATのセキュリティグループを作成する。

NATSGと表記されている部分です。

NATのセキュリティグループを作成します。

後から変更も可能なのでとりあえず作ってみましょう。

NATSG セキュリティグループを作成する


NATインスタンスを作成する。

ドキュメントではNAT用のAMIを使用しています。

今回は標準のamazonOSから作成します。


  • EC2からamazonOSを選択肢立ち上げます。

  • ElasticIPを付与します。(GlobalIPを付与する。)

  • SSHでログイン後以下のコマンドを実行します。

### [NAT Instance]

$ /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -j MASQUERADE
$ /sbin/iptables-save > /etc/sysconfig/iptables
$ echo 1 > /proc/sys/net/ipv4/ip_forward && echo 0 > % /proc/sys/net/ipv4/conf/eth0/send_redirects
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