You need to enable JavaScript to run this app.
导航

使用中转路由器实现多个VPC共享公网NAT网关

最近更新时间2024.03.18 11:40:04

首次发布时间2023.09.26 18:10:53

当多个VPC需要访问公网时,为节约公网IP资源,降低公网使用成本,使多个VPC共用一个公网NAT网关。本文为您介绍如何配合中转路由器实现多个VPC共用一个公网NAT网关。

背景介绍

某企业的业务部署于3个VPC,如下图所示,VPC-A和VPC-C共用一个公网NAT网关,VPC-B不使用公网NAT网关。

  • 私有网络1的名称为VPC-A,网段为172.16.0.0/16。其子网名称为子网-A,其子网的网段为172.16.1.0/24。
  • 私有网络2的名称为VPC-B,网段为192.168.0.0/16。其子网名称为子网-B,其子网的网段为192.168.1.0/24。
  • 私有网络3的名称为VPC-C,网段为10.0.0.0/16。其子网名称为子网-C,其子网的网段为10.0.1.0/24。
  • VPC-A、VPC-B分别与VPC-C互通,VPC-A与VPC-B彼此之间隔离。

上图仅呈现一条SNAT规则,在实际使用过程中,可按需创建多条SNAT规则和DNAT规则。

云服务器ECS-A可通过公网NAT网关NAT-X的SNAT规则访问公网。

前提条件

根据背景介绍,在操作之前,您需要做如下准备:

  • 使用同一个火山引擎账号,创建3个VPC(本文示例的地域为华北2(北京)),VPC的参数同背景介绍保持一致。具体操作,请参考 创建私有网络
  • 在VPC-A的子网-A中创建云服务器ECS-A(172.16.1.11),在VPC-B的子网-B中创建云服务器ECS-B(192.168.1.22),在VPC-C的子网-C中创建云服务器ECS-C(10.0.1.33),三台云服务器均未绑定公网IP。具体操作,请参考 购买云服务器
  • 申请一个未绑定云资源的公网IP,本文使用EIP-X(180.XX.XX.44)。具体操作,请参考 申请公网IP

操作步骤

步骤一:配置中转路由器

创建一个中转路由器实例,配置相关路由,实现VPC-A、VPC-B分别与VPC-C互通,VPC-A与VPC-B彼此之间隔离。您可以参考如下操作配置,也可以参考 实现不同VPC之间的私网互通与隔离(同账号同地域)

创建中转路由器实例及其TR路由表

  1. 登录 中转路由器控制台
  2. 单击“创建中转路由器”按钮,进入创建中转路由器页面。
  3. 参考下表,配置相关参数。
    参数
    说明
    取值示例
    地域选择中转路由器实例所属的地域。华北2(北京)
    名称输入中转路由器实例的名称。TR-X
    项目选择中转路由器所属的项目。default
    标签按需为中转路由器添加一个或多个用户标签。不添加用户标签
  4. 单击“确定”按钮,完成创建中转路由器实例。

    说明

    中转路由器实例创建成功后,系统自动创建了TR系统路由表,请记录该TR系统路由表的名称。下文以RouteTable-default为例。

  5. 在中转路由器实例列表页面,单击目标中转路由器实例的名称,进入详情页面。
  6. 选择“路由表”页签,单击TR路由表列表旁的“创建路由表”按钮,弹出创建路由表窗口。
  7. 输入TR自定义路由表名称R-Table-X。单击“确定”按钮,完成创建TR自定义路由表。

创建网络实例连接

参考以下步骤,依次创建3条网络实例连接,3条网络实例连接的配置分别如参数配置表中的取值示例一、取值示例二和取值示例三。

  1. 在中转路由器实例列表页面,单击目标中转路由器实例的名称,进入详情页面。

  2. 在“同地域网络实例连接”页签, 单击“创建网络实例连接”按钮,进入创建网络实例连接页面。

  3. 参考下表,配置相关参数。

    参数说明取值示例一取值示例二取值示例三
    中转路由器默认为您选定的中转路由器实例。TR-XTR-XTR-X
    地域默认与中转路由器实例的地域相同。华北2(北京)华北2(北京)华北2(北京)
    名称待创建网络实例连接的名称。Attach-VPC-AAttach-VPC-BAttach-VPC-C
    网络实例类型选择待创建网络实例连接的类型。私有网络私有网络私有网络
    私有网络选择待关联的私有网络实例。VPC-AVPC-BVPC-C
    可用区及子网选择连接点的所在可用区的子网。子网为网络实例连接的网卡分配私网IP地址。可用区A,子网-A可用区A,子网-B可用区A,子网-C
    关联转发是否开启关联转发,并选择关联转发的TR路由表。开启后,来自该网络实例连接的流量,将按照其关联转发TR路由表的路由条目进行转发。开启,RouteTable-default开启,RouteTable-default开启,R-Table-X
    路由学习是否为开启路由学习,并选择路由选择的TR路由表。开启后,指定TR路由表自动生成目标网段为该私有网络子网的网段,下一跳为该网络实例连接的路由条目。开启,R-Table-X开启,R-Table-X开启,RouteTable-default
  4. 单击“确定”按钮,完成操作。

此时,两个TR路由表路由条目和关联转发情况如下:

TR路由表名称
目标网段
下一跳
关联转发
说明
RouteTable-default10.0.1.0/24Attach-VPC-CAttach-VPC-A、Attach-VPC-B中转路由器从Attach-VPC-A和Attach-VPC-B接收的访问10.0.1.0/24的流量将转发至Attach-VPC-C。
R-Table-X172.16.1.0/24Attach-VPC-AAttach-VPC-C中转路由器从Attach-VPC-C接收的访问 172.16.1.0/24的流量将转发至Attach-VPC-A。
192.168.1.0/24Attach-VPC-B中转路由器从Attach-VPC-C接收的访问192.168.1.0/24的流量将转发至Attach-VPC-B。

配置VPC路由表

  1. 登录 路由表控制台
  2. 在顶部导航栏,选择项目和地域。
  3. 在路由表列表中,通过目标VPC的ID搜索路由表。
  4. 单击目标路由表名称,进入路由表详情页面。
  5. 在“路由条目 > 自定义路由”页签,单击“添加路由条目”按钮,弹出添加路由条目窗口。
    • 参考下表,在VPC-A和VPC-B的路由表,均添加如下自定义路由。
      参数
      说明
      取值示例
      目标网段指定为VPC-C的网段。10.0.0.0/16
      下一跳类型选择路由条目的下一跳资源类型,将指向目标网段的流量转发到指定的资源。中转路由器
      下一跳指定具体的下一跳资源。TR-X
      配置完成后,VPC-A和VPC-B内云资源访问10.0.0.0/16(VPC-C)的流量将路由至中转路由器TR-X。
    • 参考下表,在VPC-C的路由表,添加如下两条自定义路由。
      参数
      说明
      取值示例一
      取值示例二
      目标网段分别指定为VPC-A、VPC-B的网段。172.16.0.0/16192.168.0.0/16
      下一跳类型选择路由条目的下一跳资源类型,将指向目标网段的流量转发到指定的资源。中转路由器中转路由器
      下一跳指定具体的下一跳资源。TR-XTR-X
      配置完成后,VPC-C内云资源访问172.16.0.0/16(VPC-A)和192.168.0.0/16(VPC-B)的流量将路由至中转路由器TR-X。
  6. 单击“确定”按钮,完成路由配置。
  7. 验证。以下步骤以Linux云服务器为例:
    1. 登录VPC-A云服务器实例ECS-A(172.16.1.11),验证能否与VPC-B、VPC-C的云服务器器ECS-B、ECS-C互通,即在命令行执行ping 192.168.1.22ping 10.0.1.33。预期结果如下:
      • VPC-A中的ECS实例与VPC-B中的ECS实例相互隔离,即ECS-A与ECS-B无法ping通。
      • VPC-A中的ECS实例与VPC-C中的ECS实例能够互通,即ECS-A与ECS-C可以ping通。
    2. 同理,登录VPC-B、VPC-C中的ECS实例,验证VPC-A、VPC-B、VPC-C三者之间的互通与隔离。

步骤二:配置公网NAT网关

您可通过本操作,在VPC-C中创建一个全通模式的公网NAT网关。

  1. 登录 公网NAT网关控制台
  2. 在顶部导航栏,选择目标地域和项目,本文示例“华北2(北京)”和“default”。
  3. 单击“创建公网NAT网关”按钮,进入创建公网NAT网关页面。
  4. 参考下表,配置相关参数。
    参数
    说明
    本文取值
    计费类型支持按量计费和包年包月。按量计费
    地域选择公网NAT网关所在地域。华北2(北京)
    名称设置公网NAT网关的名称。NAT-X
    规格选择公网NAT网关的规格。小型
    私有网络选择私有网络。VPC-C|10.0.0.0/16
    子网下拉选择子网。子网-C|10.0.1.0/24

    配置方式

    当计费类型为“按量计费”时,选择公网NAT网关的配置方式。

    • 手动配置:创建完成后,您还需要手动绑定公网IP,配置SNAT规则或DNAT规则。
    • 自动配置(全通模式):自动配置一条0.0.0.0/0的SNAT规则。

    自动配置(全通模式)

    公网IP当配置方式为“自动配置”时,下拉选择一个公网IP。EIP-X
    项目按需选择公网NAT网关所属的项目。default
    标签按需为公网NAT网关添加一个或多个用户标签。不添加用户标签
  5. 单击“确认订单”按钮,进入订单详情页面。
  6. 确认信息无误后,勾选“我已阅读并同意《公网NAT网关服务条款》”,单击“立即购买”按钮,完成操作。

    说明

    若创建失败,请参考 创建公网NAT网关失败是什么原因

步骤三:配置NAT网关相关路由

配置TR路由表

  1. 登录 中转路由器控制台

  2. 单击目标中转路由器实例的名称,进入中转路由器实例详情页面。

  3. 选择“路由表”页签,选中TR系统路由表RouteTable-default,右侧显示TR路由表详情页面。

  4. 在“路由条目”页签,单击“创建静态路由”按钮,进入创建静态路由页面。

  5. 参考下表,配置相关参数。

    参数
    说明
    取值示例
    路由名称输入静态路由的名称。NAT-Gateway
    目标网段输入静态路由目标网段。0.0.0.0/0
    黑洞路由选择静态路由是否为黑洞路由。
    下一跳选择下一跳网络实例连接。Attach-VPC-C
  6. 单击“确定”按钮,完成操作。

配置VPC路由表

  1. 登录路由表控制台
  2. 在顶部导航栏,选择目标资源所属的项目和地域。
  3. 在路由表列表中,单击的VPC-A的路由表名称。
  4. 在“路由条目 > 自定义路由”页签,单击“添加路由条目”按钮,弹出添加路由条目窗口。
  5. 参见下表,配置相关参数。
    参数
    说明
    取值示例
    目标网段设置流量路由的目标网段。0.0.0.0/0
    下一跳类型选择路由条目的下一跳资源类型中转路由器
    下一跳根据下一跳类型,下拉选择资源。TR-X
  6. 单击“确定”按钮,完成配置。

说明

如果VPC-B也需要使用公网NAT网关与公网互通,则您可按需选择如下方案:

  • 方案一:在VPC-B的路由表中也添加目标网段为0.0.0.0/0,下一跳TR-X的路由条目,此时VPC-A、VPC-B均共享VPC-C的公网NAT网关与公网互通,但VPC-A、VPC-B、VPC-C三者之间已彼此互通,即VPC-A与VPC-B已不再彼此隔离,可设置网络ACL或安全组控制VPC-A与VPC-B彼此之间的流量。
  • 方案二:在VPC-B中单独创建一个公网NAT网关,可保证VPC-A与VPC-B彼此之间隔离。

步骤四:验证

登录VPC-A云服务器实例ECS-A(172.16.1.11),在命令行执行ping 114.114.114.114
ping通,则表示VPC-A的ECS-A可通过VPC-C的公网NAT网关访问公网,即VPC-A的云服务器可共享VPC-C的公网NAT网关。

说明

ping不通,请参考 已配置SNAT规则的云服务器无法访问公网