在 Linux 中使用 ip 命令删除 IP

在 Linux 中使用 ip 命令删除 IP

如果我像这样添加两个 IP:

ip addr add 1.1.1.1/24 dev eth2
ip addr add 1.1.1.2/24 dev eth2

然后我尝试删除其中一个这样的:

ip addr del 1.1.1.2/24 dev eth2

两个 IP 都将被删除,我不知道该怎么办。

有人知道如何解决吗?

答案1

发生这种情况是因为您在删除时使用了 /24 网络掩码。它适用于您输入的地址。请尝试以下操作:

ip addr del 1.1.1.2/32 dev eth2

/32 掩码恰好定义一个主机。

答案2

从接口删除主 IP 地址默认会删除同一子网上的所有其他地址。

这是对 REHL 错误的回复1136733由用户 lain 于 2013 年 3 月 12 日提供答案报告...

您正在同一个子网中添加多个地址,因此第二个和后续地址将成为次要地址。这可以在“ip addr show”输出中看到,请注意这些地址旁边的关键字“secondary”。

默认情况下,当删除主地址时,内核也会删除所有相应的辅助地址。

如果您希望在删除主节点时将其中一个辅助节点提升为新的主节点,请设置 net.ipv4.conf.eth9.promote_secondaries sysctl。

答案3

我没有 eth2 来检查这一点,但它在 eth0 上正常工作,我看不出 eth2 有什么神奇之处。我猜你使用的ip addr show dev eth2asifconfig eth2似乎没有显示 ip 添加的附加地址。

我注意到的一件事是,创建/删除地址的顺序很重要。如果删除主地址,则同一网络内添加的第二个及后续地址也将被删除。考虑...

    inet 1.1.1.1/24 scope global eth0
    inet 1.1.2.3/24 scope global eth0
    inet 1.1.1.2/24 scope global secondary eth0
    inet 1.1.1.3/24 scope global secondary eth0

如果删除 1.1.1.1,则 1.2 和 1.3 地址也将被删除。如果删除任何其他地址,则只有该地址将被删除。

答案4

我会尝试以下操作:

ip addr del 1.1.1.2 dev eth2

相关内容