全部产品
Search
文档中心

NAT 网关:统一公网出口IP

更新时间:Dec 18, 2024

随着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网关的集中管理和安全特性,有效降低了内网资源暴露的风险,同时提升了运维团队的管理效率。

image

配置步骤

步骤一:固定公网IP转EIP

登录云服务器管理控制台,找到目标ECS实例。将ECS-A实例的固定公网IP转换为EIP。

image

说明

包年包月类型的固定公网IP不支持直接转换为EIP。您需先将包年包月固定公网IP转换为按量付费固定公网IP,再将按量付费固定公网IP转换为EIP。关于包年包月固定公网IP转换为按量付费固定公网IP的详细操作说明,请参见按固定带宽转按使用流量

步骤二:配置弹性网卡

  1. 在左侧导航栏中,选择网络与安全 > 弹性网卡,单击创建弹性网卡

    重要

    在创建弹性网卡时,请确保专有网络和交换机与ECS-A实例位于同一VPC和可用区。

    image

  2. 在弹性网卡页面,找到目标实例,单击操作列下的绑定实例,将已创建的弹性网卡绑定至ECS-A实例。

    image

  3. Workbench控制台页面,登录ECS-A实例,本文以Alibaba Cloud Linux 3.2104 LTS 64位操作系统为例,展示网卡和路由信息,并配置策略路由。

    1. 分别执行ifconfigroute -n命令查看弹性网卡和路由表信息。

      image

    2. 配置策略路由

      临时策略路由配置

      说明

      ECS实例重启后,配置的策略路由会失效。

      1. 执行如下命令,配置策略路由。

        参数说明:

        ip -4 route add default via “eth1子网网关” dev eth1 table “路由表名称”
        ip -4 rule add from “eth1网卡地址” lookup “路由表名称”

        命令示例:

        ip -4 route add default via 172.16.10.253 dev eth1 table 101
        ip -4 rule add from 172.16.10.145 lookup 101
      2. 执行ip rule命令以查看策略路由的配置情况。

        image

      永久策略路由配置

      说明

      ECS实例重启后,配置的策略路由不会失效。

      1. 执行以下命令,打开/etc/rc.local文件。

        vim /etc/rc.local
      2. i键进入编辑模式,添加如下内容,然后按Esc键退出编辑模式,输入:wq保存退出。

        参数说明:

        ip -4 route add default via “eth1子网网关” dev eth1 table “路由表名称”
        ip -4 rule add from “eth1网卡地址” lookup “路由表名称”

        代码示例

        ip -4 route add default via 172.16.10.253 dev eth1 table 101
        ip -4 rule add from 172.16.10.145 lookup 101
      3. 执行以下命令,为/etc/rc.local文件添加执行权限。

        sudo chmod +x /etc/rc.local
    重要

    如果您的ECS实例无法识别绑定的弹性网卡,您需要在ECS实例内部配置弹性网卡以识别IP地址。

步骤三:配置弹性公网IP

弹性公网IP管理控制台页面,找到目标EIP(8.XX.XX.87),单击操作列下的解绑资源。然后再单击操作列下的绑定资源

将EIP绑定至弹性网卡(私网地址为:172.16.10.145)。

image

步骤四:配置NAT网关

  1. 创建公网NAT网关,并绑定EIP。

    1. 在左侧导航栏中,选择NAT网关 > 公网NAT网关,单击创建公网NAT网关

      image

    2. 弹性公网IP管理控制台页面,找到CLB绑定的EIP(39.XX.XX.35),单击操作列下的解绑资源

    3. 返回公网NAT网关页面,找到目标实例,单击弹性公网IP列下的立即绑定。将解绑的EIP(39.XX.XX.35)绑定至公网NAT网关。

      image

  2. 建立公网NAT网关负载均衡CLB实例之间的映射关系。

    1. 登录传统型负载均衡CLB控制台,在实例管理页面,找到目标实例,查看实例专有网络地址。

      image

    2. 返回公网NAT网关页面,找到目标实例,单击操作列下的设置DNAT

    3. DNAT管理页签,单击创建DNAT条目私网端口为CLB实例的监听器端口号。

      image

      说明

      端口设置若选择为任意端口后:

      • DNAT条目中配置了IP映射方式的EIP不能再被其他DNAT条目或SNAT条目使用。

      • 如果NAT网关既配置了DNAT IP映射方式,又配置了SNAT条目,则ECS实例会优先通过DNAT IP映射方式的EIP访问公网。

  3. 建立公网NAT网关VPC实例之间的映射关系,您也可以根据自身需求,调整SNAT条目粒度。

    单击SNAT管理页签,创建SNAT条目

    image

    重要

    若您的交换机绑定至自定义路由表,则需要您在自定义路由表中手动配置目标网段为0.0.0.0/0,下一跳为公网NAT网关的路由条目。

结果验证

CLB服务运行验证

  1. 在浏览器中输入http://39.XX.XX.35确认CLB实例的流量分发状态正常。

    image

  2. 将ECS-B实例权重设置为0后,重新访问时能够正常分发至ECS-C实例。

    image

    image

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。

    image

  • ECS-B实例

    image

  • ECS-C实例

    image

ECS-A实例服务访问运行验证

登录ECS-B实例,并执行命令ssh root@8.XX.XX.87。通过远程登录的方式验证ECS-A实例原有的访问方式是否受到影响。

image

常见问题

在配置ECS实例的公网访问时,如何判断固定公网IP、EIP、SNAT条目和DNAT条目(任意端口)的优先级?

固定公网IP/EIP > DNAT IP映射(任意端口) > SNAT条目绑定的EIP。