我们有一个通过 Web 服务进行通信的应用程序。我们需要区分来自我们系统外部的请求和来自我们 AWS 账户中另一个 EC2 盒子的请求。
理想的解决方案是查看原始 IP 地址并检测它是在网络内部还是外部。在我们的办公室里,我们需要做的就是寻找来自 192.168.xx 的请求,不过我的猜测是,它在亚马逊上并不那么简单。
如何判断 http 请求是否来自我账户中的 EC2 实例?
我们有一个通过 Web 服务进行通信的应用程序。我们需要区分来自我们系统外部的请求和来自我们 AWS 账户中另一个 EC2 盒子的请求。
理想的解决方案是查看原始 IP 地址并检测它是在网络内部还是外部。在我们的办公室里,我们需要做的就是寻找来自 192.168.xx 的请求,不过我的猜测是,它在亚马逊上并不那么简单。
如何判断 http 请求是否来自我账户中的 EC2 实例?
如果 EC2 实例位于同一区域,您可以创建一个安全组,该安全组仅允许来自该安全组中其他计算机的流量通过特定端口号(例如 8888)进入。将所有机器添加到该组。然后,您可以添加另一个 Web 服务器实例来侦听该端口,并知道请求只能来自您的计算机。
每当您有两个或更多 EC2 实例需要相互通信时,最佳实践是在VPC中预置您的实例。有效地将 AWS 云网络的一个角落分割为您自己的私人用途(类似于 VLAN)。这很容易解决您的问题,因为请求将来自您指定的任何私有地址范围。
实际上,只需查看请求是否来自EC2 保留的任何 AWS公共 IP 地址范围。与检查 192.168.xx 基本相同
希望有帮助!
在您的应用程序中,您可以简单地专门限制对其他实例的 IP 的访问。
使用AWS Unified CLI 工具和可选的(但推荐的)jq工具,您可以执行以下操作:
aws ec2 describe-instances \
| jq ".Reservations[].Instances[].NetworkInterfaces[].IpAddress"
这将为您提供与您的 AWS 账户关联的所有 EC2 实例的所有 IP 地址的列表。