为已分配固定公网IP的ECS实例统一公网出口IP

通过为已分配固定公网IP的ECS实例统一公网出口IP,有利于您更高效地管理互联网业务。本文为您介绍如何为已分配固定公网IP的ECS实例统一公网出口IP。

前提条件

分配了固定公网IP的ECS实例所在的VPC已经配置了SNAT功能。更多信息,请参见创建SNAT实现访问公网服务

背景信息

NAT网关提供SNAT功能,为VPC内无公网IP的ECS实例提供访问互联网的代理服务。如果VPC内某些ECS实例已经分配了固定公网IP,这些ECS实例会优先通过固定公网IP访问互联网,而VPC内的其他ECS实例通过NAT网关的SNAT功能代理访问互联网,造成VPC内ECS实例的公网出口IP不一致,不利于统一管理业务。

image

您可以通过为ECS实例绑定弹性网卡来解决ECS实例公网出口IP不统一的问题。

如下图,您可以为ECS实例单独分配一块弹性网卡,并将固定公网IP转为EIP,然后将EIP绑定到弹性网卡,这样来自互联网的访问流量会经过弹性网卡到达ECS实例,当ECS实例需要访问互联网时会通过NAT网关进行转发。

image

步骤一:固定公网IP转EIP

不同计费模式的ECS实例,对固定公网IP转EIP的支持不同:

  • 按量付费类型的ECS实例,支持直接将固定公网IP转为EIP。

  • 包年包月类型的ECS实例,不支持直接将固定公网IP转为EIP。您需要先将包年包月ECS实例转为按量付费ECS实例,再将按量付费ECS实例的固定公网IP转为EIP。包年包月ECS实例转为按量付费ECS实例的详细操作说明,请参见包年包月转按量付费

完成以下操作,将按量付费ECS实例的固定公网IP转为EIP。

  1. 登录云服务器ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在顶部状态栏处,选择ECS实例的地域。

  4. 实例列表页面,找到目标ECS实例,选择操作列下的ellipsis-v.png > 网络和安全组 > 公网IP转换为弹性公网IP

  5. 在弹出的对话框中,单击确定

步骤二:创建弹性网卡

  1. 登录云服务器ECS管理控制台

  2. 在左侧导航栏,选择网络与安全 > 弹性网卡

  3. 在顶部状态栏处,选择弹性网卡的地域。

    说明

    弹性网卡的地域必须与ECS实例的地域相同。

  4. 弹性网卡页面,单击创建弹性网卡

  5. 创建弹性网卡页面,根据以下信息配置弹性网卡,然后单击创建网卡

    以下为您列举强相关参数,更多信息,请参见创建辅助弹性网卡

    配置

    说明

    弹性网卡名称

    输入弹性网卡的名称。

    专有网络

    选择ECS实例所在的专有网络。

    交换机

    选择ECS实例所在可用区的交换机。

    安全组

    选择当前专有网络的一个安全组。

    主私网IP(可选)

    输入弹性网卡的主私网IPv4地址。此IPv4地址必须属于交换机的CIDR网段中的空闲地址。如果您没有指定,创建弹性网卡时将自动为您分配一个空闲的私网IPv4地址。本文不指定主私网IP。

    辅助私网IPv4(可选)

    单击相应选项进行设置。本文选择不设置。

步骤三:将弹性网卡绑定到ECS实例

  1. 登录云服务器ECS管理控制台

  2. 在左侧导航栏中,选择网络与安全 > 弹性网卡

  3. 在顶部状态栏处,选择弹性网卡的地域。

  4. 弹性网卡页面,找到目标弹性网卡,单击操作列下的绑定实例

  5. 在弹出的对话框中,选择要绑定的ECS实例,然后单击确定

步骤四:将EIP与ECS实例解绑

  1. 登录弹性公网IP管理控制台

  2. 在顶部状态栏处,选择EIP的地域。

  3. 弹性公网IP页面,找到目标EIP,单击操作列下的解绑资源

  4. 在弹出的对话框中,单击确定

步骤五:将EIP绑定到弹性网卡

  1. 登录弹性公网IP管理控制台

  2. 在顶部状态栏处,选择EIP的地域。

  3. 在弹性公网IP页面,找到目标EIP,单击操作列下的绑定资源

  4. 绑定弹性公网IP至资源对话框,根据以下信息绑定EIP至弹性网卡,然后单击确定

    配置

    说明

    实例类型

    选择辅助弹性网卡。

    所在资源组(可选)

    选择该EIP所属的资源组。本文选择默认资源组。

    绑定模式(可选)

    选择EIP绑定模式。 本文选择普通模式

    选择要绑定的实例

    选择要绑定的辅助弹性网卡。

步骤六:配置网卡路由

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择网络与安全 > 弹性网卡

  3. 查看ECS实例的弹性网卡信息。

  4. 远程登录ECS实例,更多信息,请参见连接方式概述

  5. 执行ip a命令查看弹性网卡信息。网卡信息

    经过查看,得到ECS实例弹性网卡的信息如下:

    eth0:主网卡,私网地址:192.168.3.10

    eth1:辅助弹性网卡,私网地址:192.168.3.11 公网地址:118.190.XX.XX

  6. 按您的需要规划路由表里每块网卡的默认路由metric值。

    执行命令route -n查看Gatewaymetric值。

    查询结果如下所示:metric

    说明

    本文以一块辅助弹性网卡为例,查看到辅助弹性网卡的metric值大于主网卡的metric值,路由优先级低于主网卡,不需要执行重新规划网卡的metric值,保持默认配置即可。如有多块辅助弹性网卡,请根据实际情况配置,具体操作,请参见配置网卡路由

  7. 创建路由表并配置策略路由。

    • 如果需要为ECS实例的弹性网卡配置单次策略路由,请执行以下操作。

      说明

      ECS实例重启后,配置的弹性网卡路由会失效。

      1. 执行以下命令创建路由表。

        ip -4 route add default via 192.168.3.13 dev eth1 table 101
        说明

        建议路由表名称和网卡的默认路由metric取值保持一致,如本例中的101。

      2. 执行以下命令检查路由表是否创建成功。

        ip route list table 101

        查询结果如下所示:路由

      3. 执行以下命令创建策略路由。

        ip -4 rule add from 192.168.3.11 lookup 101

      4. 执行以下命令查看路由规则。

        ip rule list

        查询结果如下所示:策略路由

    • 如果需要为ECS实例的弹性网卡配置多次路由,请执行以下操作。

      说明

      ECS实例重启后,配置的弹性网卡路由不会失效。

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

        vi /etc/rc.local
      2. 在配置文件末尾,按i进入编辑模式。

      3. 在配置文件末尾,添加以下信息。

        ip -4 route add default via 192.168.3.13 dev eth1 table 101
        ip -4 rule add from 192.168.3.11 lookup 101
        说明

        本文以一块辅助弹性网卡为例,查看到辅助弹性网卡的metric值大于主网卡的metric值,路由优先级低于主网卡,不需要重新规划网卡的metric值,保持默认配置即可。如有多块辅助弹性网卡,请将规划metric值的命令也添加到配置文件中。关于规划metric值的具体命令,请参见配置网卡路由

      4. 按下Esc键,输入:wq并回车以保存并关闭文件。

      5. 执行以下命令修改/etc/rc.d/rc.local配置文件的可执行权限。

        chmod +x /etc/rc.d/rc.local
        说明

        由于/etc/rc.local配置文件是/etc/rc.d/rc.local配置文件的软链接,因此修改配置文件的权限时需要修改/etc/rc.d/rc.local配置文件的权限。执行ls -l /etc/rc.local命令可以查看到/etc/rc.local配置文件是/etc/rc.d/rc.local配置文件的软链接。

步骤七:测试网络连通性

完成以下操作,测试互联网是否可以通过弹性网卡绑定的EIP访问ECS实例。本操作以本地Linux设备远程连接ECS实例为例。

说明

远程连接ECS实例,请确认ECS实例的安全组已放行SSH(22)端口。更多信息,请参见添加安全组规则

  1. 登录本地Linux设备。

  2. 执行ssh root@公网IP命令,然后输入ECS实例的登录密码,查看是否可以远程连接到实例。

    若界面上出现Welcome to Alibaba Cloud Elastic Compute Service!时,表示您已经成功连接到实例。验证

完成以下操作,测试ECS实例是否可以通过NAT网关的SNAT功能主动访问互联网。本操作以在ECS实例上查看公网出口IP为例。

  1. 登录ECS实例。

  2. 执行curl https://myip.ipip.net查看公网出口IP。

    若公网出口IP与NAT网关SNAT条目中的IP一致,即ECS实例优先通过NAT网关的SNAT功能主动访问互联网。验证2