MAC アドレスを(永続的に)変更する方法、または 3G USB ドングルを識別する方法は?

MAC アドレスを(永続的に)変更する方法、または 3G USB ドングルを識別する方法は?

3G USBドングルを2つ購入しましたが、どちらも同じMACアドレスを持っています。少し調べたところ、見つかったこれはよくある問題なので、新しいものを購入しても問題が解決しない可能性があります。

特定のデバイスを識別する必要があるので、両方のデバイスの Mac が同じである場合、どのようにしてデバイスを識別できるかが質問です。

1 つのデバイスに新しい 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 を変更する方法が見つかりません。 のような NVRAM セルに MAC を書き込むコマンドがあるのではないかと思います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 オプションを追加したりすることもできます。

関連情報