ELB的设置
二、常见错误根因(你需要逐个排除)
分类 | 常见问题 | 原因解析 |
---|---|---|
子网配置 | 子网没有 IPv6 CIDR | ALB/NLB 只能监听 IPv6 地址但子网没配置 |
路由表错误 | 没有 ::/0 到 IGW 的路由 | IPv6 无法访问公网 |
安全组未放通 | 未允许 IPv6 的入站流量 | 默认安全组只放通 IPv4,IPv6 被丢弃 |
监听器未启用 IPv6 | 负载均衡器监听器配置不对 | 仅启用 IPv4,导致 IPv6 无响应 |
目标组未注册正确实例 | IPv6 路由到达,但目标组不通 | 健康检查失败 / 端口配置错 |
DNS 配置错误 | 没有 AAAA 记录 | IPv6 域名无响应或 DNS 不解析 |
三、标准排错步骤(强烈建议按顺序执行)
步骤 1:确认 ALB/NLB 是双栈(Dual-stack)
登录控制台 ➜ 查看对应负载均衡器是否配置了:
-
IPv4 + IPv6 Dual-stack
-
已绑定至少一个 IPv6 CIDR 的子网(必须)
检查:
aws elbv2 describe-load-balancers
步骤 2:检查 VPC 子网是否分配了 IPv6 CIDR
VPC 控制台 ➜ 查看:
-
每个公有子网是否有 IPv6 CIDR 块
-
实例是否分配了 IPv6 地址(自动或手动)
检查命令:
aws ec2 describe-subnets --query "Subnets[*].{ID:SubnetId,IPv6:Ipv6CidrBlockAssociationSet}"
步骤 3:检查子网路由表 ➜ 是否有 ::/0 路由到 IGW
IPv6 访问公网,必须添加:
::/0 → igw-xxxxxxxx
检查命令:
aws ec2 describe-route-tables --filters Name=association.subnet-id,Values=<subnet-id>
步骤 4:确认安全组放通 IPv6 入站流量
默认只放通 IPv4。
安全组中需添加:
Type: HTTP
Protocol: TCP
Port Range: 80 / 443
Source: ::/0
如果只写了 0.0.0.0/0
➜ IPv6 会被拒绝访问!
步骤 5:确认 ALB/NLB 的监听器支持 IPv6
进入 Load Balancer 配置:
-
Listener 设置是否启用了 IPv6
-
Target group 是否正确配置了目标端口 / 健康检查
如果是 NLB:
-
是否使用 TCP listener 且监听了 IPv6 子网
-
注册的 EC2 实例是否也有 IPv6 地址?
步骤 6:确认 DNS 配置有 AAAA 记录
进入 Route 53 控制台:
-
是否配置了一个
AAAA
类型的记录 ➜ 指向 ALB / NLB 的 IPv6 地址? -
测试:
dig AAAA yourdomain.com ping6 yourdomain.com
🔧 四、常用排查命令(CLI)
# 查看 EC2 的 IPv6 地址
aws ec2 describe-instances --query "Reservations[*].Instances[*].NetworkInterfaces[*].Ipv6Addresses"# 查看负载均衡器监听器
aws elbv2 describe-listeners --load-balancer-arn <arn># 路由表中是否有 ::/0
aws ec2 describe-route-tables --query "RouteTables[*].Routes[?DestinationIpv6CidrBlock=='::/0']"
五、总结一句话排错口诀
IPv6 能通必须三通:子网通 + 路由通 + 安全组通