通过GWLB构建互联网边界防火墙

针对企业在云上环境中因公网访问入口分散、安全策略不统一所带来的管理复杂性与安全风险,您可以通过网关型负载均衡GWLB联动IPv4网关构建互联网边界防火墙。该方案通过IPv4网关集中控制公网访问流量,并结合GWLB对所有进出流量进行安全检测与过滤,实现集中化的安全策略管控,有效降低安全风险,提升网络管理效率。

GWLB联动IPv4网关方案介绍

传统的公网服务部署方案中,VPC内的资源通过绑定公网IP与公网直接进行通信,但该方案存在以下安全隐患:

  • 公网暴露面广:绑定的每个公网IP都是一个直接面向互联网的暴露点,当这些暴露点数量增多且分布在不同资源上时,企业的网络安全边界变得零散,难以进行统一的流量监控和策略管控。

  • 策略管理复杂:需要为每个绑定公网IP的资源单独配置和维护安全策略(如安全组),不仅增加了运维复杂度及时间成本,也容易因配置疏漏产生安全风险。

  • 缺乏深度安全检测:安全组及网络ACL主要基于四层(IP及端口)进行访问控制,无法对流量进行深度报文检测(DPI)、入侵防御等七层安全防护。

通过将IPv4网关与GWLB的联动部署,可构建集中、透明且可扩展的互联网边界防火墙。IPv4网关可将所有进出VPC的公网流量进行统一管控,再通过网关型负载均衡终端节点GWLBe将流量路由至GWLB后端防火墙等网络虚拟设备进行深度检测。经检测后,流量再次被路由回相应的GWLBe,最终转发至应用端。

关键特性

  • IPv4网关

    • 集中控制公网访问流量:使用IPv4网关结合路由表等组件,可实现控制公网访问流量统一经过IPv4网关,有利于实施统一的安全策略和审计,有效降低分散接入带来的安全风险。

  • GWLB

    • 透明的流量检测: 以三层网络网关的模式工作,流量在经过网络虚拟设备检测时,其源和目的IP地址保持不变,无需对客户端或后端服务进行任何修改。

    • 可扩展的网络虚拟设备: 可以根据业务流量的变化,随时在GWLB后端增减网络虚拟设备。

    • 跨可用区高可用部署: GWLB及其后端网络虚拟设备可部署在多个可用区,当单个可用区的网络虚拟设备或GWLBe发生故障时,流量会自动分发至其他可用区的正常节点,保障安全防护服务的高可用性。

使用场景

  • 集中安全合规审计:为金融、政府等高安全合规要求行业的公网流量日志和安全策略提供统一安全设备集群,实现统一审计、监控及事件追溯。

  • 公网业务深度安全防护:为对外提供服务的网站、API或应用提供深度内容检测,有效抵御Web攻击、恶意扫描、病毒入侵等高级威胁。

  • VPC内资源安全访问公网:为VPC内主动访问互联网的资源(如更新补丁、调用外部API)提供安全的出向访问通道,防止其访问恶意站点及数据外泄。

使用限制

  • GWLB后端启动至少一个网络虚拟设备。

  • GWLB的后端服务器的访问策略(例如安全组)必须放通UDP协议类型和6081端口(Geneve协议端口)。

  • 创建终端节点服务时,选择地域与可用区需要同时支持私网连接和GWLB实例的地域与可用区。关于私网连接和GWLB实例支持的地域,请参见支持私网连接的地域和可用区GWLB支持的地域与可用区

  • GWLBe部署的可用区必须是终端节点服务资源(GWLB)部署的可用区的子集,才可以建立连接。

场景示例

某企业核心业务系统部署于阿里云华北6(乌兰察布)地域的VPC中。为实现高可用性,应用服务器ECS分布在两个不同的可用区内(可用区B、可用区C),并通过为ECS实例直接绑定弹性公网IP EIP的方式对外提供服务。随着业务的扩展,该部署模式因公网入口分散,难以实施统一的安全策略和审计,已无法满足企业日益增长的集中化安全管控需求。同时,该部署模式缺乏对流量进行深度检测的能力,难以有效抵御日益复杂的网络攻击。

为解决上述问题,企业可通过联动部署GWLBIPv4网关构建高可用的互联网边界防火墙,实现集中化的流量安全检测和管理,有效降低安全风险并实施统一的安全防护策略。

image

前提条件

  • 您已创建了业务VPC和安全VPC,在业务VPC的可用区B和可用区C创建了业务子网和GWLBe子网,在安全VPC的可用区B和可用区C创建了安全子网。请参见专有网络与交换机

  • 您已在业务VPC中创建应用服务器ECS实例,且ECS实例中部署了应用服务,如果ECS实例需要进行公网通信,必须为其分配公网IP。

  • 您已为业务VPC创建并激活IPv4网关

  • 您已创建所需路由表,包括IPv4网关路由表、业务子网的路由表和GWLBe子网的路由表。

  • 在安全VPC中创建了至少两台ECS实例,用于模拟网络虚拟设备。

    重要

    请确保安全VPC内的ECS实例规格支持巨型帧(Jumbo Frames),因为Geneve封装会在原始数据包基础上增加68字节,报文可能会大于1500字节。更多信息,请参见网络最大传输单元支持巨型帧的实例规格族

  • 您已为业务VPC内及安全VPC内的所有ECS实例创建安全组,并确保安全VPCECS实例所在安全组已放通UDP协议类型和6081端口,以及健康检查所需的端口和协议。

参考示例:网段规划

VPC

可用区

网段及资源

业务VPC

主网段:192.168.0.0/16

可用区B

  • GWLBe_01子网B:192.168.101.0/24

  • 业务子网B:192.168.1.0/24

  • 应用服务器ECS_B_01(已绑定EIP):192.168.1.153

    参考示例:ECS_B_01服务部署测试服务(以Alibaba Cloud Linux 3操作系统为例)

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! This is ECS_B_01." > index.html

可用区C

  • GWLBe_02子网C:192.168.102.0/24

  • 业务子网C:192.168.2.0/24

  • 应用服务器ECS_C_01(已绑定EIP):192.168.2.151

    参考示例:ECS_C_01服务部署测试服务(以Alibaba Cloud Linux 3操作系统为例)

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! This is ECS_C_01." > index.html

安全VPC

网段:10.0.0.0/16

可用区B

  • 安全子网B:10.0.1.0/24

  • 网络虚拟设备ECS_01:10.0.1.40

可用区C

  • 安全子网C:10.0.2.0/24

  • 网络虚拟设备ECS_02:10.0.2.170

操作步骤

步骤一:配置网关型负载均衡

创建GWLB实例

实例是一个负载均衡服务实体,您需要先创建GWLB实例。

  1. 网关型负载均衡GWLB控制台的顶部菜单栏,选择GWLB所在的地域。

  2. 实例页面,单击创建网关型负载均衡

  3. 网关型负载均衡购买页面,配置GWLB实例信息,然后单击立即购买,并根据控制台提示完成实例开通。

    本文场景中,地域和可用区选择华北6(乌兰察布)专有网络选择已创建的安全VPC,可用区选择乌兰察布 可用区B乌兰察布 可用区C并分别在可用区中选择相应安全子网的交换机ID。GWLB实例其他未列出配置项使用默认值或根据实际情况修改。

  4. 返回实例页面,选择对应的地域即可看到新建的实例。

创建后端服务器组

您需要创建服务器组并添加后端服务器来接收GWLB转发的客户端请求。

  1. 在左侧导航栏,选择网关型负载均衡GWLB  > 服务器组

  2. 服务器组页面,单击创建服务器组

  3. 创建服务器组对话框,配置服务器组相关的参数,然后单击创建

    本文场景中,服务器组类型选择服务器类型VPC选择已创建的安全VPC(与GWLB实例同VPC)。服务器组其他未列出配置项使用默认值或根据实际情况修改。

  4. 服务器组创建成功对话框单击添加后端服务器

  5. 添加后端服务器面板,选中已创建的ECS_01ECS_02实例,单击确定

配置监听

您需要为实例配置监听,并将监听关联到后端服务器组,将所有端口的流量通过Geneve协议的方式转发至后端服务器。

  1. 在左侧导航栏,选择网关型负载均衡GWLB > 实例,单击实例ID。

  2. 单击监听页签,然后单击创建IP监听

  3. 创建IP监听配置页面,选择服务器组类型,选择已创建的服务器组,然后单击确定

    IP监听其他未列出配置项使用默认值或根据实际情况修改。

步骤二:配置网络虚拟设备

由于GWLBOSI参考模型第三层以透明模式运行,所以在该负载均衡后端部署网络虚拟设备时,需要做一些适配工作,以确保网络虚拟设备具备接收、处理和回送Geneve封装业务流量的能力。

阿里云GWLB支持将各类第三方网络虚拟设备(如Fortinet、山石网科等品牌)集成至后端服务器组中。本文以iptables模拟后端网络虚拟设备为例,实际配置请根据设备厂商相关指导进行操作。

参考示例:ECS_01配置iptables(以Alibaba Cloud Linux 3操作系统为例)

# Step1:保存配置脚本到指定文件
cat > setup_gwlb_multi_iptables.sh <<'EOF'
#!/bin/bash
# setup_gwlb_multi_iptables.sh
# 适用于多可用区GWLB实例场景,自动完成IP转发、iptables及hairpin NAT规则配置

# ---- 1. 配置参数(请根据实际情况修改) ----
instance_ip="10.0.1.40" # 当前ECS实例的私网IP,例如可用区B的ECS_01 
gwlb_ip1="10.0.1.41"   # 可用区B GWLB私网IP
gwlb_ip2="10.0.2.171"  # 可用区C GWLB私网IP

# ---- 2. 开启IPv4转发 ----
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/00-defaults.conf
sysctl -p /etc/sysctl.d/00-defaults.conf

# ---- 3. 安装iptables服务 ----
yum install iptables-services -y

# ---- 4. 启用并启动iptables服务----
systemctl enable iptables
systemctl start iptables

# ---- 5. 设置iptables基本策略为允许全部流量(仅测试/POC环境使用,生产环境请根据业务需要进行相应限制) ----
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# ---- 6. 清空所有iptables表和规则 ----
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X

# ---- 7. 配置多可用区GWLB的Hairpin NAT规则 ----
iptables -t nat -A PREROUTING -p udp -s $gwlb_ip1 -d $instance_ip -i eth0 -j DNAT --to-destination $gwlb_ip1:6081
iptables -t nat -A POSTROUTING -p udp --dport 6081 -s $gwlb_ip1 -d $gwlb_ip1 -o eth0 -j MASQUERADE

iptables -t nat -A PREROUTING -p udp -s $gwlb_ip2 -d $instance_ip -i eth0 -j DNAT --to-destination $gwlb_ip2:6081
iptables -t nat -A POSTROUTING -p udp --dport 6081 -s $gwlb_ip2 -d $gwlb_ip2 -o eth0 -j MASQUERADE

# ---- 8. 保存iptables规则 ----
service iptables save

echo "【完成】ECS $instance_ip 已应用多可用区GWLB的NAT与转发规则!"
EOF

# Step2:赋予脚本可执行权限
chmod +x setup_gwlb_multi_iptables.sh

# Step3:立即运行
sudo ./setup_gwlb_multi_iptables.sh

步骤三:配置私网连接

配置终端节点服务

GWLB实例作为终端节点服务的服务资源,供业务VPC访问。

  1. 终端节点服务页面,单击创建终端节点服务

  2. 创建终端节点服务页面,配置终端节点服务信息,然后单击确定创建

    本文场景中,所属地域选择华北6(乌兰察布)服务资源类型选择网关型负载均衡GWLB选择服务资源选择乌兰察布 可用区B乌兰察布 可用区C服务资源选择已创建的GWLB实例,自动接受终端节点连接选择终端节点服务其他未列出配置项使用默认值或根据实际情况修改。

配置网关型负载均衡终端节点

服务使用者需要创建相应的GWLBe,从而与终端节点服务建立连接。

  1. 终端节点页面,单击网关型负载均衡终端节点页签,然后单击创建终端节点

  2. 创建终端节点页面,配置终端节点GWLBe_01信息,然后单击确定创建

    本文场景配置如下。终端节点其他未列出配置项使用默认值或根据实际情况修改。

    参数

    描述

    所属地域

    本文选择华北6(乌兰察布)

    节点名称

    自定义终端节点的名称。

    终端节点类型

    终端节点选择的节点类型。本文选择网关型负载均衡终端节点

    终端节点服务

    本文选择选择可用服务,然后选择已创建的终端节点服务。

    专有网络

    选择终端节点所属的专有网络。本文选择业务VPCID。

    可用区与交换机

    选择终端节点服务对应的可用区,然后选择该可用区内的交换机,系统会自动在该交换机下创建一个终端节点网卡。

    本文可用区选择乌兰察布 可用区B并选择可用区BGWLBe子网的交换机ID。

  3. 重复创建步骤创建GWLBe_02。其中可用区与交换机选择乌兰察布 可用区C与可用区CGWLBe子网的交换机ID。

    说明

    请确保终端节点的连接状态是已连接。

步骤四:配置路由

配置路由将流量路由至GWLBe。

  1. 路由表页面的顶部菜单栏,选择路由表所属的地域。

    本文场景中,选择华北6(乌兰察布)

  2. 请根据以下信息,依次单击目标路由表的ID,在路由表详情页进行路由配置。

    说明

    在路由表详情页面的路由条目列表 > 系统路由条目页签下,可查看系统路由条目。

    系统会在自定义路由表中自动添加以下系统路由:以路由表所属VPC内的交换机网段为目标网段的路由条目,用于交换机内的云产品通信。

    • IPv4网关路由表:IPv4网关的路由表必须具有将发往应用服务器的流量路由到GWLBe的条目。

      在路由表详情页面的路由条目列表 > 系统路由条目页签下,找到目标系统路由条目,然后在操作列单击编辑,在编辑路由表条目对话框,进行如下配置,然后单击确定

      配置完成后,该路由条目会出现在自定义路由条目页签下。

      配置

      目标网段为192.168.1.0/24的系统路由条目

      目标网段为192.168.2.0/24的系统路由条目

      下一跳类型

      选择网关型负载均衡终端节点

      网关型负载均衡终端节点

      选择已创建的可用区BGWLBe_01。

      选择已创建的可用区CGWLBe_02。

    • 业务子网路由表:业务子网的路由表必须具有将来自应用服务器的所有流量路由到GWLBe的条目。

      分别在可用区B及可用区C的业务子网路由表详情页面选择路由条目列表 > 自定义路由条目页签,单击添加路由条目,在添加路由条目对话框,进行如下配置,然后单击确定

      配置

      业务子网B路由表

      业务子网C路由表

      目标网段

      0.0.0.0/0

      下一跳类型

      选择网关型负载均衡终端节点

      网关型负载均衡终端节点

      选择已创建的可用区BGWLBe_01。

      选择已创建的可用区CGWLBe_02。

    • GWLBe子网路由表:GWLBe子网的路由表必须将从检查返回的流量路由到最终目的地。对于来自互联网的流量,本地路由将确保其会到达应用服务器。对于来自应用服务器的流量,则添加将所有流量路由到IPv4网关的条目。

      分别在可用区B及可用区CGWLBe子网路由表详情页面选择路由条目列表 > 自定义路由条目页签,单击添加路由条目,在添加路由条目对话框,进行如下配置,然后单击确定

      配置

      GWLBe子网路由表

      目标网段

      0.0.0.0/0

      下一跳类型

      选择IPv4网关

      网关型负载均衡终端节点

      选择已创建的IPv4网关。

路由配置参考:IPv4网关路由表、业务子网路由表及GWLBe子网路由表的路由条目(此处仅展示自定义路由条目)

  • IPv4网关的路由表配置

    目标网段

    下一跳

    路由条目类型

    192.168.1.0/24

    网关型负载均衡终端节点(GWLBe_01)

    自定义路由条目

    192.168.2.0/24

    网关型负载均衡终端节点(GWLBe_02)

    自定义路由条目

  • 业务子网的路由表配置

    子网类别

    目标网段

    下一跳

    路由条目类型

    业务子网B

    0.0.0.0/0

    网关型负载均衡终端节点(GWLBe_01)

    自定义路由条目

    业务子网C

    0.0.0.0/0

    网关型负载均衡终端节点(GWLBe_02)

    自定义路由条目

  • GWLBe子网的路由表配置

    子网类别

    目标网段

    下一跳

    路由条目类型

    GWLBe子网B

    0.0.0.0/0

    IPv4网关

    自定义路由条目

    GWLBe子网C

    0.0.0.0/0

    IPv4网关

    自定义路由条目

步骤五:验证测试

登录安全设备服务器,捕获所有经过端口为6081的数据包,执行如下命令:

tcpdump -i any port 6081

返回报文显示有来自应用服务器ECS的请求和响应数据,实现了通过GWLB将流量路由至网络虚拟设备进行安全检测的过程。

测试访问流量连通性

  1. 登录任意一台可以访问公网的客户端,分别执行curl http://<应用服务器ECS_B_01绑定的EIP>curl http://<应用服务器ECS_C_01绑定的EIP>,检查是否可正常访问应用。

    入方向连通性

  2. GWLB任一后端ECS打开命令行窗口,执行tcpdump -i any port 6081,捕获所有经过端口为6081的数据包。

    返回报文显示Geneve封装的业务流量,内层如:IP <客户端公网IP>.xxxxx > <应用ECS内网IP>.http ...,则表示GWLB已将外部业务流量正确分发到安全设备进行处理。

    安全设备抓包01

测试出网流量连通性

  1. 登录任一应用服务器,执行ping www.aliyun.com,检查是否可正常访问公网。

    出方向连通性

  2. GWLB任一后端ECS打开命令行窗口,执行tcpdump -i any port 6081,捕获所有经过端口为6081的数据包。

    返回报文显示来自应用服务器ECS的请求和响应数据,表示应用服务器到公网的流量已通过GWLB后端网络虚拟设备的检测与透传。

    安全设备抓包02

相关文档

  • GWLB计费概述:GWLB支持按量付费,费用包括GWLB实例费及LCU费用。

  • 私网连接计费说明:GWLB需要与GWLBe搭配使用才能提供服务。GWLBe由私网连接服务独立定价与计费。

  • 部署GWLB时,建议开启以下配置:

    • 健康检查:可探测GWLB后端网络虚拟设备可用性,当某台设备出现异常时,支持自动将新的请求路由至运行正常的后端设备上。

    • 连接优雅中断:在移除GWLB后端网络虚拟设备时,可平滑处理现有连接。

    • 重新平衡现有流量(Rebalance):当GWLB后端网络虚拟设备故障或被移除时,GWLB会将现有流量重新路由到健康的后端设备上,避免业务中断。

  • 了解私网连接与IPv4网关更多信息: