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