单一公共IP

时间:2015-10-14 13:45:46

标签: selenium amazon-ec2 nat

亲爱的开发人员,

我的问题非常简单但我无法在任何地方找到答案,也许我缺少一些路由/代理教育。

它是这样的:

  • 我实例化了几个运行Selenium的EC2实例以及我编写的PHP API中的一堆其他软件
  • 目标应用程序我在EC2实例上测试了几个selenium正在接受来自受限制的IP列表的入站连接
  • 我怎样才能告诉我的selenium测试总是使用相同的公共IP来寻找目标应用程序?

我的第一个猜测是NAT /代理来自我所有的硒EC2实例的流量通过单个EC2实例,该实例将具有我可以在目标应用程序中设置的单个公共IP。

然后我迷失了(淹死)了AWS VPC,其他东西等等。

你可以帮我解决这个问题吗?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

哇,你实际上在这里问了很多。

听起来您希望通过仅允许Selenium实例(以及可能的其他实例)访问它来保护您的应用程序。

最明显的做法是为您的Selenium实例提供一个静态IP,亚马逊称之为弹性IP。在向亚马逊询问更多信息之前,您每个地区只能获得5个IP。因此,如果您有超过1或2个Selenium实例,这将不切实际。

如果您没有使用VPC,您应该考虑进行设置。一开始看起来有点复杂,但这使得你在这里尝试做的事情非常容易。

使用VPC,您可以让所有实例通过内部IP地址相互通信,只要它们位于同一区域。

如果它们不在同一区域,您可以在每个区域中设置NAT实例。为NAT实例分配弹性IP。然后,该区域中的所有其他实例将通过NAT实例访问其区域外的服务器。从外部服务器的角度来看,它们的源IP将是NAT的IP。

那么这一切会给你什么呢?

好吧,假设您在VPC内的同一区域中设置了所有实例。然后,您可以将应用程序服务器分配给安全组,该组允许来自selenium实例的内部IP的传入HTTP / HTTPS连接。您甚至可以为该应用程序和该VPC中的selenium实例创建不同的子网,并设置安全组以允许来自整个selenium子网的传入连接。对每个服务器类型进行子网划分对于您的用例可能过度。这实际上取决于您对VPC网络的控制程度。

我认为解释如何设置VPC不在此答案范围内。我确实认为设置VPC对你来说是正确的选择。一个好的起点是亚马逊的文档:

https://aws.amazon.com/documentation/vpc/

在谷歌搜索有关设置VPC的博客条目等内容也是值得的。其他人在设置他们的第一个VPC时会犯很多错误,你可以通过阅读来避免这些错误。