创建并使用弹性网卡

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

弹性网卡可以实现高可用集群搭建、低成本故障转移和精细化的网络管理。如果您的业务需要更精细的网络分类、隔离,解决单网卡的单点故障问题等,您可以为ECS实例绑定多张弹性网卡,实现网卡的扩展。

创建弹性网卡

您可以在购买实例的时候创建弹性网卡,或者在实例创建后,单独创建弹性网卡并绑定到实例上。

说明

单个地域中,创建弹性网卡的数量有限制。您可以访问配额中心查看限额,也可以根据业务需要申请提升弹性网卡的总数量上限。具体操作,请参见ECS配额管理

随实例创建

购买ECS实例时,您可以选择添加随实例创建的弹性网卡。这些弹性网卡会自动分配IP地址,并自动绑定到实例上,您无需额外的绑定操作。具体操作,请参见自定义购买实例

说明
  • 部分ECS实例规格不支持在创建实例时绑定辅助弹性网卡,可以在创建实例后单独绑定。更多信息,请参见不支持网卡热插拔的ECS实例规格

  • 通过该方式创建的弹性网卡,默认会随实例释放。您可以关闭随实例释放功能,实例释放后,该网卡依然保留。

image

单独创建

在创建实例后,如果您需要更好地管理和扩展ECS实例的网络功能,例如:增加私网IP地址、满足高可用性网络环境、满足专用网络流量、分离不同网络环境等,您可以单独创建辅助弹性网卡以满足您的需求。单独创建的弹性网卡为辅助弹性网卡,可以绑定到实例上。

说明

您也可以通过调用CreateNetworkInterface创建弹性网卡。

  1. 登录ECS管理控制台

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

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 单击创建弹性网卡

  5. 创建弹性网卡页面,完成相关设置。

    参数

    描述

    弹性网卡名称

    自定义,请按提示要求输入弹性网卡名称。

    专有网络

    选择要绑定实例所对应的专有网络。弹性网卡创建后无法更改专有网络。

    说明

    弹性网卡只能绑定到同一个专有网络的实例上。

    交换机

    选择要绑定实例所在可用区下的交换机。弹性网卡创建后无法更改交换机。

    说明

    弹性网卡和绑定的实例需要属于同一可用区,可以分属不同的交换机。

    安全组

    选择当前专有网络的安全组。至少选择1个,最多选择5个。

    说明

    不能同时选择普通安全组和企业安全组。

    增加弹性RDMA接口

    (可选)该功能是弹性网卡开启支持eRDMA能力,开启此能力的网卡是只能支持挂载到支持eRDMA能力的实例规格上。

    说明

    支持华北2(北京)、华东2(上海)、华东1(杭州)、华南1(深圳)、华南3(广州)、华北6(乌兰察布)、华南2(河源)

    更多信息,请参考弹性RDMA网卡(ERI)

    随实例释放

    释放实例时是否保留已附加的弹性网卡。

    • 开启:表示不保留。

    • 不开启:表示保留。

    默认值:开启。

    源/目的检查

    源/目的检查可确保实例是其接收的任何流量的源或目标,防止伪装报文攻击,提升安全性。如果实例运行网络地址转换、路由或防火墙等服务,则需要关闭此功能。详见源/目的检查

    主私网IP

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

    辅助私网IPv4

    (可选)设置辅助私网IPv4地址。

    • 暂不分配:表示弹性网卡暂时不需要辅助私网IPv4地址。

    • 自动分配:手动输入辅助私网IPv4地址数量,取值为1~9的整数。系统将自动为您分配所选交换机下相应数量的空闲IPv4地址。

    • 指定地址:手动添加辅助私网IPv4地址,最多可添加9个辅助私网IPv4地址。

    • 指定IPv4前缀:为弹性网卡分配IPv4 CIDR格式的IP地址段。更多信息,请参见IP前缀

    IPv6

    (可选)设置辅助私网IPv6地址。

    • 暂不分配:表示弹性网卡暂时不需要辅助私网IPv6地址。

    • 自动分配:手动输入辅助私网IPv6地址数量,取值为1~10的整数。系统将自动为您分配所选交换机下相应数量的空闲IPv6地址。

    • 指定地址:手动补全辅助私网IPv6地址的后四位,最多可添加10个辅助私网IPv6地址。

    • 指定IPv6前缀:为弹性网卡分配IPv6 CIDR格式的IP地址段。更多信息,请参见IP前缀

    说明

    如果需要为网卡设置IPv6地址,需要选择支持配置IPv6地址的交换机。如果选择的交换机没有开启分配IPv6地址的功能,您可以单击开通交换机IPv6去开通。

    SESSION超时时间

    已建状态的TCP连接超时时间、TCP等待与关闭超时时间、UDP流超时时间的配置及管理,详见连接超时管理

    描述

    (可选)输入对弹性网卡的描述,方便后期管理。

    资源组

    (可选)选择一个资源组,可实现多用户、多项目的资源分级管理。更多有关资源组的详情,请参见资源组

    标签

    (可选)选择一个或多个标签,便于搜索和资源聚合。更多有关标签的详情,请参见标签

  6. 单击创建网卡

    当网卡列表中新建弹性网卡的状态显示为待绑定时,表示成功创建了辅助弹性网卡。

绑定弹性网卡到实例

说明

一块弹性网卡一次只能绑定到一台ECS实例上,但是一台ECS实例可以同时绑定多个弹性网卡。每种实例规格能绑定的弹性网卡数量,请参见实例规格族

主网卡在实例创建时绑定。如果您要为实例扩展网络接口,需要将已创建待绑定状态的辅助弹性网卡绑定到目标实例上。

前提条件

  • 待绑定的弹性网卡必须与目标ECS实例属于同一个专有网络VPC,并处于同一可用区。

  • 待绑定的ECS实例必须是I/O优化型实例规格(参见实例规格族或调用DescribeInstanceTypes查看目标实例规格的性能数据,或者参见实例规格选型指导了解如何选择实例规格),且处于已停止运行中状态。

    部分实例规格不支持热插拔,只在已停止状态下才支持绑定辅助弹性网卡。

    不支持网卡热插拔的ECS实例规格列表

    实例规格族

    实例规格

    共享标准型实例规格族s6

    ecs.s6-c1m1.small、ecs.s6-c1m2.large、ecs.s6-c1m2.small、ecs.s6-c1m4.large、ecs.s6-c1m4.small

    经济型实例规格族e

    ecs.e-c1m1.large、ecs.e-c1m2.large、ecs.e-c1m4.large

    突发性能实例规格族t6

    ecs.t6-c1m1.large、ecs.t6-c1m2.large、ecs.t6-c1m4.large、ecs.t6-c2m1.large、ecs.t6-c4m1.large

    突发性能实例规格族t5

    ecs.t5-c1m1.large、ecs.t5-c1m2.large、ecs.t5-c1m4.large、ecs.t5-lc1m1.small、ecs.t5-lc1m2.large、ecs.t5-lc1m2.small、ecs.t5-lc1m4.large、ecs.t5-lc2m1.nano

    上一代共享型实例规格族xn4、n4、mn4、e4

    • ecs.xn4.small

    • ecs.n4.small、ecs.n4.large

    • ecs.mn4.small、ecs.mn4.large

    • ecs.e4.small、ecs.e4.large

  • 如果ECS实例最后一次启动时间在201841日之前(包括但不限于启动新购的实例、重启、重开机),您必须重启该实例,否则不支持绑定弹性网卡。

    重要

    必须在控制台或者通过调用RebootInstance重启ECS实例,在操作系统内重启无效。

操作步骤

购买实例时候绑定

说明

购买实例时,最多只能绑定两块弹性网卡,一块为主网卡,另一块为辅助弹性网卡。

购买ECS实例时,您可以选择同一VPC、同一可用区内已创建且待绑定状态的弹性网卡绑定到实例,作为主网卡或辅助弹性网卡,无需额外创建。具体操作,请参见自定义购买实例

image

实例创建后绑定

说明

实例创建后只能绑定辅助弹性网卡。

  • 通过控制台绑定

    1. 登录ECS管理控制台

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

    3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

    4. 找到可用的辅助弹性网卡,在操作列中,单击绑定实例

      1. 绑定实例对话框中,选择实例后,单击确定

        刷新列表,当弹性网卡的状态显示为已绑定时,表示绑定弹性网卡成功。

  • 通过API绑定

    您也可以通过调用AttachNetworkInterface,指定NetworkInterfaceId为目标弹性网卡ID,InstanceId为实例ID,实现将弹性网卡附加到专有网络VPC类型实例上。

    通过API中的NetworkCardIndex指定物理网卡索引

    为了支持更高的网络性能,部分实例规格支持物理网卡映射,即通过AttachNetworkInterface附加网卡时指定NetworkCardIndex参数映射到物理机的网卡上,从而避免带宽争抢,提升实例的带宽能力。详细信息,请参见物理网卡映射

弹性网卡绑定到实例后,您需要配置弹性网卡在实例内部生效

配置弹性网卡在实例内部生效

主网卡在实例创建之后通常自动生效,您无需进行配置。当您为ECS实例附加多张辅助弹性网卡后,您需要在实例内部确认网卡是否生效。

步骤一:在实例内部确认网卡是否生效

警告

若绑定的辅助弹性网卡未在实例内部正确配置,则该网卡无法正常通信。请根据以下操作确认网卡生效。

Linux实例

示例操作系统:Alibaba Cloud Linux 3.2。

  1. 远程连接Linux实例。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  2. 执行如下命令,查看并确认实例的网卡信息。

    ip a

    通过返回信息,可以看到当前实例的网卡信息:

    • 网卡标识:eth0、eth1,本示例中,实例共2张弹性网卡,一张主网卡eth0、一张辅助弹性网卡eth1。

    • 网卡状态:state UP,表示网卡状态正常,即网卡已经在实例内部生效。

      image

      重要

      如果您看到下图所示的state DOWN,表示此时网卡没有成功加载,无法正常使用,您需要配置Linux操作系统识别网卡,保证网卡状态正常。

      image

    • 网卡主私网IP地址:网卡状态正常后,您可以看到每张弹性网卡的主私网IP

      如果您的网卡分配了辅助私网IP地址,但是操作系统内部没有识别,您可以参考配置操作系统识别辅助私网IP地址进行重新配置。

  3. 执行如下命令,查看网卡的路由信息。

    route -n

    centos8-route

    可以看到,通常情况下,系统会为辅助弹性网卡eth1配置两条路由:

    • Destination192.168.xx.xx的路由:指定了特定子网内的路由。该路由确保本机可以正确地识别并直接与子网内的其他主机进行通信,而无需经过额外的路由器。

    • Destination0.0.0.0的路由:该路由用于处理发往外部网络或其他远程网络的数据包。当数据包的目的地不在本地子网内时,这些数据包将被发送到192.168.xx.xx这个网关地址进行下一步转发。

      重要
      • 默认情况下,附加网卡默认路由的优先级通常小于eth0默认路由的优先级,即优先会从主网卡eth0发送数据。

      • 如果您希望指定附加网卡eth1对应私网IP的数据包从eth1发送,您可以为辅助网卡配置策略路由,从而保证数据源进源出。详细信息,请参见为网卡配置策略路由

      部分较早的操作系统,如Ubuntu16,可能不会自动配置辅助弹性网卡的默认路由,查看路由后如下所示,这种情况可能会导致网卡使用异常,建议您使用较新的操作系统发行版,或者您可以自行为网卡配置默认路由

      image

Windows实例

示例操作系统:Windows Server 2022。

  1. 远程连接Windows实例。

    具体操作,请参见使用Workbench工具以RDP协议登录Windows实例

  2. 打开网络和共享中心。

  3. 单击更改适配器设置

    本示例中,实例绑定了两张弹性网卡(一张主网卡,一张辅助弹性网卡),您可以看到如下所示信息,表示网卡已经在实例内部生效,无需进行其他配置。

    image

    如果由于其他原因,辅助弹性网卡未正确识别,您可能看到如下信息,您可以参考Windows实例弹性网卡配置失效处理方法

    image

  4. 查看网卡状态及详细信息。

    1. 双击网卡名称,查看网卡状态。

      以主网卡以太网为例:

      image

    2. 点击详细信息,查看网卡属性信息。

      您可以在弹出的对话框中,看到网卡的主私网IPv4地址、子网掩码、默认网关等信息:

      image

  5. 打开命令提示符页面。

    通过键盘快捷键Win+R打开运行对话框,输入命令cmd,单击确定

  6. 执行如下命令,查看网卡的路由信息。

    image

步骤二:配置Linux操作系统识别网卡

确认网卡未生效后,您可以通过以下两种方式,在系统内部进行配置,使网卡生效。

说明

目前Windows操作系统大多可以自动识别弹性网卡,如果出现网卡失效问题,请参见Windows实例弹性网卡配置失效处理方法

方式一:通过multi-nic-util工具自动配置

重要
  • 使用multi-nic-util工具会覆盖ECS实例原有的网络配置,请您知悉此风险。

  • 阿里云强烈建议您避免在Docker或其他容器化环境中使用multi-nic-util工具。

  • multi-nic-util适用操作系统:Alibaba Cloud Linux 2、CentOS 6(CentOS 6.8及以上)、CentOS 7(CentOS 7.3及以上)、RedHat。

    对于其他操作系统,您可以参照方式二:通过网络配置文件手动配置

  1. 执行如下命令,下载并安装multi-nic-util工具(需开通公网)。

    wget https://image-offline.oss-cn-hangzhou.aliyuncs.com/multi-nic-util/multi-nic-util-0.6.tgz && \
    tar -zxvf multi-nic-util-0.6.tgz && \
    cd multi-nic-util-0.6 && \
    bash install.sh
  2. 执行如下命令,重启弹性网卡服务。

    sudo systemctl restart eni.service
  3. 再次在实例内部查看网卡,确认网卡状态已正常。

方式二:通过网络配置文件手动配置

不同的Linux发行版和版本根据其网络配置的管理方式和工具的不同,网络配置文件也有所不同。

重要
  • 建议您在编辑网络配置文件之前,先对原文件进行备份。

    如果您不小心修改网络配置文件后无法通过Workbench连接实例,您可以通过VNC连接实例,对比查看网络配置文件变动并进行修复。

  • 本示例中,我们默认配置网络管理协议为动态主机配置协议DHCP,网络接口会默认获取主私网IP地址,如果您希望通过配置静态IP的方式配置网络接口,请参见配置操作系统识别辅助私网IP地址

  • 请注意确认网络配置文件中的IP地址、MAC地址、网关等信息和实际情况保持一致,错误的网络配置可能导致您的实例无法正常通信。

  1. 远程连接ECS实例。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  2. 根据不同的Linux发行版及版本,创建并编辑弹性网卡的网络配置文件。

    主网卡配置文件通常自动生成,以下以辅助网卡为例进行说明。

    RHEL/CentOS
    • 适用操作系统:Alibaba Cloud Linux 2/3、CentOS 6/7/8、Red Hat 6/7/8/9、Anolis 7/8、Fedora 33/34/35等。

    • 网络接口配置文件:/etc/sysconfig/network-scripts/ifcfg-*

      每个网络接口都会有一个对应的配置文件,如ifcfg-eth0、ifcfg-eth1、ifcfg-eth2等。

    • 示例配置:执行如下命令,创建并编辑实例绑定的辅助弹性网卡eth1配置文件,配置网络接口配置信息。

      sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
      DEVICE=eth1      
      TYPE=Ethernet
      BOOTPROTO=dhcp
      ONBOOT=yes
      • DEVICE:指定网络接口标识,如eth1、eth2等。

      • TYPE:网络接口的类型,Ethernet标识为以太网类型的接口。

      • BOOTPROTO:设置获取IP地址的方式。当设置为dhcp时,表示该接口将通过DHCP协议自动从网络中的DHCP服务器那里获得一个IP地址。如果改为static,则需要手动设定静态IP地址、子网掩码等信息。

      • ONBOOT:控制在系统启动时是否激活此网络接口。值设为yes意味着当系统启动时,该网络接口将会被自动启用;如果是no,则不会自动启用,除非手动启动。

    Ubuntu18及之后

    Netplan 是一个较新的网络配置框架,自Ubuntu18.04LTS开始成为Ubuntu的默认网络配置方式。

    • 适用操作系统:Ubuntu 18/20/22/24

    • 网络接口配置文件:/etc/netplan/*.yaml

      • 系统会识别/etc/netplan目录下的yaml文件,可以每个网络接口单独设置一个yaml文件。

      • 默认主网卡网络配置文件50-cloud-init.yaml在系统启动时候由cloud-init自动生成。

    • 示例配置:执行如下命令,创建并编辑实例绑定的辅助弹性网卡eth1配置文件,配置网络接口配置信息。

      sudo vi /etc/netplan/eth1-netcfg.yaml
      说明

      默认情况下,主网卡的网络配置文件已经存在,为保证yaml文件格式正确,您可以通过cp 50-cloud-init.yaml ethX-netcfg.yaml 生成辅助网卡的网络接口配置文件,然后按照如下所示修改对应信息即可。

      network:
          version: 2
          ethernets:
              eth1:
                  dhcp4: true
                  match:
                       macaddress: 00:16:3e:xx:xx:xx 
                  set-name: eth1
      • dhcp4:是否为该接口启用 IPv4 的 DHCP,取值为 true 或 false。

      • match:匹配网络接口的属性,如 macaddress。

        您可以在控制台上或通过API查看弹性网卡的MAC地址。

    传统DebianLinux(早期Ubuntu)
    • 适用操作系统:Debian、Ubuntu早期版本,如Ubuntu 14/16、Debian 8/9/10等。

    • 网络接口配置文件:/etc/network/interfaces

      • 通过编辑这个文件,用户可以手动配置网络接口的IP地址、子网掩码、网关、DNS等信息,以及设置静态IPDHCP等模式。

      • 随着Systemd及其网络管理工具的普及,这个方法在新版本的Ubuntu和其他一些发行版中逐渐被替代。

    • 主要配置项:文件包含了接口的类型、IP地址、子网掩码、网关、DNS信息等配置。

    • 示例配置:执行如下命令,编辑网络配置文件,配置网络接口配置信息。

      sudo vi /etc/network/interfaces
      说明

      主网卡(eth0)和辅助弹性网卡(eth1)的配置在同一个配置文件中维护,请注意不要遗漏主网卡的信息。

      auto lo
      iface lo inet loopback
      
      auto eth0
      iface eth0 inet dhcp
      
      auto eth1  # 表示新配置的网卡接口。
      iface eth1 inet dhcp
      • auto <interface>:系统启动时自动激活网络接口。

      • iface <interface> inet <method>:定义网络接口的配置方式。

      • inet:标识定义IPv4相关配置

      • method:设置获取IP地址的方式。当设置为dhcp时,表示该接口将使用动态主机配置协议DHCP来自动获取IP地址、子网掩码、默认网关以及其他必要的网络参数。如果改为static,则需要手动设定静态IP地址、子网掩码等信息。

    SLES
    • 适用操作系统:SUSE Linux 11/12/15、OpenSUSE 15等。

    • 网络接口配置文件:/etc/sysconfig/network/ifcfg-*

      每个网络接口都会有一个对应的配置文件,如ifcfg-eth0、ifcfg-eth1、ifcfg-eth2等。

    • 示例配置:执行如下命令,创建并编辑实例绑定的辅助弹性网卡eth1配置文件,配置网络接口配置信息。

      sudo vi /etc/sysconfig/network/ifcfg-eth1
      BOOTPROTO='dhcp'
      STARTMODE='auto'
      • BOOTPROTO:指定如何获取 IP 地址。dhcp意味着该接口将通过DHCP(动态主机配置协议)从网络上的DHCP服务器自动获取IP地址以及其他相关的网络配置信息(如子网掩码、默认网关和DNS服务器地址)。

      • STARTMODE:定义了当系统启动时如何处理这个网络接口。设置为'auto'意味着只要系统启动并且检测到此接口是可用的,就会尝试激活这个网络接口。

  3. 执行如下命令,重启网络服务。

    重启网络服务,使配置生效。

    操作系统

    重启服务命令

    • Alibaba Cloud Linux 2

    • CentOS 7

    • Red Hat 7

    • Anolis 7

    • SUSE Linux 11/12/15

    • OpenSUSE 15/42

    sudo service network restart

    sudo systemctl restart network

    • CentOS 6

    • Red Hat 6

    sudo service network restart

    • Alibaba Cloud Linux 3

    • CentOS 8

    • Red Hat 8

    • Anolis 8

    • Fedora 33/34/35

    sudo systemctl restart NetworkManagersudo reboot

    • Ubuntu 18/20/22

    • Debian 12

    sudo netplan apply

    • Ubuntu 14/16

    • Debian 8/9/10/11

    sudo systemctl restart networkingsudo reboot

  4. 再次参照步骤一:在实例内部确认网卡是否生效,确认网卡状态已正常。

分配私网IP进行私网通信

弹性网卡被分配到特定的VPC和子网(交换机)中后,默认被分配子网内的一个主私网IPv4地址, ECS实例通过此私网IP地址进行内网通信。

如果您在多应用、故障转移和负载均衡等业务场景下有多IP的需求,可以为网卡分配子网内的多个私网IP地址。具体操作,请参见为弹性网卡添加辅助私网IP地址

绑定公网IP进行公网通信

  • 单主网卡场景:您可以为实例(主网卡)分配固定公网IP,实现公网通信。详细信息,请参见固定公网IP

  • 多网卡或更加灵活管理的场景:您可以为弹性网卡绑定弹性公网IP实现公网通信,相对于固定公网IP,弹性公网IP可以灵活绑定与解绑。详细信息,请参见EIP绑定至弹性网卡

    您还可以将ECS实例绑定到一个或多个弹性网卡,并且将EIP绑定到弹性网卡的多个私网IP上,这样ECS实例就拥有了多个公网IP地址。具体操作,请参见普通模式下实现ECS绑定多EIP

    重要
    • 您将EIP绑定至辅助弹性网卡后,必须确保网卡已绑定到实例上且已经在实例内部生效,这样EIP才可以正常使用。详细信息,请参见配置弹性网卡在实例内部生效

    • 在使用辅助弹性网卡配合弹性公网IPNAT网关时,由于其默认路由优先级低于主网卡,出站流量默认优先通过主网卡发送,可能导致流量经辅助网卡流入后由主网卡返回,引发弹性公网IP通信异常。此时可以通过配置策略路由,强制流量从接收数据的网卡原路返回,确保进出路径一致。详细信息,请参见为网卡配置策略路由

弹性网卡关联安全组

弹性网卡与安全组关联,提供网络层面的安全控制。

  • ECS实例关联的安全组,其规则作用于ECS实例的主网卡,主网卡随实例加入同一个安全组,您无法单独修改主网卡所关联的安全组,可以通过修改ECS实例所在安全组来实现修改主网卡所属安全组。详细信息,请参见将实例加入、移出或更换安全组

  • ECS实例附加的辅助弹性网卡,可以关联同一专有网络VPC下同一可用区内的安全组,可以和实例所在安全组不同。您可以在创建弹性网卡时指定网卡关联的安全组,或者在网卡创建后更换弹性网卡关联的安全组

  • 如果您为弹性网卡设置了多个辅助IPv4或者IPv6地址,这些IPv4或者IPv6地址也同时关联该网卡所关联的安全组。您可以根据源IP地址、应用层协议、端口等配置精准的安全组规则,以实现对每块弹性网卡的流量进行安全访问控制。详细信息,请参见管理安全组规则

  • 您可以对弹性网卡进行安全组规则检测,主动判断安全组允许和拒绝访问的情况是否符合预期。详细信息,请参见安全组规则检测