使用网络服务器(apache或nginx),我能够找到x-forwarded-for
标题并找到客户端IP而不是ELB的IP。
我可以使用IPTables
做同样的事情,以便我能够阻止某些IP地址吗?
我可以在网络服务器级别执行此操作。但是,我认为这样效率有点低,我希望能用IP表或类似的东西实现这个目标吗?
答案 0 :(得分:13)
自7月30日起,ELB支持Proxy Protocol。如this thread in the AWS forum末尾所述:
Elastic Load Balancing(ELB)现在支持代理协议版本1。 此功能允许您识别客户端的连接 使用TCP负载平衡时的信息,提供额外的 洞察您的应用程序的访问者。有这个信息 可用于分析流量日志,收集连接 统计,故障排除或管理IP地址白名单。
您必须enable Proxy Protocol in the ELB。
developers guide提供了有关代理协议的更多信息。
答案 1 :(得分:6)
你不能用iptables做这件事,因为iptables只会看到弹性负载均衡器的IP地址,因为ELB正在建立与你的实例的连接。
使用Web服务器阻止某些x-forwarded-for值并不是特别低效,但是如果您想控制谁可以通过IP地址访问您的ELB,那么也可以通过连接到ELB的安全组来完成
更新:您的评论部分正确,因为至少截至目前,EC2“经典”上的ELB不支持入站安全组或网络访问控制列表,但是VPC上的ELB会支持。
问:我可以为Elastic Load Balancer的前端配置安全组吗?
如果您使用的是亚马逊虚拟私有云,则可以为Elastic Load Balancer的前端配置安全组。 - http://aws.amazon.com/ec2/faqs/#ELB6
当您需要允许一组相对较小的特定IP地址范围时,最容易使用安全组。如果你想允许大多数但是阻止一些,那么VPC Network Access Control List是更容易的方法。