share facebook facebook twitter menu hatena pocket slack

2012.03.02 FRI

Amazon VPCのNATインスタンスを作ってみる(iptables編)

鈴木 宏康

WRITTEN BY 鈴木 宏康

Amazon VPCのNATインスタンスを作ってみる(環境準備編)の記事で、実験する環境ができたので、
今回は、iptablesを利用して、実際にNATインスタンスとして動作するようにしてみます。

以下がNATインスタンス上での作業になります。

まずは、IPv4の転送が有効になるように、カーネルパラメータ(net.ipv4.ip_forward)の設定を0から1にします。

# cat /etc/sysctl.conf
...
# Controls IP packet forwarding
#net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 1
...

この設定を反映します。

# sysctl -p
net.ipv4.ip_forward = 1
...

そして、下記のようにiptablesでIPマスカレードの設定を行います。
(上記の設定でNATインスタンスとして機能します)

# /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -j MASQUERADE

念の為にIPマスカレードの設定を保存し、次回起動時にも有効になるようにします。

# /etc/init.d/iptables save
iptables: ファイアウォールのルールを /etc/sysconfig/iptable[ OK ]中:

この時のiptablesの設定状態は下記の通りです。

# iptables --list -t nat
...
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
...

それでは、TESTインスタンスから接続確認を行います。

下記のコマンドでHTTPの通信がNATインスタンス経由で成功していることが確認できます。

# curl www.suz-lab.com

… また、下記のコマンドでSSHの通信がNATインスタンス経由で成功していることが確認できます。

# ssh -i key.pem -l root xxx.xxx.xxx.xxx

… NATインスタンス経由の通信をIPアドレスやポートで制限する場合は、iptables等でもできますが、
セキュリティグループやNetwork ACLsで行う方が容易だと思います。

下記はセキュリティグループでHTTPとHTTPSのみNATインスタンス経由で
通信できるようにしています。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。 元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。