文档首页/ 弹性负载均衡 ELB/ 最佳实践/ 高级功能/ 通过NAT网关SNAT规则实现独享型ELB将流量送至公网IP地址后端服务器
更新时间:2026-10-20 GMT+08:00
分享

通过NAT网关SNAT规则实现独享型ELB将流量送至公网IP地址后端服务器

应用场景

在华为云组网场景中,当您需要使用弹性负载均衡(ELB)将客户端请求经公网转发至后端服务器时,可采用独享型ELB + NAT网关(SNAT)的组合方案,该方案通过ELB的IP类型后端与NAT网关的SNAT规则实现ELB将流量通过公网IP传输到后端服务器。

典型场景

  • 后端服务器位于云下IDC(Internet Data Center),需要通过公网与ELB通信
  • 后端服务器部署在其它VPC或其它云平台,需经公网可达
  • 需要利用公网链路实现跨地域/跨云的负载均衡流量分发

流量链路

客户端 → ELB → SNAT → 公网IP → 目的服务器

方案架构

架构说明

本实践方案在同一个VPC下创建独享型ELB实例和NAT网关,利用NAT网关的SNAT功能将ELB转发流量经公网IP到达后端目的服务器。

架构要素

组件

说明

独享型ELB(ELB-Test)

在VPC-Test中创建,开启“IP类型后端”开关,绑定EIP对外提供服务

NAT网关(NAT-Test)

在VPC-Test中创建,开启SNAT功能,为VPC内子网提供SNAT转换能力

SNAT+弹性公网IP

NAT网关绑定的EIP,用于SNAT源地址转换,将私网流量转换为公网流量

后端目的服务器

位于公网可达位置的服务器,通过公网IP接收ELB转发的请求

客户端

通过ELB的EIP访问服务

流量转发过程
  1. 客户端发起请求,访问ELB绑定的弹性公网IP(ELB-EIP)。
  2. ELB接收请求,根据监听器规则和后端服务器组配置,将请求转发至IP类型后端(即后端服务器的公网IP)。
  3. ELB转发的流量经过VPC内部路由,命中NAT网关的SNAT规则。
  4. NAT网关(SNAT)将源IP从ELB的私网IP转换为NAT网关绑定的SNAT-EIP。
  5. 转换后的流量通过公网到达后端目的服务器的公网IP。
  6. 后端服务器处理请求并沿原路返回响应。

约束与限制

  • 由于IP类型后端功能仅独享型ELB支持,所以本方案仅适用独享型负载均衡。
  • 创建ELB时必须开启IP类型后端开关,创建后不可修改。
  • ELB的后端子网必须被NAT网关SNAT规则覆盖,否则流量不会经过SNAT。
  • 后端服务器安全组需放通来自SNAT-EIP的入方向访问。
  • 用户需根据业务流量选择合适的NAT网关规格,避免规格不足导致丢包。
  • IP类型后端的健康检查流量也会经过SNAT,需确保健康检查路径可达。

资源规划说明

资源

数量

说明

虚拟私有云和子网

1个VPC + 2个子网

  • VPC-Test:172.16.0.0/12
  • 子网subnet-frontend:172.16.0.0/16
  • 子网subnet-backend:172.18.0.0/16

独享型ELB

1个

开启“IP类型后端”开关,所属VPC为VPC-Test,前端子网为subnet-frontend,后端子网为subnet-backend。

注意:

建议在本方案中不要将ELB的后端子网与其他业务共用,否则将导致其他业务流量转发至公网IP地址。

NAT网关

1个

所属VPC为VPC-Test,开启SNAT功能。

弹性公网IP

3个

  • ELB-EIP:ELB绑定,对外提供服务。
  • SNAT-EIP:NAT网关绑定,用于SNAT转换。
  • Client-EIP:客户端ECS绑定,用于公网访问ELB。

弹性云服务器

1台

ECS-client,用于模拟客户端访问。

后端目的服务器

1台

位于公网可达位置,部署业务服务(如Nginx)。

准备工作

在开始配置之前,请确保完成以下准备工作:

  1. 创建虚拟私有云和子网:创建VPC-Test以及子网subnet-frontend、subnet-backend。具体操作请参考创建虚拟私有云和子网。
  2. 购买客户端ECS:购买一台ECS用作访问客户端ECS-client并绑定EIP。具体操作请参考快速购买和使用Linux ECS。
  3. 后端服务器部署服务:在公网可达的后端目的服务器上部署业务服务(如Nginx),确保服务正常运行并监听相应端口。

配置步骤

  1. 创建NAT网关并配置SNAT
    1. 进入购买公网NAT网关页面。
    2. 根据界面提示配置相关参数。
      关键参数配置如下:

      参数

      示例

      说明

      名称

      NAT-Test

      NAT网关名称。

      规格

      小型

      根据业务流量需求选择合适规格。

      虚拟私有云

      VPC-Test

      NAT网关所属的VPC。

      子网

      subnet-backend

      NAT网关使用的子网。

    3. 单击“立即购买”,在“规格确认”页面,您可以再次核对公网NAT网关信息。
    4. 确认无误后,单击“提交”。
    5. 单击已购买的NAT网关名称,进入详情页。
    6. 选择“SNAT规则”页签,单击“添加SNAT规则”。
      关键参数配置如下:

      参数

      示例

      说明

      弹性公网IP

      SNAT-EIP

      选择或新购EIP,用于SNAT源地址转换。

      网段

      subnet-backend

      需要SNAT转换的子网,ELB后端子网。

      注意:

      建议在本方案中不要将ELB的后端子网与其他业务共用,否则将导致其他业务流量转发至公网IP地址。

    1. 单击“确定”,完成SNAT规则配置。

      添加SNAT规则后,subnet-backend子网内的资源访问公网时,源IP将被转换为SNAT-EIP。

  2. 创建独享型ELB实例并开启IP类型后端
    1. 进入购买弹性负载均衡页面。
    2. 根据界面提示配置相关参数。
      关键参数配置如下:

      参数

      示例

      说明

      实例类型

      独享型

      请选择独享型,IP类型后端仅独享型支持。

      名称

      ELB-Test

      ELB实例名称。

      所属VPC

      VPC-Test

      与NAT网关相同的VPC。

      前端子网

      subnet-frontend

      ELB接收客户端请求的子网。

      后端子网

      subnet-backend

      ELB转发流量的子网,需与NAT网关SNAT规则匹配。

      IP类型后端

      开启

      必须开启,支持添加IP类型后端服务器。

      网络类型

      IPv4 私网

      网络类型选择IPv4 私网,同时为ELB绑定弹性公网IP实现公网访问。

      弹性公网IP

      ELB-EIP

      新购或使用已有EIP。

      • IP类型后端开关在ELB创建后不可修改,创建时必须开启。
      • ELB的后端子网必须与NAT网关SNAT规则覆盖的子网一致,确保ELB转发流量能命中SNAT规则。
    3. 单击“立即购买”,完成ELB实例的创建。
  3. 创建后端服务器组并添加IP类型后端
    1. 进入后端服务器组列表页面。
    2. 单击页面右上角“创建后端服务器组”按钮。
    3. 配置后端分配策略。
      关键参数配置如下:

      参数

      示例

      说明

      名称

      server_group

      后端服务器组名称。

      实例类型

      独享型

      与ELB实例类型匹配。

      所属负载均衡器

      关联已有

      选择已创建的ELB实例。

      后端协议

      HTTP

      根据后端业务协议选择,可选HTTP/HTTPS/TCP/UDP等。

      分配策略类型

      加权轮询算法

      负载均衡调度算法。

    4. 单击“下一步”,添加后端服务器并配置健康检查。
    5. 切换到“IP类型后端”页签,单击“添加”。
    6. 在添加IP类型后端页面配置相关参数。

      参数

      示例

      说明

      IP类型后端IP

      x.x.x.x

      填写后端目的服务器的公网IP地址,ELB将根据该IP地址转发流量。

      业务端口

      80

      后端服务器业务监听端口。

      权重

      1

      后端服务器权重,默认1。

    1. 单击“确定”,完成IP类型后端的添加。
    2. 保持健康检查开启,其余健康检查参数保持默认。
    3. 单击“下一步”,确认配置后单击“立即创建”。
  4. 添加监听器并选择后端服务器组
    1. 进入弹性负载均衡列表页面。
    2. 在目标ELB实例的操作列,单击“添加监听器”。
      关键参数配置如下:

      参数

      示例

      说明

      前端协议

      HTTP

      监听器接收请求的协议。

      监听端口

      80

      监听器接收请求的端口。

    3. 单击“下一步:配置后端分配策略”。
    4. 后端服务器组选择“使用已有”,选择3创建的后端服务器组server_group。
    5. 单击“下一步:确认配置”。
    6. 确认配置无误后,单击“提交”。
  5. (可选)配置安全组和网络ACL

    根据业务需要,确保以下网络访问策略已正确配置:

    方向

    源/目的

    协议

    端口

    说明

    入方向

    0.0.0.0/0

    TCP

    80

    ELB允许客户端请求接入(安全组/网络ACL)。

    出方向

    0.0.0.0/0

    TCP

    80

    ELB允许向后端服务器转发请求。

    后端服务器入方向

    SNAT-EIP

    TCP

    80

    后端服务器允许来自SNAT-EIP的请求。

    由于ELB转发流量经NAT网关SNAT转换后,后端服务器看到的源IP为SNAT-EIP,因此后端服务器的安全组需放通来自SNAT-EIP的访问。

配置验证

  • 通过客户端ECS验证
    1. 远程登录客户端ECS-client。
    2. 执行以下命令测试连通性:

      curl -v http://<ELB-EIP>:<监听端口>

    1. 如果成功收到后端服务器返回的业务响应内容(如Nginx默认欢迎页),表明ELB已成功通过公网将请求转发至后端服务器。
  • 通过浏览器验证

    使用浏览器访问http://<ELB-EIP>,若页面显示后端服务器的业务内容,说明请求已被ELB实例通过SNAT成功转发到后端目的服务器。

  • 验证SNAT转换

    在后端服务器上查看访问日志,确认请求的源IP为NAT网关的SNAT-EIP(而非ELB的私网IP),说明流量经过了NAT网关的SNAT转换。

常见问题

  • 客户端访问ELB无响应
    • 检查ELB监听器配置是否正确
    • 检查ELB-EIP是否绑定成功
    • 检查后端服务器组中是否已添加IP类型后端
  • ELB健康检查异常
    • 检查后端服务器是否正常运行并监听对应端口
    • 检查后端服务器安全组是否放通了来自SNAT-EIP的访问
    • 检查健康检查配置的协议和端口是否与后端业务一致
  • 后端服务器收不到请求
    • 确认NAT网关SNAT规则已正确配置,且覆盖ELB的后端子网
    • 确认NAT网关状态为“运行中”
    • 在后端服务器上抓包确认是否有来自SNAT-EIP的请求
  • 请求响应延迟较大
    • 公网链路本身存在一定延迟,对比私网直连场景评估
    • 检查NAT网关规格是否满足流量需求
    • 检查后端服务器负载是否过高

相关文档