跳转到内容

黑客/工具/网络/更改MAC地址/Linux

来自Wikibooks,开放世界中的开放书籍

在GNU/Linux下,可以通过以下步骤更改网络接口卡(NIC)的MAC地址。

注意:本文中使用的MAC地址仅供示例。请根据您的需求进行替换。
注意:为了使命令生效,以下命令必须以root权限执行(例如,在命令前添加“sudo”)。

/etc/init.d/networking stop
ifconfig eth0 hw ether 02:01:02:03:04:08
/etc/init.d/networking start

执行“ifconfig eth0”进行确认。

以上方法适用于DebianUbuntu和类似的发行版。或者,在RHEL/Fedora以及可能的其他GNU/Linux发行版(包括CentOSScientific Linux)中,要禁用和重启网络,必须停止和启动/etc/init.d/network,而不是/etc/init.d/networking

如果您安装了iproute2实用程序,您可能更喜欢使用“ip”命令,如下所示

/etc/init.d/network stop
ip link set eth0 address 02:01:02:03:04:08
/etc/init.d/network start

要确认您的设置,您可能更喜欢执行“ip link ls eth0”或“ip addr ls eth0”,而不是“ifconfig eth0”。

注意:如果您使用DSL调制解调器,则可能无法执行此操作(取决于调制解调器供应商或ISP)。

使更改永久生效 - 在重启后保持更改

[编辑 | 编辑源代码]

openSUSE和其他基于SUSE的系统(SUSE企业桌面\服务器等)中,您可以通过在/etc/sysconfig/network/ifcfg-ethN文件中添加相应的条目来使更改在重启后“永久生效”(对于第一个以太网接口配置文件,ifcfg-eth0,对于第二个,ifcfg-eth1,依此类推)。

LLADDR=12:34:56:78:90:ab

Red Hat Enterprise LinuxRHEL)和其他类似的系统(FedoraCentOS等)中,一种使更改在重启后“永久生效”的简单方法是,在/etc/sysconfig/network-scripts/ifcfg-ethN文件中添加相应的条目(对于第一个以太网接口配置文件,ifcfg-eth0,对于第二个,ifcfg-eth1,依此类推)。

MACADDR=12:34:56:78:90:ab

注意:在文件中有一个值HWADDR - 这与MACADDR不是一回事。要进行永久更改,请使用MACADDR。

来自 http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-networkscripts-interfaces.html

HWADDR“指令对于具有多个NIC的机器很有用,可以确保无论每个NIC模块的配置加载顺序如何,接口都分配了正确的设备名称。此指令不应与MACADDR一起使用。”...MACADDR“指令用于将MAC地址分配给接口,覆盖分配给物理NIC的MAC地址。此指令不应与HWADDR一起使用。”

指定MAC地址时,接受大写和小写字母,因为网络功能会将所有字母转换为大写。

您可以通过执行以下命令来测试更改,而无需重启系统

service network restart

(警告:执行此操作将断开所有现有的网络连接!)

DebianUbuntu和类似的系统上,将以下内容放在/etc/network/interfaces的相应部分(在iface语句内,例如,网关行之后),以便在网络设备启动时设置MAC地址

hwaddress ether 02:01:02:03:04:08

Gentoo上,您可以通过为每个以太网卡在全局配置文件/etc/conf.d/net中添加一个条目来获得相同的结果。eth0设备的示例

mac_eth0="12:34:56:78:90:ab"

您还可以使用工具“GNU MACChanger”在GNU/Linux下更改MAC地址。

要在启动时使用MACChanger更改MAC地址,请将以下行添加到您的/etc/network/interfaces(eth0接口的示例)

pre-up macchanger -m 12:34:56:78:90:AB eth0
华夏公益教科书