如果您需要拒绝或允许特定IP访问网络型负载均衡NLB实例,您可以通过NLB安全组功能来实现流量的访问控制。通过设置NLB安全组,您可以实现黑白名单的访问策略,以便对流量进行更精确的控制。
场景说明
当NLB实例未加入安全组时,NLB监听端口默认对所有请求放通。
当NLB实例加入安全组且未设置任何拒绝策略时,NLB监听端口默认对所有请求放通。如果您需要只允许特定IP访问NLB,请注意添加一条拒绝策略进行兜底。
当您的NLB实例有访问控制的诉求,希望控制NLB实例的入流量时,您可以选择为NLB实例添加安全组,同时可基于业务设置相应的安全组规则。
负载均衡的出方向流量为用户请求的回包,为了保证您的业务正常运行,NLB的安全组对出流量不做限制,您无需额外配置安全组出方向规则。
本文从以下2种场景为例介绍NLB安全组的黑白名单访问策略。关于安全组规则的排序策略,请参见安全组规则排序策略。
黑名单:NLB安全组对指定IP地址的拒绝访问策略
白名单:NLB安全组对指定IP地址的允许访问策略
使用限制
分类 | 安全组类型 | 说明 |
NLB支持加入的安全组 |
|
关于普通安全组和企业安全组的介绍,请参见普通安全组与企业级安全组。 |
NLB不支持加入的安全组 | 托管安全组 | 关于托管安全组的介绍,请参见托管安全组。 |
前提条件
您已创建4台ECS实例。关于如何创建ECS实例,请参见自定义购买实例。
ECS01和ECS02实例作为NLB实例的后端服务器,且ECS01和ECS02实例中部署了应用服务。
本文ECS01与ECS02部署测试应用示例如下:
ECS03和ECS04实例为公网实例,用于访问NLB实例。您也可以使用已有的Linux服务器访问NLB实例,这种情况下无需创建ECS03和ECS04实例。
您已注册域名并完成备案,且通过自有域名为NLB配置CNAME解析。
下表列出了本文ECS实例的相关配置,仅供参考。
分类
ECS配置
所属VPC
IP
说明
ECS01
实例规格:ecs.u1-c1m1.large
CPU&内存:2核(vCPU) 2 GiB
操作系统:Alibaba Cloud Linux 3.2104 LTS 64位更换操作系统
网络类型:专有网络VPC
VPC01
私网:192.168.0.24
公网:无
作为NLB实例后端服务器。
ECS02
私网:192.168.0.37
公网:无
ECS03
VPC02
私网:192.168.0.25
公网:47.XX.XX.55
作为访问NLB实例的客户端。
ECS04
私网:192.168.0.26
公网:101.XX.XX.251
步骤一:创建服务器组
- 登录网络型负载均衡NLB控制台。
在顶部菜单栏,选择服务器组所属的地域。本文选择华东1(杭州)。
在左侧导航栏,选择 。
在服务器组页面,单击创建服务器组。
在创建服务器组对话框中,完成以下配置,然后单击创建。
此处仅列出部分配置项,其余参数可保持默认值。更多信息,请参见创建服务器组。
配置
说明
服务器组类型
选择一种服务器组类型。本文选择服务器类型。
服务器组名称
输入服务器组名称。本文输入RS01。
VPC
从VPC下拉列表中选择一个VPC。本文选择VPC1,与ECS01、ECS02实例所属VPC保持一致。
选择后端协议
选择一种后端协议。本文选择TCP。
在服务器组创建成功对话框中单击添加后端服务器。
在后端服务器页签单击添加后端服务器。
在添加后端服务器面板,选择已创建的ECS01、ECS02实例,然后单击下一步。
为已添加的服务器设置端口和权重,然后单击确定。本文端口输入80,权重保持默认值。
步骤二:创建NLB实例并配置监听
在左侧导航栏,选择
,在实例页面,单击创建网络型负载均衡。在网络型负载均衡(按量付费)购买页面,完成以下配置。
此处仅列出部分配置项。其余参数的配置,请参见创建实例。
地域:本文选择华东1(杭州)。
实例网络类型:本文选择公网。
VPC:本文选择VPC01。
单击立即购买,然后根据控制台提示完成实例购买。
返回实例页面,找到已创建的NLB实例,单击该NLB实例ID。
单击监听页签,在监听页签单击快速创建监听。在快速创建监听对话框中,配置以下参数,完成TCP 80监听的创建,然后单击确定。
监听配置
说明
选择负载均衡协议
选择监听的协议类型。本文选择TCP。
监听端口
输入监听端口,本文输入80。
转发的后端服务器组
选择服务器类型及服务器类型下的服务器组。
本文选择步骤一:创建服务器组创建的服务器组。
NLB实例未加入安全组时,验证访问结果。验证过程中执行的
curl -s http://whatismyip.akamai.com/
命令是为了获取当前客户端的公网IP地址,以方便您识别当前客户端。登录ECS03实例,执行
telnet 域名 80
命令,测试ECS03实例是否可以访问NLB实例。收到如下所示的回复报文,则表示访问成功。
登录ECS04实例。执行
telnet 域名 80
命令,测试ECS04实例是否可以访问NLB实例。收到如下所示的回复报文,则表示访问成功。
验证结果表明:NLB实例未加入安全组时,ECS03和ECS04可正常访问NLB实例。
步骤三:创建安全组
在NLB实例加入安全组前,您需要先至ECS管理控制台创建安全组,按照以下访问规则创建2个安全组。
实现黑名单策略的安全组1
新增拒绝策略的规则。本文以拒绝ECS03实例的公网IP(47.XX.XX.55)访问为例,添加一条拒绝策略的规则,默认的安全组规则可保留。
授权策略
优先级
协议类型
端口范围
授权对象
拒绝
1
全部
目的:-1/-1
源:47.XX.XX.55
实现白名单策略的安全组2
新增允许和拒绝的规则。本文以允许ECS03实例的公网IP(47.XX.XX.55)访问为例,添加一条允许策略的规则,并增加一条拒绝策略的规则,如下表。
授权策略
优先级
协议类型
端口范围
授权对象
允许
1
全部
目的:-1/-1
源:47.XX.XX.55
拒绝
100
全部
目的:-1/-1
源:0.0.0.0/0
步骤四:NLB实例加入安全组并验证结果
实现黑名单访问策略
NLB实例加入步骤三:创建安全组创建的安全组1,并验证安全组1中规则对NLB实例的访问控制是否生效。
- 登录网络型负载均衡NLB控制台。
在顶部菜单栏,选择NLB实例所属的地域。本文选择华东1(杭州)。
在NLB实例页面,找到步骤二:创建NLB实例并配置监听创建的NLB实例,单击实例ID。在实例详情页签,单击安全组页签。
在安全组页签,单击添加安全组,在弹出的NLB实例加入安全组对话框中,选择步骤三:创建安全组创建的安全组,然后单击确定。
在左侧列表框单击目标安全组ID,可单击入方向或出方向页签分别查看安全组规则。
此处仅列出与本文强相关的安全组规则。
授权策略
优先级
协议类型
端口范围
授权对象
拒绝
1
全部
目的:-1/-1
源:47.XX.XX.55
NLB实例加入安全组后,测试访问结果。验证过程中执行的
curl -s http://whatismyip.akamai.com/
命令是为了获取当前客户端的公网IP地址,以方便您识别当前客户端。登录ECS03实例。执行
telnet 域名 80
命令,测试ECS03实例是否可以访问NLB实例。收到如下所示的回复报文,则表示访问失败。
登录ECS04实例,执行
telnet 域名 80
命令,测试ECS04实例是否可以访问NLB实例。收到如下所示的回复报文,则表示访问成功。
验证结果表明:NLB实例加入实现黑名单策略的安全组1后,安全组内拒绝规则中的IP地址不能访问该NLB实例,不在安全组拒绝规则中的IP可以正常访问。
实现白名单访问策略
NLB实例加入步骤三:创建安全组创建的安全组2,并验证安全组2中规则对NLB实例的访问控制是否生效。
- 登录网络型负载均衡NLB控制台。
在顶部菜单栏,选择NLB实例所属的地域。本文选择华东1(杭州)。
在NLB实例页面,找到步骤二:创建NLB实例并配置监听创建的NLB实例,单击实例ID。在实例详情页签,单击安全组页签。
在安全组页签,单击添加安全组,在弹出的NLB实例加入安全组对话框中,选择步骤三:创建安全组创建的安全组2,然后单击确定。
在左侧列表框单击目标安全组ID,可单击入方向或出方向页签分别查看安全组规则。
授权策略
优先级
协议类型
端口范围
授权对象
允许
1
全部
目的:-1/-1
源:47.XX.XX.55
拒绝
100
全部
目的:-1/-1
源:0.0.0.0/0
NLB实例加入安全组后,测试访问结果。验证过程中执行的
curl -s http://whatismyip.akamai.com/
命令是为了获取当前客户端的公网IP地址,以方便您识别当前客户端。登录ECS03实例。执行
telnet 域名 80
命令,测试ECS03实例是否可以访问NLB实例。收到如下所示的回复报文,则表示访问成功。
登录ECS04实例,执行
telnet 域名 80
命令,测试ECS04实例是否可以访问NLB实例。收到如下所示的回复报文,则表示访问失败。
验证结果表明:NLB实例加入实现白名单策略的安全组2时,安全组内仅允许规则中的IP地址可以访问该NLB实例。
相关文档
关于NLB加入安全组和解绑安全组等操作,请参见NLB加入安全组。
如何配置安全组实现NLB基于监听/端口粒度的访问控制,请参见配置安全组实现NLB基于监听/端口粒度的访问控制。
关于安全组的详细介绍,请参见安全组。