Jak zmienić adres MAC Wlan0?

11

Kupiłem miniaturowy moduł WiFi od ADAFruit ( http://www.adafruit.com/products/814 ) i zastanawiałem się, czy można zmienić powiązany z nim adres MAC. Próbowałem użyć następującego kodu:

sudo ifdown wlan0

sudo ifconfig wlan0 hw ether 00:11:22:33:44:55

sudo ifup wlan0

lub

sudo ifdown wlan0

sudo macchanger -r wlan0

sudo ifup wlan0

lub dodając wiersz /etc/network/interfaces

hwaddress ether 00:11:22:33:44:55

Podczas korzystania lsusbz urządzenia pojawia się jako „Karta sieciowa Realtek Semiconductor Corp. RTL8188CUS 802.11n”. W /etc/hostapd/hostapd.conf, driver=rtl1871xdrv. Korzystam z serwera ISC DHCP.

Urządzenie działa inaczej. Chcę tylko móc zmienić adres MAC

Joseph
źródło
To pytanie nie ma absolutnie nic wspólnego z Raspberry Pi, proszę wybrać inną sekcję StackExchange dla tego typu zapytań.
lenik,
2
o przepraszam. Używałem Raspbian, więc wyglądało na to, że to dobre miejsce. Znajdę inną lokalizację.
Joseph,
Niektóre sterowniki wymagają do tego urządzenia. Spróbujsudo ifconfig wlan0 up ; sudo macchanger -r wlan0
M Noit
Niestety to też nie działa. Ma błąd „Nie można odczytać stałego adresu MAC: Operacja nie jest obsługiwana. Mimo że dane wyjściowe dla NOWEGO adresu MAC są wyświetlane, ifconfig pokazuje stary adres MAC.
Joseph

Odpowiedzi:

4

W przypadku „Raspbian GNU / Linux 8 (jessie)” (cat / etc / os-release), „Raspberry Pi reference 2017-06-21” (cat / etc / rpi-issue) (może także 2017-07-05) ( dzięki @Heinrich Ulbricht) i wcześniej zobacz moją odpowiedź tutaj .

W przypadku „Raspbian GNU / Linux 9 (stretch)” (cat / etc / os-release), „Raspberry Pi referencje 2017-08-16” (cat / etc / rpi-issue) (może również 2017-07-05) i później wszystko się zmieniło. Na przykład eth0jest teraz wymieniony według przewidywalnej nazwy interfejsu sieciowego systemd enxb827ebxxxxxx . Więc moja poprzednia metoda if-pre-up.dprzestała działać.

Zamiast tego możesz użyć systemdi utworzyć plik, /etc/systemd/network/00-mac.linkjak wyjaśniono tutaj :

[Match]
OriginalName=wlan0

[Link]
MACAddress=b8:27:eb:xx:xx:xx
NamePolicy=kernel database onboard slot path
Frank Breitling
źródło
2
Potwierdzono pracę z Raspian Stretch Lite. Kudos, Frank.
Josh Habdas
1
Potwierdzając również, że działa z Raspbian GNU / Linux 9.
literówka
1
Właśnie zrobiłem drugi na Busterze i zadziałało. Tanie chińskie karty Ethernet otrzymały ten sam adres MAC. ~ 1,20 $ za 3x USB i Ethernet, nie mogę narzekać zbyt wiele.
YetAnotherRandomUser
2

Miałem ten sam problem - większość standardowych sposobów robienia tego nie działała na malinie.

Moja sytuacja była nieco inna - mam Raspberry PI B, w którym zmarł układ Ethernet, więc użyłem adaptera USB-Ethernet. Adapter może nie jest najwyższej jakości, ponieważ nie miał unikalnego adresu MAC. Adapter jest przypisany doeth1

Znalazłem odpowiedź enzorika tutaj ... http://www.raspberrypi.org/forums/viewtopic.php?f=6&t=5486 , pracował dla mnie. Głównie...

Utwórz nowy skrypt: sudo nano /etc/init.d/mac.sh

Wklej do tego skryptu (ustaw swój adres MAC zgodnie z wymaganiami) ...

#! /bin/sh
ifconfig eth1 down hw ether 00:00:00:00:00:00
ifconfig eth1 up 

Spraw, by był wykonywalny: sudo chmod +x /etc/init.d/mac.sh

Następnie uruchomić: sudo update-rc.d /etc/init.d/mac.sh defaults

spiderplant0
źródło
Sugerowałbym raczej zapisać mac.sh w /etc/network/if-pre-up.d/. Pozwoli to uniknąć korzystania z update-rc.d. Zobacz moją odpowiedź poniżej.
Frank Breitling
Natrafiłem na ten sam problem. Spróbuję tego. Ale link do forum, do którego się odwołujesz, nie jest już dobry.
YetAnotherRandomUser
2

W przypadku „Raspbian GNU / Linux 9 (stretch)” (cat / etc / os-release), „Raspberry Pi referencje 2017-08-16” (cat / etc / rpi-issue) (może również 2017-07-05) i później zobacz moją odpowiedź tutaj .

W przypadku „Raspbian GNU / Linux 8 (jessie)” (cat / etc / os-release) „Raspberry Pi referencje 2017-06-21” (cat / etc / rpi-issue) (dzięki @Heinrich Ulbricht) (może także 2017 -07-05) i wcześniejszych

możesz dodać następujący skrypt do /etc/network/if-pre-up.d/mac:

#!/bin/sh

if [ "$IFACE" = wlan0 ]; then
    ip link set dev "$IFACE" address b8:27:eb:xx:xx:xx
fi

i uczynić go wykonywalnym za pomocą

chmod +x /etc/network/if-pre-up.d/mac

Powinno to działać z systememd i być bardziej niezawodne niż starsza update-rc.dmetoda.

Frank Breitling
źródło
1
Przetestowano pomyślnie z „Raspbian GNU / Linux 8 (jessie)” ( cat /etc/os-release), „Raspberry Pi reference 2017-06-21” ( cat /etc/rpi-issue). (Dokumentuję to, aby zawęzić ramkę uwalniania, dla której działa, ponieważ twoja druga odpowiedź sugeruje, że przestaje działać w pewnym momencie.)
Heinrich Ulbricht
1
Uwaga: ta metoda nie działa na Raspian Stretch. Na szczęście Frank dodał drugą odpowiedź i obie są nadal technicznie poprawne.
Josh Habdas
Właśnie zrobiłem powiązaną odpowiedź na Busterze i zadziałało. Tanie chińskie karty Ethernet otrzymały ten sam adres MAC. ~ 1,20 $ za 3x USB i Ethernet, nie mogę narzekać zbyt wiele.
YetAnotherRandomUser
1

można zmienić adres mac, ale jest to cecha sprzętu i sterowników.

udało mi się używać dwóch adapterów Wi - Fi TL-WN722N i Alfa AWUS036H

należy jednak pamiętać, że Alfa AWUS036H musi być zasilany przez zasilany hub USB. jeśli spróbujesz uruchomić go bezpośrednio z pi, dostaniesz panikę jądra.

service ifplugd stop

service wicd stop

ifconfig wlan0 down

macchanger -r wlan0 

ifconfig wlan0 up

powodzenia

jeremyforan
źródło
1

W przypadku sterownika 8192cu można to zrobić, tworząc plik /etc/modprobe.d/8192cu.conf (nazwa pliku nie ma znaczenia, ale powinien mieć .confrozszerzenie) i dodając wiersz, który wygląda:

options 8192cu rtw_initmac="XX:XX:XX:XX:XX:XX"

gdzie „XX: XX: XX: XX: XX: XX” to statyczny adres MAC

gypet
źródło
1
Mam dokładnie ten sam model RTL8188CUS i jest to jedyne działające rozwiązanie. Dziękuję Ci!
Rucent88,