2012年3月1日木曜日

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

スズキです。

下記でNATインスタンスを実験する環境ができたので、
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            
...

NATインスタンスが完成したら、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インスタンス経由
で通信できるようにしています。


次は、さらにSquidもからめていきます!
--------
http://www.suz-lab.com

0 コメント: