相当于 ifconfig dev 0.0.0.0

相当于 ifconfig dev 0.0.0.0

当我需要在 Linux 上创建一个带有接口的临时桥接器时,我会使用以下命令:

brctl addbr br0
brctl addif br0 eth0
ifconfig eth0 0.0.0.0
ifconfig br0 192.168.10.100 netmask 255.255.255.0
ifconfig br0 up

我一直在更新我的流程以使用知识产权命令,但是,我没有找到通过以下命令删除 IP 堆栈(ifconfig eth0 0.0.0.0)的等效ip命令

我尝试了以下方法:

ip addr add 0.0.0.0 dev eth0
ip addr add 0.0.0.0/24 dev eth0

但它无法删除ip该设备上现有的内容。

有人知道这个ip命令是否可行吗

答案1

在 Linux 上,旧ifconfig命令及其旧 Linux 内核 API 仅限于每个接口的 IPv4 地址(因此,接口别名(实际上是附加地址而不是接口)用于解决此限制)。这解释了为什么删除IPv4 地址,方法是将其改为(并非真正添加)0.0.0.0。

iproute2工具,如果你想删除任何地址来自接口(对于桥接端口始终是一个好主意),而不必关心那里有什么地址,您可以使用ip address flush,这是一个批量删除命令:

ip address flush- 刷新协议地址

此命令刷新根据某些标准选择的协议地址。

[...]

警告:此命令和其他刷新命令都是无情的。它们将残忍地清除所有地址。

[...]

所以最后你可以使用:

ip address flush dev eth0

(您可以添加-4以限制对 IPv4 的影响)。


还有其他用途。例如这个命令:

  ip address flush to 10.1.0.0/16

将从任何接口中删除与块 10.1.0.0/16 匹配的任何地址无论其网络掩码

# ip -s -s address flush to 10.1.0.0/16
2: lxcbr0    inet 10.1.3.1/24 brd 10.1.3.255 scope global lxcbr0
       valid_lft forever preferred_lft forever
158: eth0    inet 10.1.1.1/8 scope global eth0
       valid_lft forever preferred_lft forever

*** Round 1, deleting 2 addresses ***
*** Flush is complete after 1 round ***

答案2

你不能删除使用命令获取 IP 地址add

如果您想从接口中删除 IP 地址,您del可以这样做。

ip addr del 203.0.113.187 dev eth0

相关内容