share facebook facebook twitter menu hatena pocket slack

2013.02.08 FRI

CloudInitでNATインスタンス(iptables)を構築

鈴木 宏康

WRITTEN BY 鈴木 宏康

以前紹介した記事「cloud-initでUser Dataを使ってEC2を最初に起動した時のみ任意のスクリプトを実行する」にて
初回起動時に任意のスクリプトを実行できるようにしました。

そこで今回は、こちらの記事「VPCのNATインスタンスを作ってみる(iptables編)」で紹介している
EC2上のNATインスタンスの構築(iptables関連)を、初回起動時に自動で行ってみました。

構築スクリプトは以下を利用しています。

suz-lab-centos-ami:suz-lab_nat

#!/bin/sh
set -e
trap 'echo "NG: $?"' ERR
FROM="net.ipv4.ip_forward = 0"
TO="net.ipv4.ip_forward = 1"
cp /etc/sysctl.conf /etc/sysctl.conf.org
sed -e "s/$FROM/$TO/" /etc/sysctl.conf.org > /etc/sysctl.conf
sysctl -p
iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -j MASQUERADE
service iptables save
service iptables start
chkconfig iptables on
exit 0

上記のスクリプトを、EC2起動時に次のように指定します。

#include-once
https://raw.github.com/suz-lab/suz-lab-centos-ami/master/share/cloud-init/suz-lab_nat

起動後ログインすると、下記のように確認できるはずです。

# service iptables status
テーブル: nat
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

上記作業はこちらのAMI「SUZ-LAB謹製 CentOS AMI (6.3.8 ap-northeast-1)」から
起動したEC2で行っているため、他の環境だと挙動が異なる可能性があります。

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

鈴木 宏康

鈴木 宏康

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