随着ECS实例增加,逐一配置公网IP会降低管理和运营效率,且增加了ECS实例遭受恶意扫描和攻击的风险。您可以通过配置公网NAT网关的SNAT条目,使指定的多个ECS实例可以通过同一弹性公网IP访问互联网,从而简化管理流程并降低内网资源暴露的风险。
场景示例
某企业云端存在大量ECS实例。逐一为每个ECS实例配置公网IP将降低管理和运营效率,这种做法不仅复杂,还增加了ECS实例面临恶意扫描和攻击的风险。因此,企业决定采用公网NAT网关,并通过配置SNAT条目,使得VPC-A内所有ECS实例能够通过指定的公网IP访问互联网。然而,由于部分早期创建的ECS实例已具备公网访问能力,企业计划采取以下措施:
统一出口:在确保原有资源正常运行的前提下,通过EIP(39.XX.XX.35)为VPC-A内的所有ECS实例统一提供公网访问能力。
平稳过渡:将ECS-A实例的固定公网IP转换为EIP后,需将其从主网卡上解绑,并绑定至弹性网卡,从而确保终端用户访问ECS-A实例的方式保持不变。
通过上述调整,该企业利用公网NAT网关的集中管理和安全特性,有效降低了内网资源暴露的风险,同时提升了运维团队的管理效率。
配置步骤
步骤一:固定公网IP转EIP
登录云服务器管理控制台,找到目标ECS实例。将ECS-A实例的固定公网IP转换为EIP。
包年包月类型的固定公网IP不支持直接转换为EIP。您需先将包年包月固定公网IP转换为按量付费固定公网IP,再将按量付费固定公网IP转换为EIP。关于包年包月固定公网IP转换为按量付费固定公网IP的详细操作说明,请参见按固定带宽转按使用流量。
步骤二:配置弹性网卡
在左侧导航栏中,选择
,单击创建弹性网卡。重要在创建弹性网卡时,请确保专有网络和交换机与ECS-A实例位于同一VPC和可用区。
在弹性网卡页面,找到目标实例,单击操作列下的绑定实例,将已创建的弹性网卡绑定至ECS-A实例。
在Workbench控制台页面,登录ECS-A实例,本文以Alibaba Cloud Linux 3.2104 LTS 64位操作系统为例,展示网卡和路由信息,并配置策略路由。
分别执行
ifconfig
、route -n
命令查看弹性网卡和路由表信息。配置策略路由
重要如果您的ECS实例无法识别绑定的弹性网卡,您需要在ECS实例内部配置弹性网卡以识别IP地址。
步骤三:配置弹性公网IP
在弹性公网IP管理控制台页面,找到目标EIP(8.XX.XX.87),单击操作列下的解绑资源。然后再单击操作列下的绑定资源。
将EIP绑定至弹性网卡(私网地址为:172.16.10.145)。
步骤四:配置NAT网关
创建公网NAT网关,并绑定EIP。
在左侧导航栏中,选择
,单击创建公网NAT网关。在弹性公网IP管理控制台页面,找到CLB绑定的EIP(39.XX.XX.35),单击操作列下的解绑资源。
返回公网NAT网关页面,找到目标实例,单击弹性公网IP列下的立即绑定。将解绑的EIP(39.XX.XX.35)绑定至公网NAT网关。
建立公网NAT网关与负载均衡CLB实例之间的映射关系。
登录传统型负载均衡CLB控制台,在实例管理页面,找到目标实例,查看实例专有网络地址。
返回公网NAT网关页面,找到目标实例,单击操作列下的设置DNAT。
在DNAT管理页签,单击创建DNAT条目。私网端口为CLB实例的监听器端口号。
说明端口设置若选择为任意端口后:
DNAT条目中配置了IP映射方式的EIP不能再被其他DNAT条目或SNAT条目使用。
如果NAT网关既配置了DNAT IP映射方式,又配置了SNAT条目,则ECS实例会优先通过DNAT IP映射方式的EIP访问公网。
建立公网NAT网关与VPC实例之间的映射关系,您也可以根据自身需求,调整SNAT条目粒度。
单击SNAT管理页签,创建SNAT条目。
重要若您的交换机绑定至自定义路由表,则需要您在自定义路由表中手动配置目标网段为0.0.0.0/0,下一跳为公网NAT网关的路由条目。
结果验证
CLB服务运行验证
在浏览器中输入
http://39.XX.XX.35
确认CLB实例的流量分发状态正常。将ECS-B实例权重设置为0后,重新访问时能够正常分发至ECS-C实例。
ECS实例统一公网出口IP验证
通过Workbench控制台依次登录ECS-A、ECS-B和ECS-C实例,并执行命令curl myip.ipip.net
,以确认ECS实例的公网出口IP是否一致。
ECS-A实例
由于实例内部网卡路由优先级的影响,出方向流量将默认从eth0网卡通过与SNAT条目绑定的EIP进行转发。
eth0:私网地址:172.16.10.135,Metric:0(数字越小路由优先级越高),SNAT条目绑定的EIP:39.XX.XX.35。
eth1:私网地址:172.16.10.145,Metric:101,EIP:8.XX.XX.87。
ECS-B实例
ECS-C实例
ECS-A实例服务访问运行验证
登录ECS-B实例,并执行命令ssh root@8.XX.XX.87
。通过远程登录的方式验证ECS-A实例原有的访问方式是否受到影响。
常见问题
在配置ECS实例的公网访问时,如何判断固定公网IP、EIP、SNAT条目和DNAT条目(任意端口)的优先级?
固定公网IP/EIP > DNAT IP映射(任意端口) > SNAT条目绑定的EIP。