MAC地址更改期間是否需要關閉/啟動介面?
我正在使用帶有自定義核心 4.4.21 的 SuSE 12.2(與實時環境相關的微小更改)。
在 MAC 地址更改期間是否真的需要關閉/啟動介面?我觀察到的是,它並不是真正需要的(更改在啟用的界面上成功,無需將其關閉)。
但是 - 網際網路上的大多數範例都建議關閉介面,然後更改 MAC 地址,然後再重新啟動它,例如howtogeek.com。此過程是否在文件中某處進行了描述?
更改介面的 MAC 地址取決於硬體和驅動程序。當介面啟動時,必須執行更多操作來更新介面的狀態,同時仍在執行。有些驅動程序還不支持它,或者因為介面的硬體不允許這樣的功能。
在介面上區分這種能力的現代方法是
IFF_LIVE_ADDR_CHANGE
出現在核心 3.6 中的 priv_flag。我不知道在此之前是否有其他機制,以及之前是否有可能。可以只執行一個較舊的核心並檢查什麼在工作。介紹這個的更新檔是:
2012-06-30網路:引入新的 priv_flag 指示 iface 能夠在執行時更改 mac
引入
IFF_LIVE_ADDR_CHANGE
priv_flag 並使用它來禁用 netif_running() 檢查 eth_mac_addr()正如所料,這個功能是在一些簡單的虛擬設備之後添加的,比如虛擬介面:
2012-06-30 virtio_net:使用
IFF_LIVE_ADDR_CHANGE
priv_flag2012-06-30團隊:使用
IFF_LIVE_ADDR_CHANGE
priv_flag2012-06-30虛擬:使用
IFF_LIVE_ADDR_CHANGE
priv_flag每個驅動程序隨著時間的推移進一步添加此功能的一些範例:
2014-06-10 gre:允許在設備啟動時更改 mac 地址
2018-07-03 r8169:修復 mac 地址更改
這是一個非常舊的3Com Tornado網卡不允許這樣做,我仍然可以使用:
# uname -r 4.19.0-0.bpo.6-686-pae # ethtool -i eth1|grep driver driver: 3c59x # lspci|grep 3Com 02:0c.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78) # ip link set dev eth1 address 02:00:00:00:00:01 RTNETLINK answers: Device or resource busy # ip link set dev eth1 down # ip link set dev eth1 address 02:00:00:00:00:01 # ip link set dev eth1 up # ip link show dev eth1 2: eth1: <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 02:00:00:00:00:01 brd ff:ff:ff:ff:ff:ff
因此,關閉介面以更改 MAC 地址的建議在這裡仍然適用。