Ubuntu 16.04 bumped NetworkManager to version 1.0.93. Unlike 15.10 (with v1.0.4) and earlier NetworkManager now resets temporary mac of an interface to actual physical mac effectively disabling typical wifi anonymization technics.
Same issue is present in just released NetworkManager 1.2.
It appears that sometime between 1.0.10 and 1.0.93 there was a change in src/devices/wifi/nm-device-wifi.c from
/* Set spoof MAC to the interface */
cloned_mac = nm_setting_wireless_get_cloned_mac_address (s_wireless);
if (cloned_mac)
nm_device_set_hw_addr (device, cloned_mac, "set", LOGD_WIFI);
to
/* Set spoof MAC to the interface */
cloned_mac = nm_setting_wireless_get_cloned_mac_address (s_wireless);
nm_device_set_hw_addr (device, cloned_mac, "set", LOGD_WIFI);
cloned_mac is NULL if not specified in NetworkManager GUI. When called with NULL nm_device_set_hw_addr sets the mac to physical mac of the interface.
Ubuntu 16.04 bumped NetworkManager to version 1.0.93. Unlike 15.10 (with v1.0.4) and earlier NetworkManager now resets temporary mac of an interface to actual physical mac effectively disabling typical wifi anonymization technics.
Same issue is present in just released NetworkManager 1.2.
It appears that sometime between 1.0.10 and 1.0.93 there was a change in src/devices/ wifi/nm- device- wifi.c from
/* Set spoof MAC to the interface */ wireless_ get_cloned_ mac_address (s_wireless); set_hw_ addr (device, cloned_mac, "set", LOGD_WIFI);
cloned_mac = nm_setting_
if (cloned_mac)
nm_device_
to
/* Set spoof MAC to the interface */ wireless_ get_cloned_ mac_address (s_wireless); set_hw_ addr (device, cloned_mac, "set", LOGD_WIFI);
cloned_mac = nm_setting_
nm_device_
cloned_mac is NULL if not specified in NetworkManager GUI. When called with NULL nm_device_ set_hw_ addr sets the mac to physical mac of the interface.