通过内部NLB从本地访问EKS集群应用超时问题求助
排查内部NLB访问EKS应用超时问题的步骤
1. 验证NLB源IP透传行为
- 检查NLB目标组配置:确认是否开启源IP保留(AWS NLB默认对TCP/UDP流量开启该特性)。可通过AWS CLI查看目标组属性:
aws elbv2 describe-target-groups --target-group-arn <你的目标组ARN> --query 'TargetGroups[0].PreserveClientIp' - 若开启源IP保留,EKS节点所在的10.0.0.0/16网段必须能路由回本地10.2.0.0/16,否则后端无法回包会导致超时。
2. 检查EKS节点子网的路由配置
- 查看EKS节点所在子网的路由表,确认是否存在指向本地10.2.0.0/16的路由条目,下一跳为Direct Connect的虚拟网关(VGW)。
- 若缺少该路由,需手动添加:将10.2.0.0/16的流量指向VGW,确保EKS节点能将回包发送到本地网络。
3. 核查安全组与网络ACL规则
- NLB安全组:确认是否允许本地10.2.0.0/16网段的流量访问NLB监听端口(如80/443)。
- Istio Ingress Gateway节点安全组:检查是否允许10.2.0.0/16的流量访问Gateway端口,同时允许回包流向10.2.0.0/16。
- EKS子网网络ACL:确认是否双向允许10.2.0.0/16与10.0.0.0/16之间的入站、出站流量。
4. 验证Istio流量控制策略
- 检查Istio Ingress Gateway的
AuthorizationPolicy等规则,确认是否存在限制10.2.0.0/16网段的配置。 - 查看Istio网关的访问日志,确认请求是否到达Gateway:
若日志无本地IP请求记录,说明流量未到达Gateway,问题出在VPC网络层;若有记录但无回包,检查Gateway到后端的路由或后端安全策略。kubectl logs -n istio-system <istio-ingressgateway-pod-name> -c istio-proxy | grep <本地客户端IP>
5. 对比NLB与ALB的转发差异测试
- ALB默认终止连接并使用自身IP作为源IP转发,因此后端仅需允许ALB子网IP;而NLB透传客户端源IP,后端需允许本地10.2.0.0/16网段。
- 可临时将NLB目标组的
preserve_client_ip设为false(仅支持IP模式目标组),测试是否能正常访问。若访问正常,即可确认是源IP透传导致的回路由或权限问题。
6. 抓包定位流量断点
- 在本地客户端抓包,确认请求已发送至NLB IP。
- 在NLB所在子网的节点抓包,确认是否接收来自本地的请求。
- 在运行Istio Gateway的EKS节点抓包,确认是否收到请求及是否发送回包。
- 若EKS节点发送了回包但本地未收到,检查Direct Connect的路由和VGW配置,确认回包路径是否正确。
内容的提问来源于stack exchange,提问作者Morariu
相关产品推荐
相关产品推荐

