Linux

斷開連接後如何阻止MAC地址更改?

  • November 29, 2020

所以我在啟動時使用 crontab 更改了我的 MAC 地址macchanger -A wlp68s0b1,這是我斷開連接並重新連接時發生的情況:

啟動後連接時:

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)

斷開連接後:

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

重新連接後:

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)

依此類推,每次斷開連接時,我都會得到一個不同的隨機 MAC 地址,該地址在重新連接時會消失,給我我的真實 MAC 地址,是什麼原因造成的以及如何阻止它?

一些輸出:

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

Network-Manager 將在 wifi 掃描期間重置您的 mac 地址。

要永久更改您的 mac 地址:

編輯您/etc/NetworkManager/NetworkManager.conf 的如下:

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

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

[keyfile]

/etc/network/interfaces通過添加以下行來編輯您的:

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

xx:xx:xx:yy:yy:yy是從 的輸出中獲得的新 MAC地址macchanger -A wlp68s0b1

重新啟動並驗證您的設置。

Arch-linux wiki : 配置 MAC 地址隨機化

Wi-Fi 掃描期間的隨機化預設啟用,但可以通過/etc/NetworkManager/NetworkManager.conf/etc/NetworkManager/conf.d.

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

將其設置為會yes導致在探測無線網路時使用隨機生成的 MAC 地址。

引用自:https://unix.stackexchange.com/questions/395059