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

前提条件

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

背景信息

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

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

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

步骤一:创建弹性网卡

  1. 登录云服务器ECS管理控制台
  2. 在左侧导航栏,选择网络与安全 > 弹性网卡
  3. 选择弹性网卡的地域。
    说明 弹性网卡的地域必须与ECS实例的地域相同。
  4. 弹性网卡页面,单击创建弹性网卡
  5. 创建弹性网卡对话框,根据以下信息配置弹性网卡,然后单击确定
    • 网卡名称:输入弹性网卡的名称。
    • 专有网络:选择ECS实例所在的专有网络。
    • 交换机:选择ECS实例所在可用区的交换机。
    • 主私网IP(可选):输入弹性网卡的主私网IPv4地址。此IPv4地址必须属于交换机的CIDR网段中的空闲地址。如果您没有指定,创建弹性网卡时将自动为您分配一个空闲的私网IPv4地址。本文不指定主私网IP。
    • 辅助私网IP(可选):单击相应选项进行设置。本文选择不设置
    • 安全组:选择当前专有网络的一个安全组。
    更多参数信息,请参见创建弹性网卡

步骤二:将弹性网卡绑定到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实例,更多信息,请参见ECS连接方式概述
  5. 执行以下命令查看弹性网卡信息。
    ip a
    ip a

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

    eth0为主网卡,对应的私网地址是192.168.3.10。

    eth1为辅助弹性网卡,对应的私网地址是192.168.3.11,公网地址是118.190.XX.XX。

  6. 按您的需要规划路由表里每块弹性网卡的默认路由metric值。
    执行以下命令,查看 Gatewaymetric值。
    route -n
    metric
    说明 本文以一块辅助弹性网卡为例,查看到辅助弹性网卡的 metric值大于主网卡的 metric值,路由优先级低于主网卡,不需要执行重新规划网卡的 metric值,保持默认配置即可。如有多块辅助弹性网卡,请根据实际情况配置,具体操作,请参见 配置网卡路由
  7. 创建路由表并配置策略路由。
    1. 如果需要为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
        查询结果如下所示:策略路由
    2. 如果需要为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!
    实例1

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

  1. 登录ECS实例。
  2. 执行curl https://myip.ipip.net查看公网出口IP。若公网出口IP与NAT网关SNAT条目中的IP一致,即ECS实例优先通过NAT网关的SNAT功能主动访问互联网。实例2