当多个VPC需要访问公网时,为节约公网IP资源,您可为多个VPC配置一个公网NAT网关,以节省企业成本。本文为您介绍如何通过中转路由器实现多个VPC共享一个NAT网关访问公网。
背景介绍
某企业的业务部署于3个VPC,如下图所示,VPC-A和VPC-C共用一个公网NAT网关,VPC-B不使用公网NAT网关。
- VPC-A的网段为172.16.0.0/16,其子网-A的网段为172.16.1.0/24。
- VPC-B的网段为192.168.0.0/16,其子网-B的网段为192.168.1.0/24。
- 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彼此之间隔离。
在实际使用过程中,可能存在如下情况:
创建中转路由器实例及其路由表
- 在左侧导航树,单击中转路由器,进入中转路由器控制台。
说明
中转路由器实例创建成功后,系统自动创建了TR系统路由表,请记录该TR系统路由表的名称。下文以RouteTable-default为例。
- 在中转路由器实例列表页面,单击目标中转路由器实例的名称。
- 选择路由表页签,单击TR路由表列表旁的创建路由表按钮。
- 输入TR自定义路由表名称R-Table-X。单击确定按钮,完成创建TR自定义路由表。
创建网络实例连接
参考以下步骤,依次创建3条网络实例连接,3条网络实例连接的配置分别如参数配置表中的取值示例一、取值示例二和取值示例三。
- 在中转路由器实例列表页面,单击目标中转路由器实例的名称。
- 在同地域网络实例连接页签, 单击创建网络实例连接按钮。
此时,两个TR路由表路由条目和关联转发情况如下:
配置VPC路由表
- 在路由表列表中,通过目标VPC的ID搜索路由表。
- 在路由条目 > 自定义路由页签,单击添加路由条目按钮。
- 参考下表,在VPC-A和VPC-B的路由表,均添加如下自定义路由。
- 配置完成后,VPC-A和VPC-B内云资源访问10.0.0.0/16(VPC-C)的流量将路由至中转路由器TR-X。
- 参考下表,在VPC-C的路由表,添加如下两条自定义路由。
- 配置完成后,VPC-C内云资源访问172.16.0.0/16(VPC-A)和192.168.0.0/16(VPC-B)的流量将路由至中转路由器TR-X。
- 登录VPC-A云服务器实例ECS-A(172.16.1.11),验证能否与VPC-B、VPC-C的云服务器器ECS-B、ECS-C互通,即在命令行执行ping 192.168.1.22和ping 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通。
- 同理,登录VPC-B、VPC-C中的ECS实例,验证VPC-A、VPC-B、VPC-C三者之间的互通与隔离。
步骤二:配置公网NAT网关
您可通过本操作,在VPC-C中创建一个全通模式的公网NAT网关。
- 在顶部导航栏,选择目标地域和项目,本文示例华北2(北京)和default。
- 请根据控制台指引查阅并确认相关协议,单击立即购买按钮,完成操作。
步骤三:配置NAT网关相关路由
配置TR路由表
- 在左侧导航树,单击中转路由器,进入中转路由器控制台。
- 选择路由表页签,选中TR系统路由表RouteTable-default,右侧显示TR路由表详情页面。
配置VPC路由表
- 在路由条目 > 自定义路由页签,单击添加路由条目按钮。
说明
如果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网关。