LoginSignup
2
1

More than 5 years have passed since last update.

グローバルIPが変わる環境でもAWS接続のACLを簡単に変更してアクセス

Last updated at Posted at 2015-11-06

AWS ではVPCのネットワークACLを利用してアクセス制限をかける。特に、ssh(ポート22) は特定のIPからの接続しか許可しないのが普通だと思う。セキュリティグループを使う場合もあるけど、ここでは、ネットワークACLで制限をかけている前提。

wifi ルーターなんかのグローバルIPが変動するもの経由でIPのしぼられたサーバに接続したい時、通常 VPN を使うだろうけども、それがない場合は ACL を変更してアクセスすることになる。そういう時の楽で間違えない対応方法ということで。

前提

環境は Mac で。Windows でも基本的に同じことができるが、sed とか無いので、bash とかを cygwin なんかで入れてもらうのがてっとりばやそう。

普通のやり方

いちいちAWSマネジメントコンソールにログインして VPC-->ネットワークACLのインバウンドを修正する、というのが普通のやり方。毎回は面倒くさい。

コマンドラインで出来ないか?

コマンドラインでこれを実現するには、
- 自分のグローバルIPの取得
- ACLの設定(変更)
ができれば良いよな、できるよな・・・と思い立った。

前準備

pip と awscli をインストールする。

コマンドラインで以下を実行。

install-pip-awscli
$ sudo easy_install pip
$ sudo pip install awscli

awscli 利用するために若干設定が必要だけど、これはいろんなところに情報あるので省略する。

自分のグローバルIPの取得方法

グローバルIPを返してくれるサービスを使う。ifconfig.me が定番だけどえらい遅いので、別のを使う。今回は、httpbin.org/ip を使った。レスポンスが json なんで、必要な所だけ切り出して使う。

get-my-global-ip
$ curl -s httpbin.org/ip | sed -n -e "s/.*: .\(.*\).$/\1/p"

これで、自分の IP アドレスだけ表示されたらOK。

aws コマンドと組み合わせたワンライナー

事前に書き換えたい network-acl-id、ACLの rule-number を確認しておいて、以上を使ったワンライナーが以下。ここでは network-acl-id が acl-acsdee9c9、ACLインバウンドの rule-number が2200番を指定した。

open-my-global-ip
$ aws ec2 replace-network-acl-entry --network-acl-id acl-acsdee9c9 --ingress --rule-number 2200 --protocol all --rule-action allow --cidr-block `curl -s httpbin.org/ip | sed -n -e "s/.*: .\(.*\).$/\1/p"`/32

長くてゴメン。

必要であればこれをそのままシェルスクリプトにすればいい。自分のグローバルIP の部分を任意のグローバルIPにすることも出来るので、日常のオペレーションでもこれを使ったほうが間違いが少ないように思う。

いじょ。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1