Linux

相當於 ifconfig dev 0.0.0.0

  • December 4, 2020

當我需要在 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命令,但是,我沒有找到通過該ip命令刪除 IP 堆棧(ifconfig eth0 0.0.0.0)的等效項

我嘗試了以下方法:

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

但刪除該設備上的現有內容不起作用ip

有人會碰巧知道這是否可以通過ip命令

在 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 匹配的任何地址,無論其 netmask

# 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 ***

引用自:https://serverfault.com/questions/1044799