2010年7月26日月曜日

EC2でマシンのIPアドレスで利用制限かけているWebアプリを利用

スズキです。

マシンに振られているIPアドレスで利用制限(Permission)をかけている、
Webアプリ(プログラム)ってあると思います。

そんなWebアプリをEC2上で利用するときのノウハウです。
EC2では、再起動するだけで、IPアドレスが変わってしまうので、
基本的に上記の用途で利用するのは難しい環境です。

まず、やらないといけないことは、下記の方法で、
Webアプリを利用できるIPアドレス(10.y.y.y)を、
仮想インターフェースに振ります。

▼仮想インターフェース(IPエイリアス)の作成(Linux)
http://blog.suz-lab.com/2010/03/iplinux.html
▼仮想インターフェース(IPエイリアス)の作成(Linux)の続き
http://blog.suz-lab.com/2010/03/iplinux_11.html
▼仮想インターフェースの作成
http://blog.suz-lab.com/2009/02/blog-post.html

実際に設定ファイル(/etc/sysconfig/network-scripts/ifcfg-eth0:1)は、
こんな感じになると思います。

--------【ifcfg-eth0:1】--------
DEVICE=eth0:1
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
NETWORK=10.y.y.y
BROADCAST=10.y.y.y
IPADDR=10.y.y.y
NETMASK=255.255.255.255
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
--------

そして、EC2に振られたIPアドレス(10.x.x.x)を10.y.y.yに転送するようにします。
この転送に関しては、いろんなレイヤーで、様々なやり方があると思います。

最初は、Apacheのmod_proxy系でいろいろ試したのですが、
SSLとかCookieの話などで、結局"iptables"を利用することで落ち着きました。

"iptables"の設定は下記のようになります。
(iptablesを再起動すると設定がクリアされてしまうので注意です)

# iptables -t nat -A PREROUTING -d 10.x.x.x -i eth0 -p tcp --dport 80
-j DNAT --to 10.y.y.y:80
# iptables -t nat -A PREROUTING -d 10.x.x.x -i eth0 -p tcp --dport 443
-j DNAT --to 10.y.y.y:443

これで、Webアプリは"10.x.x.x"でのアクセスを"10.y.y.y"でのアクセスと認識し、
制限が解除された状態で利用することができます。

大変だったなー...
--------
http://www.suz-lab.com

0 コメント: