使用网络服务器(apache 或 nginx),我能够找到x-forwarded-for
标头并找到客户端 IP,而不是 ELB 的 IP。
我可以使用相同的方法IPTables
来阻止某些 IP 地址吗?
我可以在网络服务器级别做到这一点。但是,我认为这有点低效,我希望我可以使用 IP Tables 或类似的东西来实现这一点?
使用网络服务器(apache 或 nginx),我能够找到x-forwarded-for
标头并找到客户端 IP,而不是 ELB 的 IP。
我可以使用相同的方法IPTables
来阻止某些 IP 地址吗?
我可以在网络服务器级别做到这一点。但是,我认为这有点低效,我希望我可以使用 IP Tables 或类似的东西来实现这一点?
自 7 月 30 日起,ELB 支持代理协议。正如AWS 论坛中此线程的结尾所述:
Elastic Load Balancing (ELB) 现在支持代理协议版本 1。此功能允许您在使用 TCP 负载平衡时识别客户端的连接信息,从而进一步了解您的应用程序的访问者。拥有此信息可用于分析流量日志、收集连接统计信息、故障排除或管理 IP 地址白名单。
您必须在 ELB 中启用代理协议。
开发者指南有更多关于代理协议的信息。
您不能使用 iptables 执行此操作,因为 iptables 只会看到弹性负载均衡器的 IP 地址,因为 ELB 是与您的实例建立连接的对象。
使用 Web 服务器阻止某些 x-forwarded-for 值并不是特别低效,但是如果您想控制谁可以通过 IP 地址访问您的 ELB,也可以通过附加到 ELB 的安全组来完成。
更新:您的评论部分正确,因为至少到目前为止,EC2“经典”上的 ELB 不支持入站安全组或网络访问控制列表,但 VPC 上的 ELB 支持。
Q:Elastic Load Balancer前端可以配置安全组吗?
如果您使用的是 Amazon Virtual Private Cloud,您可以为 Elastic Load Balancer 的前端配置安全组。— http://aws.amazon.com/ec2/faqs/#ELB6
当您需要允许一组相对较小的特定 IP 地址范围时,最容易使用安全组。如果您想允许大多数但阻止少数,那么VPC 网络访问控制列表是更简单的方法。