弹性网卡(Elastic Network Interfaces,简称ENI)是一种在专有网络VPC中为ECS实例提供网络接口和IP地址的虚拟网络接口。每台ECS实例可以附加一个或多个弹性网卡。弹性网卡支持多IP地址配置,并能在同一VPC、同一可用区内的不同ECS实例之间迁移,这使得网络配置更加灵活和可扩展,以满足不同业务场景下的网络需求。例如,实现多IP地址、多网卡、高可用网络方案等。
弹性网卡的类别
阿里云存在以下几种类型的网卡:
主网卡
VPC网络中的每个实例默认拥有的网卡,称为主网卡,每个实例只会有一个主网卡。
默认情况下,主网卡随实例的创建而自动创建。
您可以在创建实例时,选择已有的辅助网卡作为主网卡创建实例,详细信息,请参见释放实例时保留弹性网卡。
辅助弹性网卡
辅助弹性网卡是用户可以单独创建并额外绑定到实例上的网卡,与主网卡相比,它们可以被独立创建、动态绑定与解绑。
您可以通过绑定辅助网卡实现实例网络接口的扩展,详细信息,请参见实例配置多网卡实现业务隔离。
弹性网卡的功能特性
多IP地址支持:一张弹性网卡可以关联多个私有IP地址,使得单个ECS实例能够通过不同的IP地址对外提供服务或访问外部资源,增加了网络灵活性。详细信息,请参见网卡绑定多个IP实现多业务线独立出口。
随实例释放功能:可以在创建弹性网卡时或在弹性网卡创建后,通过开启、关闭随实例释放功能来允许弹性网卡在实例释放时释放或保留。此功能默认开启,即网卡随实例释放而释放,简化运维管理,避免资源残留。
随实例释放而保留的弹性网卡,保留了IP、关联安全组等配置,可以快速绑定到同一VPC、同一可用区内的其他实例上,也可以在创建新实例时直接复用,提升运维灵活性和业务连续性。
详细信息,请参见释放实例时保留弹性网卡。
热插拔:辅助弹性网卡的热插拔功能提供了极大的灵活性和便利性,允许在ECS实例处于运行状态时动态地添加或移除辅助弹性网卡,而无需重启服务器或中断正在运行的服务。比如,您可以在不重启实例的情况下,将辅助网卡从一个实例解绑,然后挂载到同VPC下、同可用区的另一个实例。
说明主网卡无法解绑实例,不支持热插拔。
目前部分实例规格支持网卡热插拔,不支持网卡热插拔的规格列表如下所示:
对于不支持网卡热插拔的ECS实例规格:
不支持在创建实例时添加辅助弹性网卡,可以在创建实例后绑定。
绑定和解绑辅助弹性网卡时,实例必须处于已停止状态。
注意事项
弹性网卡是免费的,但单个阿里云账户可以创建的弹性网卡数量是有限制的。更多信息,请参见弹性网卡限制。
实例和绑定的弹性网卡,必须属于同一VPC、同一可用区。
实例绑定的多张弹性网卡,可以属于同一VPC、同一可用区下的不同子网(交换机)。
如果将来自同一子网的两个或多个网卡附加到一个实例,可能会遇到非对称路由等网络问题。您可以通过在一张弹性网卡(主网卡或辅助弹性网卡)上分配一个或多个辅助私网IP地址,实现专有网络VPC类型ECS实例的高利用率和负载故障时的流量转移。更多信息,请参见辅助私网IP。
每个实例可以绑定的网卡数量由实例规格决定,更多信息,请参见实例规格族中的弹性网卡。
实例附加多张网卡不会增加或加倍主机实例的网络带宽,详细信息,请参见网络带宽。
弹性网卡的重要属性
通过绑定弹性网卡,ECS实例能够实现与其他云资源之间的通信。以下是弹性网卡的几个重要属性:
专有网络VPC:弹性网卡只能绑定到同一个专有网络的实例上,弹性网卡创建后无法更改专有网络。
交换机:每个VPC都有其独立的IP地址范围。在一个专有网络VPC中,可以创建多个交换机来划分子网,一个专有网络内的子网默认私网互通。当弹性网卡指定交换机时,它将获得该子网内的一个或多个IP地址。弹性网卡和绑定的实例需要属于同一可用区,可以分属不同的交换机。
说明如果您希望为ECS实例绑定不在VPC网段范围内的弹性网卡,您需要为VPC附加网段并创建附加网段内、同ECS实例相同可用区下的交换机,然后创建该交换机下的弹性网卡并绑定到实例。详细信息,请参见VPC附加网段。
MAC地址:每个弹性网卡都有唯一的MAC地址,作为其唯一标识。
您可以通过控制台或API查看网卡的VPC、MAC地址等信息,详细信息,请参见查看或修改弹性网卡的属性。
私网IP:弹性网卡会默认随机分配所选交换机中的空闲IPv4地址,用于在VPC内部进行通信。
如果您需要进行IPv6公私网通信,您可以在开通了IPv6网段的VPC和交换机下,为实例的弹性网卡分配一个或多个IPv6地址。详细信息,请参见IPv6通信。
安全组:弹性网卡与安全组关联,提供网络层面的安全控制。
当您将ECS实例关联到安全组时,实际上是将ECS实例的主网卡关联到安全组。详细信息,请参见为实例(主网卡)关联安全组。
在同一专有网络VPC下,ECS实例的辅助网卡可以关联与主网卡不同的安全组,详细信息,请参见为辅助网卡关联安全组。
常见业务场景
实例配置多网卡实现业务隔离
在单主网卡架构下,ECS实例通过单一网络接口处理全部出入流量,适用于网络流量较为单一的场景。若需实现网络流量的分级管控与业务隔离,可为实例绑定同VPC可用区内的辅助弹性网卡,通过多网卡架构分离业务通道,例如将公网流量与后端私有流量分别承载于不同网卡,同时可为每块网卡独立配置差异化的安全组策略,在实现前端公开域与后端私有域网络分层的基础上,通过安全策略的逐层加固,有效提升整体网络架构的安全防护能力。
您可以根据实际业务需求,为实例绑定多张弹性网卡,并使其在实例内部配置生效,即可以实现多网卡通信,不同实例规格支持绑定的网卡数量不同。具体操作,请参见创建并使用弹性网卡。
网卡绑定多个IP实现多业务线独立出口
弹性网卡支持为单张网卡绑定多个辅助私网IP地址,并通过一一映射弹性公网IP实现公私网通信能力解耦,用户既可基于单网卡构建多IP通信架构,也可在多网卡间灵活划分不同IP的流量路径,满足复杂业务场景中对网络地址资源扩展与流量精细化管理的需求。
不同实例规格支持分配的单网卡私有IP地址数量不同。如您只需要实现多个私网IP,则您需要为网卡分配多个辅助私网IP地址,并在实例内部配置生效即可,具体操作,请参见为弹性网卡添加辅助私网IP地址。
如您有多个公网IP的需求,您可以为主网卡或辅助网卡的多个私网IP一一映射绑定弹性公网IP,具体操作,请参见普通模式实现ECS绑定多EIP。
您将EIP绑定至辅助弹性网卡后,必须确保网卡已绑定到实例上且已经在实例内部生效,这样EIP才可以正常使用。
在使用辅助弹性网卡配合弹性公网IP或NAT网关时,可能出现出站流量未从配置了公网IP的网卡流出,引发弹性公网IP通信异常。此时可以通过配置策略路由,强制流量从接收数据的网卡原路返回,确保进出路径一致。详细信息,请参见为网卡配置策略路由。
如果网卡及路由正确配置后,依然无法ping通公网IP,您可能需要进一步检查安全组、防火墙等配置,详细信息,请参见无法ping通ECS实例公网IP的排查方法。
弹性网卡的网络增强特性
弹性RDMA能力
弹性网卡支持增加弹性RDMA接口,即开启支持弹性RDMA的能力,开启后即为弹性RDMA网卡。通过在支持弹性RDMA的实例规格上,挂载开启了弹性RDMA能力的弹性网卡,安装弹性RDMA驱动,能够在ECS实例上实现低延迟和高吞吐量的网络通信。详细信息,请参见弹性RDMA网卡(ERI)。
网卡多队列
网卡多队列是指在网络接口上配置多个发送和接收队列,每个队列可以由不同的CPU核心进行处理,其主要目的是通过允许多个CPU核心同时处理网络数据包来提升网络I/O吞吐量和降低延迟。
详细信息,请参见网卡多队列。
物理网卡映射
为了支持更高的网络性能,部分实例规格支持物理网卡映射,即附加网卡到实例时通过指定物理网卡索引,将弹性网卡绑定到底层不同的通信信道,最大限度地利用带宽,提升实例的带宽能力。
详细信息,请参见物理网卡映射。
查看ECS实例的弹性网卡
您可以在控制台上、实例内部查看实例所绑定的弹性网卡的相关信息。
在控制台查看
访问ECS控制台-实例。
在页面左侧顶部,选择目标资源所在的资源组和地域。在控制台顶部导航栏中,确认已选择正确的资源组和地域。
点击目标实例,进入实例详情页面。
点击弹性网卡页签,查看实例的弹性网卡列表。
您可以在列表中看到弹性网卡的ID、名称、网卡类型、状态、IP地址等相关信息。
通过API查看
您可以通过调用DescribeInstances查询指定InstanceIds的目标实例的详细信息,返回的NetworkInterfaces为实例所绑定的弹性网卡集合,包括网卡类型Type、网卡ID NetworkInterfaceId、网卡的主私网IP地址PrimaryIpAddress等。
在实例内部查看
Linux实例
示例操作系统:Alibaba Cloud Linux 3.2。
远程连接Linux实例。
具体操作,请参见使用Workbench登录Linux实例。
执行如下命令,查看并确认实例的网卡信息。
ip a通过返回信息,可以看到当前实例的网卡信息:
网卡标识:eth0、eth1,本示例中,实例共2张弹性网卡,一张主网卡eth0、一张辅助弹性网卡eth1。
网卡状态:state UP,表示网卡状态正常,即网卡已经在实例内部生效。
[root@i-xxx ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:xxx d ff:ff:ff:ff:ff:ff altname enp0s5 altname ens5 inet 172.16.20.182/24 brd 172.16.20.255 scope global dynamic noprefixroute eth0 valid_lft 315359014sec preferred_lft 315359014sec inet6 fe80::xxx/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:xxx f brd ff:ff:ff:ff:ff:ff altname enp0s7 altname ens7 inet 172.16.20.181/24 brd 172.16.20.255 scope global dynamic noprefixroute eth1 valid_lft 315359849sec preferred_lft 315359849sec inet6 fe80::xxx/64 scope link noprefixroute valid_lft forever preferred_lft forever重要如果您看到state DOWN,表示此时网卡没有成功加载,无法正常使用,您需要配置Linux操作系统识别网卡,保证网卡状态正常。
root@xxx:~# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:3e:15:74:ee brd ff:ff:ff:ff:ff:ff inet 172.16.20.231/24 brd 172.16.20.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::216:3eff:fe15:74ee/64 scope link valid_lft forever preferred_lft forever 4: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 00:16:3e:46:31:f4 brd ff:ff:ff:ff:ff:ff网卡主私网IP地址:网卡状态正常后,您可以看到每张弹性网卡的主私网IP地址。详细信息,请参见主私网IP。
如果您的网卡分配了辅助私网IP地址,但是操作系统内部没有识别,您可以参考配置操作系统识别辅助私网IP地址进行重新配置。
执行如下命令,查看网卡的路由信息。
route -n[root@ecs ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.xxx.xxx 0.0.0.0 UG 100 0 0 eth0 0.0.0.0 192.168.xxx.xxx 0.0.0.0 UG 101 0 0 eth1 192.168.xxx.x 0.0.0.0 255.255.xxx.x U 100 0 0 eth0 192.168.xxx.x 0.0.0.0 255.255.xxx.x U 101 0 0 eth1 [root@ecs ~]#可以看到,通常情况下,系统会为辅助弹性网卡eth1配置两条路由:
Destination为192.168.xx.xx的路由:指定了特定子网内的路由。该路由确保本机可以正确地识别并直接与子网内的其他主机进行通信,而无需经过额外的路由器。
Destination为0.0.0.0的路由:默认路由,当数据包的目标地址未匹配到路由表中更具体的路由条目(如针对特定子网或主机的路由)时,系统将选择默认路由。此时,数据包将通过
Iface指定的网络接口发送到Gateway指定的下一跳地址进行转发。重要当存在多条默认路由时,路由优先级由Metric决定,Metric值越小,优先级越高。
如果您希望精细控制流量路径,要求流量从接收数据的网卡原路返回,确保进出路径一致,您可以为网卡配置策略路由。
部分较早的操作系统,如Ubuntu16,可能不会自动配置辅助弹性网卡的默认路由,查看路由后如下所示,这种情况可能会导致网卡使用异常,建议您使用较新的操作系统发行版,或者您可以自行配置,具体操作,请参见为网卡配置默认路由。
root@ixxxxx:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.20.253 0.0.0.0 UG 0 0 0 eth0 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Windows实例
示例操作系统:Windows Server 2022。
远程连接Windows实例。
具体操作,请参见使用Workbench登录Windows实例。
打开网络和共享中心。
单击更改适配器设置。
本示例中,实例绑定了两张弹性网卡(一张主网卡,一张辅助弹性网卡),您可以看到如下所示信息,表示网卡已经在实例内部生效,无需进行其他配置。
在网络连接面板中显示两个网络适配器:以太网和以太网 2,适配器类型均为 Red Hat VirtIO Ethernet Adapter。
如果由于其他原因,辅助弹性网卡未正确识别,您可能看到如下信息,您可以参考Windows实例弹性网卡配置失效处理方法。
辅助弹性网卡(如以太网 3)的状态显示为未识别的网络。
查看网卡状态及详细信息。
双击网卡名称,查看网卡状态。
以主网卡以太网为例:
在以太网 状态对话框的常规选项卡中,可查看以下关键状态:
IPv4 连接:显示为Internet,表示已正常连接
IPv6 连接:显示为无网络访问权限
速度:10.0 Gbps
点击详细信息,查看网卡属性信息。
您可以在弹出的对话框中,看到网卡的主私网IPv4地址、子网掩码、默认网关等信息。
打开命令提示符页面。
通过键盘快捷键Win+R打开运行对话框,输入命令cmd,单击确定。
执行如下命令,查看网卡的路由信息。
C:\Users\Administrator>route print =========================================================================== Interface List 4...xxx......Red Hat VirtIO Ethernet Adapter 10...xxx......Red Hat VirtIO Ethernet Adapter #2 1...........................Software Loopback Interface 1 =========================================================================== IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 172.16.20.253 172.16.20.242 15 0.0.0.0 0.0.0.0 172.16.12.253 172.16.12.76 15 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 127.0.0.1 255.255.255.255 On-link 127.0.0.1 331 127.255.255.255 255.255.255.255 On-link 127.0.0.1 331其中两条默认路由(目标地址 0.0.0.0)分别指向网关 172.16.20.253(接口 172.16.20.242,Metric 15)和网关 172.16.12.253(接口 172.16.12.76,Metric 15),表示该实例已配置双网卡双网关。
相关文档
您可以使用Terway网络插件管理K8s集群Pod的网络地址和通信。它支持基于Kubernetes标准的网络策略来定义容器间的访问策略,提供了基于弹性网卡的VPC模式和基于弹性网卡辅助IP的ENI多IP模式,您可以灵活选择来实现Kubernetes集群内部的网络互通。更多信息,请参见使用Terway网络插件。
弹性网卡可以与负载均衡器SLB配合使用,以实现流量的分配和管理。更多信息,请参见通过弹性网卡添加后端服务器。
部分云产品(例如容器服务ACK、NAT网关等)需要基于弹性网卡能力提供相应服务时,您可以将基于云产品创建的弹性网卡的生命周期管理权限授权给云产品系统,由云产品负责管理,从而防止您误操作网卡并保障云产品服务可用。详细信息,请参见托管弹性网卡。
企业版转发路由器的组播功能是阿里云提供的云原生的组播能力,可以帮助您快速搭建组播网络,无需额外购买物理设备和第三方软件证书。当前仅支持将ECS实例关联的弹性网卡作为组播源,系统将以该弹性网卡的主私网IP地址向组播组发送组播流量。详细信息,请参见组播管理。
常见问题
为什么没有 ECS 实例时控制台仍会显示安全组和弹性网卡?
可能有以下原因:
弹性网卡未随实例释放:创建 ECS 实例时,若辅助弹性网卡设置了不随实例释放,则 ECS 实例释放后弹性网卡会保留,继续显示在控制台中。您可以查看弹性网卡的绑定状态,若状态为可用(即未绑定实例),可能是此原因。
其他云产品托管的弹性网卡和安全组:部分云产品(例如负载均衡 SLB、NAT 网关、容器服务 ACK 等)在提供服务时会基于弹性网卡能力创建托管的弹性网卡和安全组,其生命周期独立于 ECS 实例,不会随 ECS 实例的释放而自动删除。
默认安全组:首次使用 VPC 时,系统会自动创建默认安全组。默认安全组与 ECS 实例的生命周期无关,不会因为释放所有 ECS 实例而自动删除。
排查方法
您可以通过以下 API 排查具体原因:
调用 DescribeNetworkInterfaces API,查看弹性网卡的创建来源(
CreatedBy字段)和绑定状态(Status字段),判断网卡是否由其他云产品托管或仍处于可用状态未被使用。调用 DescribeSecurityGroups API,查看安全组的
ServiceManaged字段,若值为true,说明此安全组由云产品服务托管,需在对应云产品控制台中管理。
若确认弹性网卡或安全组不再使用,可在 ECS 控制台手动释放弹性网卡或删除安全组。请谨慎操作服务托管的资源,以免影响相关云产品的正常运行。