当我需要在 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