如何在 Linux 中更改以太网设备的 MAC 地址?

如果我们在机器或者服务器上添加了新的以太网设备,
我们将如何确定新的 MAC 地址并将其更新到其相关配置文件?

我们可以使用以下命令检查以太网卡的 MAC 地址

# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:A3:F5:E6
          inet addr:192.168.1.6  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fea3:f5e6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:356 errors:0 dropped:0 overruns:0 frame:0
          TX packets:322 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:38162 (37.2 KiB)  TX bytes:59986 (58.5 KiB)
          Interrupt:19 Base address:0x2024

但此命令将显示配置的以太网设备的 MAC 详细信息。
如果我们添加了新的以太网卡,ifconfig 将不会显示该新设备的输出

要获得新以太网卡的信息,请使用以下命令

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:a3:f5:e6 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:a3:f5:f0 brd ff:ff:ff:ff:ff:ff
4: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
    link/ether 3e:ef:ea:16:07:bc brd ff:ff:ff:ff:ff:ff

如我们所见,它显示了所有连接的以太网卡的 MAC 详细信息

我们还可以从以下文件中查看

# grep eth1 /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:a3:f5:f0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

如果我们不知道设备名称,请通过查看文件查找新添加的设备

# less /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x1022:0x2000 (vmxnet) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:a3:f5:e6", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x1022:0x2000 (vmxnet)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:a3:f5:f0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

接下来,当我们知道以太网设备的硬件地址之后,就可以在配置文件中更新相同内容

日期:2020-06-02 22:16:55 来源:oir作者:oir