创建并使用弹性网卡

重要

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

每台ECS实例仅有一张主网卡。可以通过绑定一或多张辅助弹性网卡,来避免单点故障,或隔离流量。

创建弹性网卡

控制台

  1. 前往ECS控制台-弹性网卡页面,单击创建弹性网卡

  2. 配置以下关键参数,其余参数保持默认:

    • 专有网络与交换机:确定网卡所在的网络。

      绑定实例时,须选择同一专有网络与交换机。
    • 安全组:可绑定一个或多个安全组,用于控制入站和出站流量。

API

调用CreateNetworkInterface创建弹性网卡。

绑定弹性网卡到ECS实例

新建实例时,可指定已创建的弹性网卡为主网卡或辅助网卡,实例将继承其网络配置(IP地址、路由、MAC地址和安全组等)。

为已有实例绑定时,弹性网卡只能作为辅助网卡,可扩展其网络能力,如隔离流量或增加IP地址。

实例可绑定的网卡数量因规格族有所不同。

前提条件

  • 弹性网卡须与实例处于同一专有网络及交换机。

  • 部分实例规格须先停止,才可绑定网卡。

    不支持网卡热插拔的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、ecs.e-c4m1.large、ecs.e-c2m1.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

创建新实例时绑定

控制台

重要

若选择已有安全组或新建安全组后,系统会自动创建一张新的主网卡,无法绑定已有网卡。

  1. 前往ECS控制台-自定义购买页面。

  2. 选择网络和可用区后,在网络和安全组弹性网卡配置项中,为主网卡辅助网卡选择已有网卡

    image

API

调用RunInstances,在NetworkInterface参数中,使用NetworkInterfaceId指定弹性网卡,并使用InstanceType定义其为主网卡或辅助网卡。

已有实例绑定

控制台

  1. 前往ECS控制台-实例单击目标实例ID进入实例详情页。

  2. 在实例详情页切换至弹性网卡页签,单击绑定辅助弹性网卡

  3. 选择目标弹性网卡,然后单击确定

API

调用AttachNetworkInterface,为已有实例绑定弹性网卡。

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

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

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

警告

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

Linux实例

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

  1. 远程连接Linux实例。

    具体操作,请参见使用Workbench终端连接登录Linux实例(SSH)

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

    ip a

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

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

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

      image

      重要

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

      image

    • 网卡主私网IP地址:网卡状态正常后,您可以看到每张弹性网卡的主私网IP地址。详细信息,请参见主私网IP

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

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

    route -n

    centos8-route

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

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

    • Destination0.0.0.0的路由:默认路由,当数据包的目标地址未匹配到路由表中更具体的路由条目(如针对特定子网或主机的路由)时,系统将选择默认路由。此时,数据包将通过 Iface 指定的网络接口发送到 Gateway 指定的下一跳地址进行转发。

      重要
      • 当存在多条默认路由时,路由优先级由Metric决定,Metric值越小,优先级越高。

      • 如果您希望精细控制流量路径,要求流量从接收数据的网卡原路返回,确保进出路径一致,您可以为网卡配置策略路由

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

      image

Windows实例

示例操作系统:Windows Server 2022。

  1. 远程连接Windows实例。

    具体操作,请参见使用Workbench终端连接登录Windows实例(RDP)

  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仅适用于以下操作系统:Alibaba Cloud Linux 2、CentOS 6(CentOS 6.8及以上)、CentOS 7(CentOS 7.3及以上)、RedHat。

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

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

如果由于以上原因,您无法使用该工具配置网卡,您可以参照方式二:通过网络配置文件手动配置

  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终端连接登录Linux实例(SSH)

  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
      DEFROUTE=no
      • DEVICE:指定网络接口标识,如eth1、eth2等。

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

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

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

      • DEFROUTE:是否配置当前网络接口成为默认路由的出口。

        • 对于主网卡eth0,您无需进行此参数配置,系统通常自动为主网卡生成优先级最高的默认路由。

        • 为避免在启动辅助弹性网卡时改变ECS实例活动的默认路由,建议您不要将eth1设置为默认路由(设置后eth1可能会代替eth0成为默认路由出口,导致您主网卡通信异常)。多网卡环境中,您可以通过为网卡配置策略路由控制网卡流量转发路径。

    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的网卡流出,引发弹性公网IP通信异常。此时可以通过配置策略路由,强制流量从接收数据的网卡原路返回,确保进出路径一致。详细信息,请参见为网卡配置策略路由

    • 如果网卡及路由正确配置后,依然无法ping通公网IP,您可能需要进一步检查安全组、防火墙等配置,详细信息,请参见无法pingECS实例公网IP的排查方法

弹性网卡关联安全组

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

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

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

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

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