如何在CentOS 7上添加新的网络设备?

如何在CentOS 7上添加新的网络设备?

我的 VPS 分配了两个 IP,但“ip a”仅显示一个真实网络接口 eth0 和一个环回接口 lo。我复制/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1编辑它以反映新的 IP。但systemctl restart network失败并出现错误:Bringing up interface eth1: Error: Connection activation failed: No suitable device found for this connection.

那么如何添加新设备来设置 eth1 呢?或者,如果不添加另一个真实的网络适配器,我就无法添加新设备?那么,我可以将这两个IP分配到同一个接口eth0吗?如何?

更新:

我遵循@AB的方法,但仍然无法使其工作:

TYPE=Ethernet
BOOTPROTO0=none
NAME0=eth0
DEVICE0=eth0
ONBOOT0=yes
PREFIX0=24
IPADDR0=x.x.x.x
NETMASK0=255.255.255.0
GATEWAY0=x.x.x.1

TYPE=Ethernet
BOOTPROTO1=none
NAME1=eth1
DEVICE1=eth1
ONBOOT1=yes
PREFIX1=24
IPADDR1=y.y.y.y
NETMASK1=255.255.255.0
GATEWAY1=y.y.y.1

以下配置也不起作用:

TYPE=Ethernet
BOOTPROTO0=none
NAME0=eth0
DEVICE0=eth0
ONBOOT0=yes
PREFIX0=24
IPADDR0=x.x.x.x
NETMASK0=255.255.255.0
GATEWAY0=x.x.x.1

TYPE=Ethernet
BOOTPROTO1=none
NAME1=eth0:1
DEVICE1=eth0
ONBOOT1=yes
PREFIX1=24
IPADDR1=y.y.y.y
NETMASK1=255.255.255.0
GATEWAY1=y.y.y.1

systemctl restart network命令成功,但ifconfig仅显示 1 个接口 eth0 和 1 个 lo 接口。

更新:

使用@AB的答案中正确的配置并使用ip a,它有效!这两个 ip 显示在接口 eth0 下。

答案1

可以在上面配置这两个IP地址相同的界面。

这被记录在红帽6但不再出现在 RHEL 7 的文档中。据推测,此配置正在逐步淘汰(例如:使用 NetworkManager 和nmtui),因此这种不太频繁的设置不再被正式记录。与往常一样,它与 CentOS 6/CentOS 7 完全相同。

IPADDRn=地址

其中,address 是 IPv4 地址,n 应该是从 0 开始的连续正整数(例如,IPADDR0)。它用于配置多个 IP 地址一个 界面。如果只配置一个地址,则可以省略。

脚本的内容/etc/sysconfig/network-scripts/network-functions显示它仍然有效的语法:

expand_config ()
{
    local i=0 val
    for idx in '' {0..255} ; do
        ipaddr[$i]=$(eval echo '$'IPADDR$idx)
        if [ -z "${ipaddr[$i]}" ]; then
            [ "$idx" ] && [ $idx -ge 2 ] && break
            continue
        fi
        prefix[$i]=$(eval echo '$'PREFIX$idx)
        netmask[$i]=$(eval echo '$'NETMASK$idx)
        broadcast[$i]=$(eval echo '$'BROADCAST$idx)
        arpcheck[$i]=$(eval echo '$'ARPCHECK$idx)
        arpupdate[$i]=$(eval echo '$'ARPUPDATE$idx)

因此,/etc/sysconfig/network-scripts/ifcfg-eth0只需更改IPADDR=IPADDR0=plus IPADDR1=,并对上面列表中的其他类似设置执行相同的操作(例如:如果您使用的是NETMASK=,请将其更改为NETMASK0=plusNETMASK1=等)。

更新(在OP提供配置内容之后):唯一相关的条目在上面的列表中这些是(仅当最初使用时):

PREFIX
NETMASK
BROADCAST
ARPCHECK
ARPUPDATE

不是任何其他的,特别是不是:

  • NAME

    只有界面。此外,eth0:1绝对应该避免使用别名地址作为接口(例如: ),这是一个过时的概念,在配置其他设置时变得毫无用处并且容易出错。这个答案中从未提出过这一点。

  • GATEWAY

    只有默认路由(即使实际上有多个接口,但这里的情况并非如此)。可以有两条不同的独立互联网路由的多宿主是一个不同的野兽,无法在同一问题中得到回答。

那么最终ifconfig不应该使用该命令(它是过时 API 的一部分,无法正确显示没有兼容性标签的多个 IPv4 地址(在单个接口上))。而是使用:

ip address

ip -br address显示主机接口上配置的地址。同样,在 Linux 上显示路由的命令最好是:

ip route

代替route


最后的配置ifcfg-eth0应该(仅)是:

TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
PREFIX0=24
IPADDR0=x.x.x.x
NETMASK0=255.255.255.0
PREFIX1=24
IPADDR1=y.y.y.y
NETMASK1=255.255.255.0
GATEWAY=x.x.x.1

相同的网关 xxx1 最终将用于路由 yyyy 地址,除非主机提供商提供了详细的路由文档,否则(在这种情况下,无论如何,这将需要一个单独的问题,因为配置不再只是ifcfg-eth0关于并且很难掌握)。甚至有可能第二个地址的前缀/网络掩码 PREFIX1 应为 32,而不是 24(以及冗余的 NETMASK1,然后为 255.255.255.255),但如果没有主机提供商的文档,这一点是无法得知的,并且可能并不重要。

相关内容