通过ELB的访问日志查询客户端请求源IP
应用场景
使用弹性负载均衡ELB进行业务转发时,获取客户端请求的真实源IP对于数据分析和业务安全防护至关重要。
ELB支持将七层监听器转发的业务接入云日志服务进行分析,通过ELB的访问日志记录即可快速查询访问客户端请求的源IP。
约束与限制
仅采用HTTP/HTTPS/QUIC/TLS监听器的负载均衡实例支持配置访问日志。
准备工作
- 已创建独享型ELB实例,且ELB已绑定EIP。具体操作,请参见购买独享型负载均衡器和绑定IPv4公网IP。
- 已创建协议类型为HTTPS协议的后端服务器组,服务器组中添加ECS01实例。ECS实例与ELB位于同一VPC内,并且在ECS01中部署了应用服务,部署测试业务详情请参见搭建后端服务。
- 您已经开通了云日志服务,并且已经创建了日志组和日志流。具体操作,请参见弹性负载均衡 ELB接入LTS。
- 为日志流设置云端结构化解析模板,系统模板选择ELB。具体操作,请参见设置日志云端结构化解析。
步骤一:上传服务器证书到ELB控制台
在ELB添加HTTPS监听器前,您需要将您的证书上传到将ELB控制台。
- 进入弹性负载均衡列表页面。
- 在左侧导航栏单击“证书管理”。
- 单击“创建证书”,配置参数请参见表1。
表1 服务器证书参数说明 参数
说明
证书类型
创建证书的类型,本文选择服务器证书。
证书来源
服务器证书同时支持SSL证书管理服务提供的数字证书和您的自有证书。
本文选择“SSL证书管理”以同步您在华为云云证书管理服务已经购买的SSL证书。
证书
选择您需要上传到ELB控制台的证书。
企业项目
企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。
SNI扩展域名(可选)
将自动同步SSL证书已绑定的所有域名。
当您的证书用于配置SNI证书时,将支持根据客户端HTTPS请求的域名来选择对应的SNI证书完成认证。
描述
添加对该证书的描述信息,非必填项。
- 单击“确定”,完成创建。
步骤二:添加HTTPS监听器并配置单向认证
- 进入弹性负载均衡列表页面。
- 在目标弹性负载均衡实例的操作列,单击“添加监听器”。
- 在添加监听器页面,协议类型选择“HTTPS”,“SSL解析方式”选择“单向认证”,
在服务器证书的配置项中选择步骤一中上传到ELB控制台的服务器证书。
独享型ELB的HTTPS协议监听器默认开启“获取客户端IP”功能,支持通过X-Forwarded-For字段传递客户端的真实IP。
图1 添加HTTPS监听器并配置单向认证 - 单击“下一步:配置后端分配策略”,后端服务器组参数选择“使用已有”。
- 确认配置参数后,单击“提交”,完成HTTPS监听器的创建。
步骤三:配置ELB访问日志
- 进入弹性负载均衡列表页面。
- 在“负载均衡器”界面,单击需要配置访问日志的负载均衡器名称。
- 在该负载均衡器界面的“访问日志”页签,单击“配置访问日志”。
- 开启日志记录,选择您在云日志服务中创建的日志组和日志流。
图2 配置ELB访问日志图3 配置ELB访问日志
- 单击“确定”,配置完成。
步骤四:通过弹性公网IP访问ELB
步骤五:通过访问日志查询客户端IP
- 在弹性负载均衡实例的“访问日志”页签,单击“查看详细日志”,访问云日志服务的日志管理列表页。
图5 查看访问日志的日志组
- 在日志组的列表页,单击日志流名称,进入日志流详情页查看日志。
图6 查看日志流
- 在日志流详情页面,直接查看日志列表的相关字段,即可查看客户端请求的源IP。
- 客户端直接访问ELB实例时:日志字段“remote_addr”即为客户端源IP。
- 客户端通过代理服务器访问ELB实例时:日志字段“http_x_forwarded_for”中的第一个IP地址即为客户端源IP。
在日志数据中查找包含特定关键词的日志记录,或者根据时间范围来检索日志数据,搜索详情请参考搜索日志。
表2 访问日志字段说明 参数
描述
取值说明
remote_addr: remote_port
客户端IP地址:客户端端口。
记录客户端IP地址和客户端端口号。
http_x_forwarded_for
ELB收到请求头中的http_x_forwarded_for,表示请求经过代理服务器。
记录请求经过链路的IP地址,第一个IP地址为客户端源IP。
图7 查看客户端源IP地址