全部产品
Search
文档中心

云服务器 ECS:配置辅助弹性网卡

更新时间:Sep 14, 2023

绑定辅助弹性网卡后,一些镜像可能无法自动识别辅助弹性网卡的IP地址并添加路由,这会导致无法正常使用辅助弹性网卡。为解决此问题,建议您按照本文介绍的操作在ECS实例内部配置辅助弹性网卡,以识别其IP地址并添加路由。

前提条件

已将辅助弹性网卡绑定至ECS实例。具体操作,请参见绑定弹性网卡

背景信息

一些镜像预装了自动配置工具,可以自动配置绑定的辅助弹性网卡。如果您使用这类镜像(例如下面列举的镜像版本),则无需自行配置辅助弹性网卡,可以直接跳过本文的操作步骤。

说明

下面列举的镜像版本可能不全,具体以实际环境为准。

  • Alibaba Cloud Linux 3.2104 64位

  • CentOS 8.0/8.1/8.2 64位及更高版本

  • CentOS 7.3/7.4/7.5 64位

  • CentOS 6.8/6.9 64位

  • Debian 11.3/11.4 64位及更高版本

  • Window Server 2008 R2及更高版本

步骤一:查看弹性网卡IP地址的识别状态

如果已识别IP地址,您无需再执行后续步骤。如果尚未识别IP地址,则需要执行后续步骤配置辅助弹性网卡。

  1. 远程连接Linux实例。

    具体操作,请参见通过密码或密钥认证登录Linux实例

  2. 执行以下命令,查看弹性网卡IP地址的识别状态。

    ip address show
  3. 根据返回查询结果,判断是否需要配置辅助弹性网卡。

    • 情景一:主网卡(eth0)和辅助弹性网卡(eth1)的IP地址都已识别,您无需再配置辅助弹性网卡。

      查询结果示例如下:

      eth1-detected
    • 情景二:主网卡(eth0)的IP地址已识别,辅助弹性网卡(eth1)的IP地址未识别,您需要按本文操作配置辅助弹性网卡。

      查询结果示例如下:

      ip-detected
    说明

    上述示例中,00:16:3e:16:**:**为主网卡的MAC地址,00:16:3e:0f:**:**为辅助弹性网卡的MAC地址。

(可选)步骤二:获取弹性网卡的信息

在配置辅助弹性网卡时,您可能需要填写主私网IP地址、MAC地址等信息,请提前获取信息方便后续填写。

下述操作为演示步骤,请您在配置时根据实际信息修改相关参数内容。

通过ECS控制台获取(推荐)

  1. 登录ECS管理控制台

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

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

  4. 弹性网卡页面,找到目标弹性网卡,在对应信息列中查看主私网IP地址MAC地址

在ECS实例内部通过实例元数据获取

  1. 远程连接Linux实例。

    具体操作,请参见通过密码或密钥认证登录Linux实例

  2. 执行以下命令,获取实例所有网卡的MAC地址。

    curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/
    说明

    在获取指定弹性网卡的主私网IP地址、子网掩码、网关地址时,需要使用MAC地址。

  3. 执行以下命令,获取指定弹性网卡的主私网IP地址。

    curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/00:16:3e:19:**:**/primary-ip-address
  4. 执行以下命令,获取指定弹性网卡的子网掩码。

    curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/00:16:3e:19:**:**/netmask
  5. 执行以下命令,获取指定弹性网卡的网关地址。

    curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/00:16:3e:19:**:**/gateway

示例结果如下图所示。其中00:16:3e:16:**:**为主网卡的MAC地址,00:16:3e:0f:**:**为辅助弹性网卡的MAC地址。

说明

您可以结合ip address show的结果,确定主网卡和辅助弹性网卡MAC地址的显示顺序。

eni-status

通过阿里云CLI工具调用API获取

  1. 登录ECS管理控制台,单击右上角的Cloud Shell图标,进入Cloud Shell控制台。

  2. 执行以下命令,获取弹性网卡的信息。

    aliyun ecs DescribeNetworkInterfaces \
    --output cols=MacAddress,PrivateIpAddress rows=NetworkInterfaceSets.NetworkInterfaceSet[] \
    --RegionId 'cn-hangzhou' \
    --InstanceId 'i-bp1a5gj0bzhwz7q****'

示例结果如下图所示。其中00:16:3e:16:**:**为主网卡的MAC地址,00:16:3e:0f:**:**为辅助弹性网卡的MAC地址。

说明

您可以结合ip address show的结果,确定主网卡和辅助弹性网卡MAC地址的显示顺序。

cloudshell-view

步骤三:配置辅助弹性网卡

不同的操作系统中适用的操作存在差异,请选择对应操作系统示例执行操作。

说明

Alibaba Cloud Linux 2操作系统以网络服务类型分为如下两种:

  • Alibaba Cloud Linux 2(network-scripts)

    您可以执行ls /etc/sysconfig/network-scripts命令,查看当前系统中是否存在/etc/sysconfig/network-scripts目录。如果输出了一些以ifcfg-开头的文件,则表示当前系统使用的是network-scripts服务类型。

  • Alibaba Cloud Linux 2(systemd-networkd)

    您可以执行systemctl status systemd-networkd命令,查看当前系统是否安装了systemd-networkd。如果输出了一些systemd-networkd.service 的状态信息,包括运行状态、主动状态、日志记录等等,则表示当前系统使用的是systemd-networkd服务类型。

CentOS 6/7、RedHat或Alibaba Cloud Linux 2(network-scripts)

对网络服务类型为network-scripts的Alibaba Cloud Linux 2、CentOS 6/7和RedHat系统,您可以通过multi-nic-util工具自动配置或者修改网卡配置文件手动配置。

说明

如果您通过multi-nic-util工具为CentOS系统自动配置弹性网卡,请注意仅部分镜像版本支持使用multi-nic-util工具。如果使用CentOS 6镜像,请确保镜像版本为CentOS 6.8及以上;如果使用CentOS 7镜像,请确保镜像版本为CentOS 7.3及以上。如果镜像版本不支持使用multi-nic-util工具,请通过修改网卡配置文件手动配置辅助弹性网卡。

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

  1. 执行以下命令,下载并安装multi-nic-util工具。

  2. 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
  3. 执行以下命令,重启弹性网卡服务。

    systemctl restart eni.service

方式二:通过修改网卡配置文件手动配置

  1. 执行以下命令,打开辅助弹性网卡的配置文件。

  2. vi /etc/sysconfig/network-scripts/ifcfg-eth1
  3. i键进入编辑模式,在网卡配置文件中添加如下辅助弹性网卡的信息,然后按Esc键退出编辑模式,输入:wq保存退出。

    添加网卡信息的示例如下:

    DEVICE=eth1  # 表示新配置的网卡接口。
    BOOTPROTO=dhcp
    ONBOOT=yes
    TYPE=Ethernet
    USERCTL=yes
    PEERDNS=no
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    HWADDR=00:16:3e:0f:**:**  # 必须使用您查到的网卡对应的MAC地址。
    DEFROUTE=no  # 表示网卡接口不是默认路由。为避免在启动(ifup)辅助弹性网卡时改变ECS实例活动的默认路由,不要将eth1设置为默认路由。
  4. 执行以下命令,重启网络服务。

    • CentOS 7以前版本、RedHat 7以前版本(例如CentOS 6、RedHat 6):

    • service network restart
    • CentOS 7及以上版本、RedHat 7及以上版本、Alibaba Cloud Linux 2:

    • systemctl restart network
说明

当您完成配置后,如果需要通过该实例创建自定义镜像,请先执行/etc/eni_utils/eni-cleanup命令清理/etc/udev/rules.d/70-persistent-net.rules/etc/sysconfig/network-scripts/下的网络配置。

Alibaba Cloud Linux 2(systemd-networkd)

对网络服务类型为systemd-networkd的Alibaba Cloud Linux 2系统,您需要通过修改网卡配置文件手动配置。

  1. 执行以下命令,打开辅助弹性网卡的配置文件。

    vi /etc/systemd/network/60-eth1.network
  2. i键进入编辑模式,在网卡配置文件中添加如下辅助弹性网卡的信息,然后按Esc键退出编辑模式,输入:wq保存退出。

    您可以为辅助弹性网卡分配动态IP或指定静态IP,请根据需要选择一种方式。添加网卡信息的示例如下:

    • 通过DHCP分配动态IP

      [Match]
      Name=eth1 # 表示新配置的网卡接口。
      
      [Network]
      DHCP=yes
      
      [DHCP]
      UseDNS=yes
    • 指定静态IP

      [Match]
      Name=eth1 # 表示新配置的网卡接口。
      
      [Network]
      Address=192.168.**.*2/24 # 表示分配的静态IP和子网掩码。
      说明

      示例中192.168.**.*2为主私网IP地址,掩码位/24对应子网掩码255.255.255.0

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

    systemctl restart systemd-networkd

Ubuntu或Debian

对Ubuntu和Debian系统,您需要根据实际镜像版本修改对应的配置文件。

示例一:以Ubuntu 14.04、Ubuntu 16.04及Debian为例

  1. 执行以下命令,打开网卡配置文件。

    vi /etc/network/interfaces
  2. i键进入编辑模式,在网卡配置文件中添加如下辅助弹性网卡的信息,然后按Esc键退出编辑模式,输入:wq保存退出。

    添加网卡信息的示例如下:

    auto eth0
    iface eth0 inet dhcp
    
    auto eth1  # 表示新配置的网卡接口。
    iface eth1 inet dhcp
    说明

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

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

    • Ubuntu 14.04:

      service networking restart
    • Ubuntu 16.04、Debian:

      systemctl restart networking

    若出现以下警告,不影响配置辅助弹性网卡生效。您可以运行ip address show查看辅助弹性网卡IP地址的识别状态。warning

示例二:以Ubuntu 18.04为例

  1. 执行以下命令,打开辅助弹性网卡的配置文件。

  2. vi /etc/netplan/eth1-netcfg.yaml
  3. i键进入编辑模式,在网卡配置文件中添加如下辅助弹性网卡的信息,然后按Esc键退出编辑模式,输入:wq保存退出。

    说明

    编辑配置文件时请注意以下事项:

    • 配置文件为YAML文件格式,您在配置时需要遵循YAML语法规则。

    • YAML不支持制表符(Tab)缩进,请使用空格缩进。

    • 建议您直接复制默认配置文件/etc/netplan/99-netcfg.yaml中的内容进行修改,避免产生格式问题。

    添加网卡信息的示例如下:

    network:
      version: 2
      renderer: networkd
      ethernets:
        eth1:
          dhcp4: yes
          dhcp6: no
  4. 执行以下命令,使配置生效。

  5. netplan apply

SUSE或OpenSUSE

对SUSE和OpenSUSE系统,您需要通过修改网卡配置文件手动配置辅助弹性网卡。

  1. 执行以下命令,打开网卡配置文件。

    vi /etc/sysconfig/network/ifcfg-eth1
  2. i键进入编辑模式,在网卡配置文件中添加如下辅助弹性网卡的信息,然后按Esc键退出编辑模式,输入:wq保存退出。

    通过DHCP分配动态IP的示例如下:

    BOOTPROTO='dhcp4'
    STARTMODE='auto'
    USERCONTROL='no'
  3. 执行以下命令,重启网络服务。

    • SUSE Linux Enterprise Server 12以前版本、OpenSUSE 13.2以前版本:

      service network restart
    • SUSE Linux Enterprise Server 12及以上版本、OpenSUSE 13.2及以上版本:

      systemctl restart network

步骤四:配置路由

您可以通过执行route -n命令检查路由信息。如果辅助弹性网卡没有路由,或者已有路由不符合实际需要,您可以参考本章节自行配置路由。

根据您的实际需要规划默认路由,本文以下表中的示例信息作演示步骤。

信息

示例取值

网卡名称

eth1

主私网IP地址

192.168.**.*2

网关地址

192.168.**.253

metric

1001

在Alibaba Cloud Linux 2、CentOS 7系统中配置路由

  1. 执行以下命令,查看路由信息。

    route -n

    查询结果示例如下:

    • 仅查询到了主网卡(eth0)的路由信息,辅助弹性网卡(eth1)还未配置路由,继续执行以下操作,辅助弹性网卡配置路由。main-eni-route

    • 查询到了主网卡(eth0)和辅助弹性网卡(eth1)的路由信息。如果不符合您的实际需要,也可以自行修改。both-eni-route

  2. 执行以下命令,配置默认路由。

    ip -4 route add default via 192.168.**.253 dev eth1 metric 1001 && \
    ip -4 route add default via 192.168.**.253 dev eth1 table 1001 && \
    ip -4 rule add from 192.168.**.*2 lookup 1001
    说明

    上述命令为eth1添加默认路由,并创建了一张路由表和一条关联至该路由表的路由策略。其中,table 1001为路由表(和默认路由metric取值保持一致),192.168.**.253为网关地址,192.168.*.*2为eth1的主私网IP地址。请将相关参数替换为实际内容。

  3. 执行以下命令,查看创建的路由表和策略路由。

    ip route list table 1001 && \
    ip rule list

    系统返回查询结果如下图,表示创建的路由表和策略路由成功。view-route-policy

  4. 配置开机时自动更新路由。

    为eth1配置路由后,需配置开机时自动更新路由,否则重启实例后该路由配置会失效。

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

      vim /etc/rc.local
    2. i键进入编辑模式,添加如下内容,然后按Esc键退出编辑模式,输入:wq保存退出。

      ip -4 route add default via 192.168.**.253 dev eth1 metric 1001
      ip -4 route add default via 192.168.**.253 dev eth1 table 1001
      ip -4 rule add from 192.168.**.*2 lookup 1001
    3. 执行以下命令,为/etc/rc.local文件添加执行权限。

      chmod +x /etc/rc.local

在CentOS 8系统中配置路由

  1. 执行以下命令,查看路由信息。

    route -n

    系统返回信息示例如下图,表示查询到了主网卡(eth0)和辅助弹性网卡(eth1)的路由信息。centos8-route

  2. 创建配置路由用的脚本。

    1. 执行以下命令,新建并打开/home/route.sh文件。

      vi /home/route.sh
    2. i键进入编辑模式,添加如下内容,然后按Esc键退出编辑模式,输入:wq保存退出。

      说明

      下述脚本内容为eth1创建了一张路由表和一条关联至该路由表的路由策略。其中,table 1001为路由表,192.168.**.253为网关地址,192.168.*.*2为eth1的主私网IP地址。

      #!/bin/bash
      
      i=0
      while true; do
              /usr/sbin/ip -4 route add default via 192.168.**.253 dev eth1 table 1001
              if [ $? -eq 0 ]; then
                      break
          fi
              sleep 3
              let i++
              if [ $i -gt 10 ]; then
                      exit -1
              fi
      done
      
      i=0
      while true; do
              /usr/sbin/ip -4 rule add from 192.168.**.*2 lookup 1001
              if [ $? -eq 0 ]; then
                      break
          fi
              sleep 3
              let i++
              if [ $i -gt 10 ]; then
                      exit -1
              fi
      done
  3. 执行以下命令,配置默认路由。

    sh /home/route.sh
  4. 执行以下命令,查看创建的路由表和策略路由。

    ip route list table 1001 && \
    ip rule list

    系统返回示例结果如下图所示。view-route-policy

  5. 配置开机时自动更新路由。

    为eth1配置路由后,请按以下步骤配置开机时自动更新路由,否则重启实例后该路由配置会失效。

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

      vim /etc/rc.local
    2. i键进入编辑模式,添加如下内容,然后按Esc键退出编辑模式,输入:wq保存退出。

      sh /home/route.sh
    3. 执行以下命令,为/etc/rc.local文件添加执行权限。

      chmod +x /etc/rc.local