在 Linux 更改網路介面卡的 MAC 位址

前言

我們都知道網路介面卡會有一個 MAC 位址,在正常情況下,DHCP Server 會透過這個 MAC 位址來決定發給你什麼 IP 位址。不過如果你今天想搞點事情,那我如何在 Linux 中做到這件事情呢?這邊文章就會來說說這個方式。

注意:只有方式三是永久生效的,方式一跟方式二都是單次操作而已。

方式一:ifconfig

我們要先使用 ifconfig 將特定網路介面卡關閉,這邊就用 ens18 為例。(注意:如果你正使用 SSH,這很有可能會斷線!)

ifconfig ens18 down

接著更新一個 MAC 位址成你喜歡的,下方命令中的位址是隨便打的,如果你需要一組亂數的,可以到 這個網站

ifconfig ens18 hw ether BA:F5:C0:FC:04:BA

最後,重新讓這個網路介面卡回來。

ifconfig ens18 up

第二種方式是使用 ip link,邏輯大致是跟上面的方式相同,所以就不多著墨過程的說明了。

舉例將網卡 ens18 關閉。

sudo ip link set dev ens18 down

更新 ens18 的 MAC 位址。

sudo ip link set dev ens18 address BA:F5:C0:FC:04:BA

最後,將 ens18 開回來。

sudo ip link set dev ens18 up

方式三:設定檔

如果你要使設定永久生效,那你可能就需要將指定的 MAC 位址寫入設定檔中。這裡用 Debian 為例,我們需要編輯 /etc/network/interfaces 這個檔案。

sudo vim /etc/network/interfaces

而這裡也假定網路介面卡是用 DHCP 拿到 IP 位址的,那就會長這樣。

auto ens18
iface ens18 inet dhcp
    hwaddress ether BA:F5:C0:FC:04:BA

其實就是在下面加上 hwaddress 來指定 MAC 位址,寫完就可以重啟機器試試看成效囉。