LoginSignup
11
7

More than 5 years have passed since last update.

AWS ElastiCacheに外部からtelnet接続

Posted at

AWS ElastiCacheは同一VPC内EC2からしかアクセスできないそうです。

ステップ 4: アクセスを許可する - Amazon ElastiCache より引用

すべての ElastiCache クラスターは Amazon EC2 インスタンスからアクセスするように設計されています。クラスターとその関連 EC2 インスタンスは同じ Amazon Virtual Private Cloud (Amazon VPC) にあることが必要です。同じ VPC 内の EC2 インスタンス以外の場所から ElastiCache クラスターにアクセスする必要がある場合は、回避策としてキャッシュの VPC 内に EC2 ホストを 1 つ以上セットアップして外部のプロキシとして動作させることができます。

そこで、言われたとおりEC2をプロキシにして外部ネットワークからの接続を試してみます。

手順

IPアドレスを下記のようにおきます。

  • AWS ElastiCache エンドポイントIP: xxx.xxx.xxx.xxx
  • AWS EC2 プロキシサーバ パブリックIP: yyy.yyy.yyy.yyy ※ElasticIP推奨
  • 外部のソースIP: zzz.zzz.zzz.zzz

ElastiCache構築

セキュリティグループで「セキュリティグループ自身からの11211ポート」を許可して構築します。
後は適当です。t2.microでmemcache1.4.24にしました。

EC2構築

セキュリティグループで「zzz.zzz.zzz.zzzからのSSH(22)ポート」「zzz.zzz.zzz.zzzからの11211ポート」を許可して構築します。
後は適当です。t2.nanoでAmazonLinuxにしました。

SSHでEC2インスタンス内に入り、iptablesによるIPフォワーディング設定を有効化します。

$ ssh -i ~/.ssh/(生成した鍵) ec2-user@yyy.yyy.yyy.yyy
$ sudo su -

# yum install telnet iptables
# sysctl -w net.ipv4.ip_forward = 1
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11211 -j DNAT --to xxx.xxx.xxx.xxx:11211

※sysctlとiptables設定は、ずっと使うなら/etc下に記述して永続化を推奨

接続確認

古の強大なTELNETプロトコルを使って接続の検証をします。

まず内部EC2から。

[ec2-user@ip-yyy-yyy-yyy-yyy ~]$ telnet xxx.xxx.xxx.xxx 11211
Trying xxx.xxx.xxx.xxx...
Connected to XXXXX.XXXXXX.XXXX.XXXXX.cache.amazonaws.com.
Escape character is '^]'.
^]

外部から。

[argus@01110110111 ~]$ telnet xxx.xxx.xxx.xxx 11211
Trying xxx.xxx.xxx.xxx...
Connected to XXXXX.XXXXXX.XXXX.XXXXX.cache.amazonaws.com.
Escape character is '^]'.
^]

成功しました。

参考文献

11
7
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
11
7