106
阿里云
自建SNAT网关平滑迁移到NAT网关__最佳实践_用户指南_专有网络 VPC-阿里云
概述
在VPC中搭建一个SNAT网关,可以实现无公网IP的ECS实例安全的访问互联网。
用户可以选择使用ECS实例自己搭建SNAT网关(如何自建SNAT网关),也可以使用NAT网关的SNAT功能(最佳实践-高可用的SNAT网关)。相比而言,后一种方案比前一种方案有更好的可用性和性能。
如果已经在VPC中基于ECS搭建了SNAT网关,又想将架构切换为基于NAT网关实现SNAT,需要先将原有自建SNAT网关拆除,再进行NAT网关的创建和配置。这样的操作会导致SNAT功能中断一段时间。
本文提供一种操作方法,可以利用路由表的一些特性(主要是“最长匹配原则”),实现自建SNAT网关和NAT网关的无缝切换。切换过程中,不会出现SNAT功能不可用,仅在切换的一瞬间发生已有TCP连接的断开,只需应用进行重连即可;
环境
当前VPC中有两个ECS实例:
- i-9410jeo5i为自建的SNAT网关;这台ECS上绑定了一个EIP,并且开启了转发服务、配置了iptables规则以实现SNAT转发;
- i-94kjwn5ds为需要SNAT功能来访问互联网的服务器;
当前VPC的路由器上,添加了一条自定义路由,将公网访问请求转发给i-9410jeo5i;
操作步骤
添加8条路由,对原有路由进行覆盖
添加8条路由,目的CIDR分别为1.0.0.0/8;2.0.0.0/7;4.0.0.0/6;8.0.0.0/5;16.0.0.0/4;32.0.0.0/3;64.0.0.0/2;128.0.0.0/1;下一跳均为i-9410jeo5i。
配置结果如下图所示:
由于路由表按照“最长匹配原则”,会优先匹配子网掩码最长的路由条目;而去往任意IP地址的数据包,都会匹配到这8条中的一条;因此,0.0.0.0/0这条路由实际上已经不再有用了。
删除目的地址段为0.0.0.0/0的路由
创建NAT网关
在该VPC中创建NAT网关。
创建出的NAT网关如图所示:
创建NAT网关时,系统会自动添加一条0.0.0.0/0的路由,指向NAT网关
为NAT网关配置公网IP与带宽
在NAT网关上创建一个公网带宽包,为NAT网关配置公网IP与带宽。
在NAT网关上配置SNAT规则
在NAT网关的控制台上,进入“SNAT表”管理界面,添加SNAT规则;交换机ID是需要SNAT功能的ECS所属的交换机的ID;外部IP地址 是NAT网关上执行SNAT转换时使用的公网IP地址。
添加出的SNAT规则如图所示:
至此,NAT网关上SNAT相关的所有配置已经完成,NAT网关已经开始对收到的所有公网访问请求进行SNAT转换;但是,由于指向NAT网关的路由的优先级较低,因而没有数据包被转发到NAT网关上
去除之前添加的八条路由,启用NAT网关
删除之前添加的八条指向i-9410jeo5i的明细路由,让路由器把公网访问请求不再转发给自建SNAT,而是转发给NAT网关。
八条路由全部删除后,路由表中的内容如图所示:
至此,已经完成了从自建SNAT网关到使用官方NAT网关的SNAT功能的全部切换流程。
最后更新:2016-11-23 16:04:16
上一篇:
高可用的SNAT网关__最佳实践_用户指南_专有网络 VPC-阿里云
下一篇:
专有网络环境做端口映射__配置_用户指南_专有网络 VPC-阿里云
计费模式__购买实例_购买指南_云服务器 ECS-阿里云
查看所有集群实例__集群API列表_API参考_容器服务-阿里云
CNAME回源___产品功能说明_产品常见问题_DDoS 高防IP-阿里云
索引查询-消息服务(MNS)日志__最佳实践_日志服务-阿里云
安全组默认规则__安全组_用户指南_云服务器 ECS-阿里云
UPDATE__数据操作语言_SQL语法参考_云数据库 OceanBase-阿里云
包月ECS带宽按流量计费FAQ__ECS常见问题_产品使用问题_云服务器 ECS-阿里云
使用示例__osscmd_常用工具_对象存储 OSS-阿里云
使用金融云VPC__使用金融云产品_金融云-阿里云
删除路由器接口__高速通道相关接口_API 参考_云服务器 ECS-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云