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)監修のもと掲載しています。 元記事は、こちら