gpt4 book ai didi

linux - 使用netlink API从linux界面删除属于同一子网的ipv4地址

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:56 25 4
gpt4 key购买 nike

我正在使用 netlink API rtnl_addr_delete 删除 Linux 接口(interface)上配置的 ipv4 地址。属于同一子网的两个 IP 配置到一个接口(interface)。

当我删除第一个配置的 IP 时,两个 IP 都被删除,这是意外的。但反之亦然,当我删除第二个配置的 IP 时,第一个 IP 不会被删除,这是预期的。

假设如果 2 个 IP 属于不同的子网,则不会出现问题。也就是说,如果我先删除,那么只有第一个被删除。

知道这个 rtnl_addr_delete 的行为方式或者可以做出任何解决方案来解决这个问题吗?

最佳答案

当您从一个子网(“主”地址)中删除第一个添加的 IP 地址时,所有子网都将被删除。这是某些发行版中的默认内核行为。要更改它,您必须在您使用的界面上设置 sysctl:

$ sysctl -a | grep promote_secondaries

比如说,你想在 eth0 上改变它:

$ sudo sysctl -w net.ipv4.conf.eth0.promote_secondaries=1

使用 promote_secondaries 子网的其余部分将不会被删除,而是其中一个地址将被提升为新的主要地址。

文档:https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

关于linux - 使用netlink API从linux界面删除属于同一子网的ipv4地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44921990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com