本文指导您如何配置双栈 ALB 实例,以实现 ALB 承接 IPv4 、IPv6 的业务流量。通过参考本文的配置步骤,您的双栈 ALB 实例可以将 IPv4 、IPv6 的业务流量转发至后端服务器,从而使 IPv6 网络的客户端请求也能访问后端服务。
您的业务希望利用 ALB 转发来自 IPv6 客户端的请求,IPv6 客户端通过 ALB 正常访问后端服务器。
说明
100.64.0.0/10
服务网段。具体配置请参考搭建后端服务器安全组放通 ALB。在 ECS-02 中部署 Nginx 服务。yum install -y nginx && systemctl start nginx && systemctl status nginx && cd /usr/share/nginx/html/ && echo "Hello World! this is ipv4 rs." > index.html
注意
登录火山引擎应用型负载均衡控制台,完成如下操作。
假设你测试的应用服务域名为alb.example.com
。实际测试时,请将alb.example.com
替换为您的服务域名。
ping6 检查:
ping6 alb.example.com
如果返回了响应,说明 alb.example.com
已经成功解析到了一个 IPv6 地址且网络路径通畅。
dig 检查:
dig alb.example.com
您可获取并查看服务域名的详细 DNS 解析信息,以确定解析结果是否符合预期。
前置工作:
确保 Nginx 配置记录 X-Forwarded-For
头部:在 Nginx 配置文件(如 /etc/nginx/nginx.conf
或 /etc/nginx/conf.d/default.conf
)中增加或修改日志格式,确保包含 X-Forwarded-For
头部。
打开配置文件/etc/nginx/nginx.conf
。
sudo vim /etc/nginx/nginx.conf
在 http 块中添加或修改日志格式。
http { log_format custom '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log custom; ... }
重新加载或重启 Nginx 配置:修改完配置文件后,重新加载 Nginx 配置以使更改生效。
sudo systemctl reload nginx
利用 ECS-01 模拟 IPv6 客户端使用curl
访问服务域名
输入curl
命令。实际测试时,请将alb.example.com
替换为您的服务域名。
curl -6 -g -I http://alb.example.com
您可获取服务器响应的基本情况,如下图所示,表示您的服务已接入 ALB 。
在服务端 Nginx 上查看访问日志,可发现在 x-forwarded-for
中存在 IPv6 客户端真实 IP 地址。使用如下命令:
grep 'X-Forwarded-For' /var/log/nginx/access.log
您也可通过抓包工具来获取 x-forwarded-for
的信息。 x-forwarded-for
信息表明,IPv6 客户端已经成功接入 ALB。
答:ALB 会将真实的客户端 IP (IPv4 或者 IPv6)放在 HTTP 头部的 X-Forwarded-For
字段,字段中的第一个地址就是客户端真实 IP。
答:建议您优先检查后端应用服务运行状态是否正常,例如:
100.64.0.0/10
。答:您可参考以下两种方式: