pandazx's blog

データ分析など雑多な技術ブログ

EC2にNATサーバ構築

本文

AmazonからはNAT Gatewayというマネージドサービスが提供されているが、お金が少しかかる。 そこで自前で用意する方法を説明する。

OS:Amazon Linux

NATサーバの設定

NATサーバを構築するEC2インスタンスはパブリックIPがあり、外につながっているとする。 以下を設定。IPアドレスに関する部分は適宜、読み替えて設定すること。

# NATのログを出力する場合。ログは /var/log/messages に出力される
sudo iptables -t nat -A POSTROUTING -j LOG

# 設定
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

# 設定の確認
sudo iptables -t nat -nL

# 設定の保存(保存しないと再起動で設定が初期化される)
sudo service iptables save

# forwardingの設定
vi /etc/sysctl.conf
#—————————————————-
#net.ipv4.ip_forward = 0
#↓
#net.ipv4.ip_forward = 1
#—————————————————-
# 設定の適用
sysctl -p

ブラウザでAWSのマネジメントコンソールにログインし、該当EC2インスタンスを右クリック→ネットワーキング→送信元/送信先の変更チェックを無効にする。

クライアントの設定

クライアントとなるEC2はパブリックIPがなく、プライベートIPのみとする。以下を設定。

# デフォルトゲートウェイをNATサーバに設定
sudo route del default gw 192.168.0.1
sudo route add default gw 192.168.0.8

sudo vim /etc/sysconfig/network
GATEWAY=192.168.0.8を追記設定

sudo service network restart
※少し時間がかかる

# 接続テスト
wget www.google.co.jp
index.htmlが作成されれば成功

ちなみに、各インスタンスの基本的なポートの開閉などはAWSのセキュリティグループでやればよい。

参考サイト(もっと詳しい説明があります):習うより慣れろ! iptablesテンプレート集(2):natテーブルを利用したLinuxルータの作成 (2/6) - @IT

以下の方法もあるらしい。

AWSでNAT構成を自前で用意する - のんびりSEの議事録