Security Groupとエンドポイントの名前解決

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

セキュリティグループでセキュリティグループを指定する

AWSのセキュリティグループ(以下SG)で、[送信元]にSGのID(sg-××××)を指定することができます。
その場合、そのSGに属しているEC2からの接続を許可することになります。

下記のようにSG自身をそのSGで許可すると、そのSGに属している全EC2間の通信が許可されます。

このようなSGがアタッチされたEC2、SERVER-AとSERVER-Bで検証を行います。
下記のように、プライベートIPで疎通が確認できます。

しかし、グローバルIPにpingを打つと疎通が取れなくなります。

SGをSGで許可する方法はプライベートネットワーク内でのみ有効なようです。

疑問:各エンドポイントへの接続に関して

しかし、そこで1つ疑問が湧きました。

BeanstalkでEC2+RDS+AutoScalingを半自動構築しました。
RDSのSGで、EC2に適用されているSGからのDBポートが許可されています。

RDSへの接続手段はエンドポイント(~~~.rds.amazonaws.com)しかなく、
エンドポイントはCNAMEである以上、DNSで名前解決される必要があります。

SGをSGで許可する方法はプライベートネットワーク内でのみ有効なので
DNSに問い合わせる為にグローバルネットワークに出てしまうと
EC2-RDS間で通信が出来なくなってしまうのではないでしょうか?

VPC(プライベートネットワーク)内での名前解決

しかし実際は、EC2からRDSへの接続が確認できました。
(Beanstalkで構築したので当然といえば当然ですが)

どうやら、同一のVPC内であればエンドポイントは
プライベートネットワーク内で名前解決されるようです。
下記digは、RDSと同一のBeanstalk環境(同一のVPC内)のEC2から実行しています。

他のVPCのEC2からdigするとグローバルIPを引っ張ってきます。

このVPC内での名前解決はVPCデフォルトの動作で、
下記のようにVPCのコンパネから設定を変更することが出来ます。

まとめ

①SGをSGで許可する方法はプライベートネットワーク内でのみ有効である
②RDSなどのエンドポイントは、デフォルトで、プライベートネットワーク(同一のVPC)内で名前解決される

投稿者プロフィール

sato
2015年8月入社。弊社はインフラ屋ですが、アプリも作ってみたいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.