我买了两个 3G usb 适配器,它们都有相同的 mac 地址。经过一番研究,我发现成立这是一个常见问题,因此购买新产品可能无法解决问题。
我需要识别一个特定的设备,所以我的问题是,如果两个设备的 mac 相同,我该如何识别该设备?
是否可以为一个设备分配一个新的 MAC 地址(以某种方式永久分配,因为设备可能会时不时断电)或者是否有任何我可以使用的唯一标识符?
答案1
有几种方法可以设置网络接口的 MAC 地址。在 Windows 上,您可以在卡的高级视图中编辑设置。或者使用 powershell(请注意,Set-NetAdapter 可能在旧版本的 Windows 中不可用):
Set-NetAdapter –Name "Ethernet 1" -MacAddress "00-10-18-57-1B-0D"
在 Linux 上,您需要找到适当的命令或以类似以下方式编辑 /etc/network/interfaces 文件:
auto eth0
iface eth0 inet dhcp
hwaddress ether 01:02:03:04:05:06
答案2
似乎没有办法“永久”更改 mac。找到的所有解决方案都允许您在设备重新启动之前更改它。要永久更改它,您需要访问驱动程序,即使这样也可能无法实现(即制造商不提供此选项)。
答案3
我对 E3372h 也有同样的感受。可以在 HiLink 固件上更改 MAC 地址:您必须访问设备的 Android 控制台(这也不是一件容易的事)并更改文件,例如 /app/config/lan/config.xml
对于 Stick 固件,我还没有找到更改 MAC 的方法。我猜想可能是一些将 mac 写入某些 nvram 单元的命令AT^NVWREX=bla-bla
,但我找不到它。
在 Linux 上,您可以使用的另一种方法是根据 USB 设备路径创建 udev 规则。因此,接口名称将与特定 USB 端口绑定(但不是设备本身,这当然是更好的选择)。创建名称如下的文件/etc/udev/rules.d/99-wwan.rules
## Rules to setup fixed interface and port names for usb dongles with identical MAC addresses
# To get MAC address of interface use:
# N=0; ip addr show wwan${N}
# To get ID_PATH of current interface use (N is interface number, e.g. N=0 for wwan0):
# N=0; udevadm info -q all -p /sys/class/net/wwan${N} | grep -m1 ID_PATH=
# To get devpath of cdc-wdm${N} use (see first parent):
# N=0; udevadm info -a -n /dev/cdc-wdm${N}
# To get KERNELS and bInterfaceProtocol for ttyUSB${N} use (see first parent):
# N=0; udevadm info -a -n /dev/ttyUSB${N}
# Ports configuration related to AT^SETPORT="FF;12,16,5,A1,A2"
# wwan0 on 1.4.1
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1e:10:1f:00:00", ENV{ID_PATH}=="platform-3f980000.usb-usb-0:1.4.1:1.1", KERNEL=="wwan*", NAME="wwan0"
SUBSYSTEM=="tty", KERNELS=="1-1.4.1:1.0", ATTRS{bInterfaceProtocol}=="12", KERNEL=="ttyUSB*", SYMLINK+="ttyUSB-wwan0"
SUBSYSTEM=="usbmisc", KERNELS=="1-1.4.1:1.1", ATTRS{bInterfaceProtocol}=="16", KERNEL=="cdc-wdm*", SYMLINK+="cdc-wdm-wwan0"
SUBSYSTEM=="tty", KERNELS=="1-1.4.1:1.2", ATTRS{bInterfaceProtocol}=="05", KERNEL=="ttyUSB*", SYMLINK+="ttyUSB-a_shell-wwan0"
# wwan1 on 1.4.3
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1e:10:1f:00:00", ENV{ID_PATH}=="platform-3f980000.usb-usb-0:1.4.3:1.1", KERNEL=="wwan*", NAME="wwan1"
SUBSYSTEM=="tty", KERNELS=="1-1.4.3:1.0", ATTRS{bInterfaceProtocol}=="12", KERNEL=="ttyUSB*", SYMLINK+="ttyUSB-wwan1"
SUBSYSTEM=="usbmisc", KERNELS=="1-1.4.3:1.1", ATTRS{bInterfaceProtocol}=="16", KERNEL=="cdc-wdm*", SYMLINK+="cdc-wdm-wwan1"
SUBSYSTEM=="tty", KERNELS=="1-1.4.3:1.2", ATTRS{bInterfaceProtocol}=="05", KERNEL=="ttyUSB*", SYMLINK+="ttyUSB-a_shell-wwan1"
# # wwan on ???
# SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="???", ENV{ID_PATH}=="???", KERNEL=="wwan*", NAME="wwan???"
# SUBSYSTEM=="tty", KERNELS=="???:1.0", ATTRS{bInterfaceProtocol}=="12", KERNEL=="ttyUSB*", SYMLINK+="ttyUSB-wwan???"
# SUBSYSTEM=="usbmisc", KERNELS=="???:1.1", ATTRS{bInterfaceProtocol}=="16", KERNEL=="cdc-wdm*", SYMLINK+="cdc-wdm-wwan???"
# SUBSYSTEM=="tty", KERNELS=="???:1.2", ATTRS{bInterfaceProtocol}=="05", KERNEL=="ttyUSB*", SYMLINK+="ttyUSB-a_shell-wwan???"
将 ID_PATH、KERNELS 和地址的值更改为您自己的值。您还可以修改名称、符号链接和/或添加其他 udev 选项。