全部产品
Search
文档中心

负载均衡:使用NLB入口实现IPv4与IPv6流量亲和转发

更新时间:Mar 16, 2026

NLB双栈实例支持IP版本亲和模式,开启后可将IPv4请求转发至IPv4后端服务器、IPv6请求转发至IPv6后端服务器,实现按IP协议版本的流量调度,简化网络架构。

方案架构

问题场景

在业务从 IPv4 向 IPv6 迁移的过程中,IPv4 与 IPv6 服务常常需要共存。当目标服务器组中同时包含 IPv4 和 IPv6 地址的后端服务器时,NLB 默认不区分客户端请求的 IP 协议版本,而是仅依据调度算法(如轮询或最小连接数)向后端转发流量。

这可能导致跨协议转发现象——例如,来自 IPv6 客户端的请求被转发到仅支持 IPv4 的后端服务器,或反之。此类协议不匹配会引发以下问题:

  • 后端服务器无法获取真实客户端IP,影响基于源IP的地域分析和权限管控。

  • 为获取真实源IP,需额外部署Nginx等代理层并开启Proxy Protocol,增加运维成本。

解决方案

NLB服务器组支持IP版本亲和模式,开启后实现4to4/6to6的亲和转发。

后端可直接获取对应协议的客户端真实IP,无需额外代理层。当某一协议的所有后端健康检查失败时,该协议的请求在同协议后端内尽力转发,不会跨协议转发。

image

适用范围

用户已注册自定义域名。本文计划将NLB实例部署于华东2(上海)地域,因此域名需要完成ICP备案

操作步骤

在开始操作前,请确保已在华东2(上海)地域创建一个专有网络VPC1,分别在可用区E和可用区G创建交换机VSW1VSW2,且交换机已开启IPv6

1. 创建ECS实例并部署服务

  1. 参考下表配置,创建两台ECS实例。

    实例名称

    地域

    VPC

    交换机

    IP版本

    镜像

    ecs-ipv4

    华东2(上海)

    VPC1

    VSW1

    IPv4

    Alibaba Cloud Linux 3.2104 LTS 64位

    ecs-ipv6

    VSW2

    IPv6

    购买ECS实例时,在网络和安全组配置项下勾选免费分配 IPv6 地址。
  2. 远程连接ecs-ipv4ecs-ipv6,执行以下命令,部署Nginx服务。

    ecs-ipv4

    sudo yum install -y nginx
    sudo systemctl start nginx
    echo "Hello from IPv4 backend" | sudo tee /usr/share/nginx/html/index.html

    ecs-ipv6

    sudo yum install -y nginx
    sudo systemctl start nginx
    echo "Hello from IPv6 backend" | sudo tee /usr/share/nginx/html/index.html
  3. 在两台ECS实例所属安全组添加入方向规则,放行请求流量。请确保规则具备足够高的优先级。

    实例名称

    授权策略

    协议

    访问来源

    访问目的(本实例)

    ecs-ipv4

    允许

    自定义TCP

    选择IPv4后,选择本VPC网段

    选择端口后,选择HTTP(80)

    ecs-ipv6

    选择IPv6后,选择本VPC网段

相关操作,可参考自定义购买实例ECS远程连接操作指南配置安全组规则

2. 创建双栈NLB实例

  1. 登录NLB控制台,选择华东2(上海)地域,单击创建网络型负载均衡

  2. 完成以下配置,其他选项保持默认,单击立即创建

    • 实例网络类型:选择公网

    • VPC:选择VPC1

    • 可用区:选择可用区E和可用区G及对应交换机VSW1VSW2,并自动分配公网IP

    • 协议版本:选择双栈

  3. 创建完成后,单击实例ID进入实例详情页。在基本信息区域找到网络类型,单击IPv6:私网右侧的变更网络类型。在弹出的窗口单击确定变更,并确认变更成功。

3. 创建双栈服务器组并开启亲和模式

  1. 服务器组控制台,单击创建服务器组

  2. 完成以下配置,单击创建

    • 服务器组类型:选择服务器类型

    • 服务器组名称:输入名称sgp-dualstack

    • VPC:选择VPC1

    • 选择后端协议:选择TCP

    • IP协议版本:选择IPv4/v6双栈。选择后支持同时添加IPv4和IPv6后端服务器。

    • IP版本亲和模式:选择亲和模式。开启后,IPv4请求仅转发至IPv4后端,IPv6请求仅转发至IPv6后端。

  3. 单击服务器组创建成功弹窗中的添加后端服务器。在IP地址列为ecs-ipv4选择IPv4地址,为ecs-ipv6选择IPv6地址。选中两台实例,单击下一步

    批量添加IPv6后端时,可单击IP地址列表头旁的设置图标,选择首选IPv6,系统将优先选中服务器的IPv6地址。
  4. 配置端口和权重步骤中,将两台服务器的端口均设置为80,单击确定完成添加。

4. 创建监听

  1. NLB控制台,单击目标实例ID进入实例详情页。在监听页签单击创建监听

  2. 配置监听步骤,选择监听协议TCP监听端口填写80,单击下一步

  3. 选择服务器组步骤,选择服务器组sgp-dualstack,单击下一步

  4. 配置审核步骤确认配置,单击提交

5. 设置域名解析

将自有域名通过CNAME解析指向NLB实例的DNS名称,客户端通过自有域名访问NLB。

本文以阿里云云解析DNS为例,对于非阿里云注册域名,需先将域名添加到云解析控制台

  1. NLB控制台,复制目标实例的DNS 名称

  2. 登录域名解析控制台,在目标域名的操作列单击解析设置。在解析设置页面单击添加记录

  3. 参考以下信息添加CNAME记录,单击确定

    • 记录类型:选择CNAME

    • 主机记录:输入域名前缀如test。假设用户自有根域名为example.com,则访问NLB的域名为test.example.com

    • 解析请求来源TTL时间:保持默认。

    • 记录值:输入NLB实例的DNS名称。

  4. 在弹出的解析变更确认对话框确认解析信息,单击确定

6. 验证亲和转发

用户通过自有域名访问具备IPv6公网能力的双栈NLB实例时,DNS服务器将根据客户端的查询类型返回A记录(IPv4地址)或AAAA记录(IPv6地址)。

测试IPv4请求

curl -4 http://test.example.com

多次请求,返回结果应均为Hello from IPv4 backend,表明IPv4请求被转发至IPv4后端ecs-ipv4

测试IPv6请求

curl -6 http://test.example.com

多次请求,返回结果应均为Hello from IPv6 backend,表明IPv6请求被转发至IPv6后端ecs-ipv6

验证亲和隔离

  1. 停止ecs-ipv4的Nginx服务:sudo systemctl stop nginx

  2. 再次测试IPv4请求。请求将失败,不会被转发至IPv6后端ecs-ipv6

  3. 恢复ecs-ipv4服务:sudo systemctl start nginx。IPv4请求恢复正常。

更多信息

计费说明

  • NLB实例:NLB支持按量付费(后付费)和资源包(预付费)两种付费方式,详情参考NLB计费概述

  • ECS实例:详见ECS计费概述。若出于测试目的创建ECS,建议创建低规格的按量付费实例并及时释放。

  • 域名和DNS解析费用:除了需要支付域名供应商的域名费用外,在阿里云配置DNS解析需要支付公网权威解析费用

  • 公网网络费用:需要分别为NLB实例绑定的EIP和实例所在VPC的IPv6公网带宽支付费用。

NLB双栈支持的地域

区域

地域

中国

华东1(杭州)、华北2(北京)、华南1(深圳)、华东2(上海)、华北1(青岛)、华北3(张家口)、西南1(成都)、华南3(广州)、中国香港、华南2(河源)、华北6(乌兰察布)

亚太

泰国(曼谷)、菲律宾(马尼拉)、新加坡、日本(东京)、韩国(首尔)、 马来西亚(吉隆坡)、印度尼西亚(雅加达)

欧洲与美洲

德国(法兰克福)、英国(伦敦)、美国(弗吉尼亚)、美国(硅谷)、墨西哥

中东

沙特(利雅得)

应用于生产环境

  • 高可用部署:后端服务器应部署在多个可用区,IPv4和IPv6后端均需保证冗余,避免单点故障。

  • 健康检查配置:根据业务特点调整健康检查间隔、超时时间和阈值,确保故障服务器能被及时摘除。

常见问题

开启亲和模式后,IPv4请求会转发到IPv6后端吗?

不会。开启亲和模式后,IPv4请求仅转发至IPv4后端,IPv6请求仅转发至IPv6后端,不会跨协议转发。

如果服务器组内只有IPv4后端,IPv6请求会如何处理?

未开启亲和模式时,NLB支持将IPv6请求转换成IPv4并发给后端;开启亲和模式后,IPv6请求将无法正常转发,该场景下请确保您的NLB同时包含健康的IPv4和IPv6后端。

已创建的服务器组可以修改IP协议版本吗?

不支持。服务器组的IP协议版本(IPv4IPv4/v6双栈)创建后不可修改,如需变更需删除服务器组后重新创建。

已创建的服务器组可以修改IP版本亲和模式吗?

可以。可在服务器组控制台单击目标双栈服务器组操作列的编辑基本信息进行修改。

双栈服务器组可以关联到IPv4类型的NLB实例吗?

不可以。双栈服务器组仅支持关联至双栈NLB实例的监听。