首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内部网络负载平衡器在从实例X从北草坪会议大楼DNS中卷曲时不会路由到实例X

内部网络负载平衡器在从实例X从北草坪会议大楼DNS中卷曲时不会路由到实例X
EN

Stack Overflow用户
提问于 2019-05-28 06:31:24
回答 1查看 1K关注 0票数 3
  • 我有一个内部的网络负载平衡器(北草坪会议大楼)(解析为私有ips)。
  • 端口80上的北草坪会议大楼侦听器指向目标组。目标组中的一个实例10.141.80.140是唯一的实例。

问题:

当我是的实例10.141.80.140卷曲DNS的北草坪会议大楼,我没有得到响应。

预期北草坪会议大楼会重定向到10.141.80.140,但它没有发生。

当我在10.141.80.140上时,北草坪会议大楼DNS不会重定向--重定向是从同一子网中的其他实例进行的。

详细信息:

  • 围绕EC2 10.141.80.140的安全组是全球开放的、入站的和出站的
  • 当我使用相同的安全组和其他设置将来自另一个实例的10.141.80.122放在同一个子网中时,北草坪会议大楼将正确解析为10.141.80.140
  • 当我将北草坪会议大楼的DNS从实例中卷曲时,北草坪会议大楼应该将其解析为10.141.80.140 --北草坪会议大楼不将解析为10.141.80.140
  • 当我从实例10.141.80.140压缩实例ip 10.141.80.140时,我会得到一个响应
  • 当我从实例10.141.80.122压缩实例ip 10.141.80.140时,我会得到一个响应

问题:

是否有什么东西,是什么,阻止北草坪会议大楼解决一个实例的请求,将路由回实例,在北草坪会议大楼侦听器目标组?

EN

回答 1

Stack Overflow用户

发布于 2019-05-28 11:37:34

这是一个众所周知的行为,我很乐意向大家解释。网络负载均衡器引入了源地址保护功能--传入连接的原始IP地址和源端口保持不变。当目标响应请求时,VPC内部人员捕获此数据包并将其转发给北草坪会议大楼,后者将将其转发到其目的地。

这种行为有一个副作用:当操作系统内核检测到出口包有一个本地地址作为目标地址时,它将直接将该包转发给应用程序。

例如,给定以下组件:

  • 我们有一个内部的北草坪会议大楼和一个后端实例。两者都部署在子网10.0.0.0/24中。
  • 北草坪会议大楼拥有IP 10.0.0.10和端口80上的侦听器,它将请求转发到端口8080。
  • 后端实例的地址为10.0.0.55,web服务器监听端口8080。它有一个安全组,允许所有传入的本地通信量。
  • 如果实例试图与北草坪会议大楼建立联系,则来文的流程如下:
代码语言:javascript
复制
- The instance wants to telnet the NLB: it does a request for establish a TCP connection against the NLB DNS name on the port 80.  
    - As it is an outgoing communication, it starts from an ephemeral port; the instance sends a SYN packet (1):  
        - Source: 10.0.0.55:40000
        - Destination: 10.0.0.10:80

代码语言:javascript
复制
    - The NLB receives the packet and forwards it to the backend instance (10.0.0.55:80).
    - Due the address preservation feature, the backend instance receives a SYN packet with the following information:  
        - Source: 10.0.0.55:40000
        - Destination: 10.0.0.55:80

代码语言:javascript
复制
    - The Operation system routes the packet internally (as its destination is the own machine), and here is when the issue happen:  
        - The initiating socket is expecting the SYN\_ACK from 10.0.0.10:80 (the NLB).
        - However, it receives the SYN\_ACK from 10.0.0.55:40000 (the instance itself).
        - The OS will send several TCP\_RETRANSMISSION until it times out.

这将不会发生在一个公共的北草坪会议大楼,因为实例将需要在VPC中执行NAT来使用其公共IP地址将请求发送给北草坪会议大楼。内核不会内部转发数据包。

最后,一个可能的解决方法是根据后端的IP地址而不是其实例ID注册后端;使用此方法,由北草坪会议大楼转发的通信量将包含北草坪会议大楼内部IP作为源IP,从而禁用“源地址保存”功能。不幸的是,如果您使用AutoScaling组启动实例,它将只能通过其ID注册已启动的实例。如果是ECS任务,将网络配置为"awsvpc“将迫使北草坪会议大楼通过其IP注册每个目标。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56336216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档