22

I changed my MAC address with macchanger -A wlp68s0b1 at boot with crontab,

Here is what happens when I disconnect and reconnect:

While connecting after boot:

rahman@debian:~$ macchanger -s wlp68s0b1
Current MAC:   00:22:31:c6:38:45 (SMT&C Co., Ltd.)
Permanent MAC: 00:00:00:00:00:00 (FAKE CORPORATION)

After disconnecting:

rahman@debian:~$ macchanger -s wlp68s0b1
Current MAC:   16:7b:e7:3c:d3:cd (unknown)
Permanent MAC: 00:00:00:00:00:00 (FAKE CORPORATION)

After reconnecting:

rahman@debian:~$ macchanger -s wlp68s0b1
Current MAC:   00:00:00:00:00:00 (FAKE CORPORATION)
Permanent MAC: 00:00:00:00:00:00 (FAKE CORPORATION)

And so on. With every disconnect I get a different random MAC address which fades on reconnecting, giving me my real MAC address. What causes that and how to stop it?

Some outputs:

rahman@debian:~$ lspci -nn |grep 14e4
44:00.0 Network controller [0280]: Broadcom Limited BCM4313 802.11bgn Wireless Network Adapter [14e4:4727] (rev 01)
rahman@debian:~$ uname -a
Linux debian 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) x86_64 GNU/Linux
rahman@debian:~$ sudo ifconfig 
enp0s25: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 00:24:c0:7b:a8:8b  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 20  memory 0xd4800000-d4820000  

enp0s25:avahi: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 169.254.9.109  netmask 255.255.0.0  broadcast 169.254.255.255
        ether 00:24:c0:7b:a8:8b  txqueuelen 1000  (Ethernet)
        device interrupt 20  memory 0xd4800000-d4820000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 9436  bytes 6584515 (6.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9436  bytes 6584515 (6.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp68s0b1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.5  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::6711:9875:eb78:24fc  prefixlen 64  scopeid 0x20<link>
        inet6 fd9c:c172:b03b:ce00:f1e0:695e:7da0:91a  prefixlen 64  scopeid 0x0<global>
        ether 00:00:00:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 484346  bytes 641850809 (612.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 368394  bytes 44259668 (42.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

rahman@debian:~$ sudo iwconfig 
lo        no wireless extensions.

enp0s25   no wireless extensions.

wlp68s0b1  IEEE 802.11  ESSID:"3bdo"  
          Mode:Managed  Frequency:2.447 GHz  Access Point: 9C:C1:72:B0:3B:D4   
          Bit Rate=65 Mb/s   Tx-Power=30 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=54/70  Signal level=-56 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:4  Invalid misc:183   Missed beacon:0
Matthias Braun
  • 7,797
  • 7
  • 45
  • 54
A.Rahman Mahmoud
  • 503
  • 1
  • 3
  • 14

3 Answers3

17

NetworkManager will reset your MAC address during the Wi-Fi scanning.

To permanently change your MAC address:

Edit your /etc/NetworkManager/NetworkManager.conf as follows:

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

[keyfile]

Edit your /etc/network/interfaces by adding the following line:

pre-up ifconfig wlp68s0b1 hw ether xx:xx:xx:yy:yy:yy

The xx:xx:xx:yy:yy:yy is the new MAC address obtained from the output of macchanger -A wlp68s0b1.

Reboot and verify your settings.

From Configuring MAC Address Randomization in the Arch Linux wiki:

Randomization during Wi-Fi scanning is enabled by default, but it may be disabled by adding the following lines to /etc/NetworkManager/NetworkManager.conf or a dedicated configuration file under /etc/NetworkManager/conf.d:

[device]
wifi.scan-rand-mac-address=no

Setting it to yes results in a randomly generated MAC address being used when probing for wireless networks.

Matthias Braun
  • 7,797
  • 7
  • 45
  • 54
GAD3R
  • 63,407
  • 31
  • 131
  • 192
  • 1
    I was setting "wifi.scan-rand-mac-address=preserve", changed its value to "wifi.scan-rand-mac-address=no" like in this answer and it worked! – Sandoval0992 May 25 '21 at 05:11
5

If other methods cannot solve the problem, you can try to edit /etc/NetworkManager/conf.d/30-randomize-mac-address.conf

[connection-mac-randomization]
ethernet.cloned-mac-address=permanent
wifi.cloned-mac-address=permanent 

and keep wifi.scan-rand-mac-address=no.

The options are:

  • permanent: use the hardware MAC
  • preserve: don’t change the MAC address of the device upon activation.
  • random: generate a randomized value upon each connect.
  • stable: generate a stable, hashed MAC address.
fishyman
  • 51
  • 1
  • 1
2

macchanger when first installed gives you the option of automatically changing MAC address with every new connection. since I don't see the option on the --help page I would suggest uninstall and reinstall. The Yes/No option will crop up asking if you want it to randomize etc etc. Just select 'No', you should have smooth sailing from there.

James Gentes
  • 103
  • 4