Właściwy sposób zmiany adresu MAC w maszynie wirtualnej z linuksem?


13

Próbowałem zmienić adres MAC w maszynie wirtualnej Ubuntu (virtualbox), ale potem rzuciło wiele błędów podczas uruchamiania, a następnie nie miałem połączenia z Internetem.

Potem zobaczyłem, że nazwa interfejsu została zmieniona na eth1, więc edytowałem / etc / network / interfaces, aby zmienić eth0 na eth1, uruchomiłem ponownie (nie wiedziałem, jak zrestartować sieć), a rozruch był teraz szybszy i Internet działał dobrze.

Ale teraz po każdym logowaniu pojawia się 1 lub 2 komunikaty o błędach, które nic nie mówią, tylko pytają mnie, czy chcę je zgłosić.

Zastanawiałem się więc, czy istnieje właściwy sposób zmiany adresu MAC, aby uniknąć tych problemów?


1
Istnieje wiele czynników związanych ze zmianą adresu mac, na maszynie wirtualnej lub w inny sposób. Czy możesz wyjaśnić, dlaczego chcesz zmienić Maca , może to pomóc w znalezieniu najlepszego rozwiązania ( meta.stackexchange.com/questions/66377/what-is-the-xy-problem )
Paul

@Paul Próbuję dowiedzieć się, jak różne programy śledzą Twoją aktywność, jak to zrobić i jak tego uniknąć. Np .: IP, pliki cookie, odciski palców przeglądarki itp. Teraz chcę zobaczyć, jak niektóre programy reagują na zmianę adresu MAC.
HappyDeveloper

Odpowiedzi:


15

Prawdopodobnie używasz „poprawnej” metody zmiany adresu MAC, jeśli robisz to w zaawansowanych ustawieniach sieciowych w VirtualBox. Jednak tymczasowa zmiana, jak w drugiej odpowiedzi Zuula, może być najlepsza dla twoich celów, ponieważ zmieni MAC bez powodowania zbyt wielu dodatkowych problemów - jednak nie przetrwa ponownego uruchomienia.

Zmiana w VirtualBox oczywiście przetrwa restart, ale problem, z którym się borykasz, jest związany z udev. Jest to proces, który analizuje sprzęt i ustawia sprzęt /dev(lub cokolwiek innego, co może być konieczne). Jedną z rzeczy, które robi domyślnie, jest utrzymanie trwałych nazw kart interfejsu sieciowego [nics]. Dzieje się tak, ponieważ gdy masz wiele kart sieciowych, chcesz, aby zawsze miały tę samą nazwę ethX, aby twoja /etc/network/interfaceskonfiguracja była ukierunkowana na właściwą nicę przy każdym rozruchu. System operacyjny nie może polegać na tym, że za każdym razem jest fizycznie w tym samym miejscu - możesz je na przykład przenosić, lub niektóre systemy nie zgłaszają fizycznych połączeń w tej samej sekwencji przy każdym uruchomieniu.

udevWykorzystuje więc reguły trwałości oparte na adresie MAC karty sieciowej. Jeśli ma wpis dla eth1 ze znanym adresem MAC i pojawi się karta z innym adresem MAC, przypisze do interfejsu inną nazwę urządzenia ethX.

Aby temu przeciwdziałać, wystarczy zaktualizować udevreguły. Edytować:

vi /etc/udev/rules.d/70-persistent-net.rules

i poszukaj linii z bieżącym MAC:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="11:22:33:44:55:66", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Jeśli zmienisz tutaj adres MAC na nowy, który wybrałeś w ustawieniach VirtualBox, zachowa ten sam numer dev ethX przy następnym uruchomieniu.

Najlepszą sekwencją byłaby prawdopodobnie najpierw edycja tutaj, następnie zamknięcie maszyny wirtualnej, następnie edycja ustawienia MAC VB MAC, a następnie uruchomienie.


Ręczne edytowanie pliku nie działało, ale przypomniałem sobie, że można go całkowicie usunąć, a po ponownym uruchomieniu jest on generowany automatycznie. I to faktycznie działało :) +1 za pokazanie lokalizacji pliku.
Eduard Luca,

@Paul Dlaczego zatem mogę sklonować system Linux z jednej fizycznej maszyny na inną tego samego typu (ale z różnymi adresami MAC) i nie wpaść w takie kłopoty?
arney

1
@arney Myślę, że to dlatego, że jest to zupełnie inna karta sieciowa, nie tylko zmiany adresu MAC. W pliku, który jest wspomniany przez Pawła, można zobaczyć: ATTR{dev_id}=="0x0". To na pewno będzie inaczej.
MarioDS

@arney Myślę, że masz rację Arney, jeśli nic nie istnieje, to zasada udev nie będzie stosowana. To jest tak, jakby to była nowa maszyna. Bez błędów trudno powiedzieć. Ale usunięcie reguł trwałości pomoże, jeśli jest to udev.
Paul

8

Możesz zmienić adres MAC w 4 prostych krokach, używając ifconfig :

Otwórz terminal (skrót klawiaturowy: ctrl+ alt+ t)

  1. Znajdź aktualny adres mac:

    ifconfig | grep HWaddr
    
  2. Zamknij interfejs (zakładając, że będzie eth0to następna czynność) :

    ifconfig eth0 down
    
  3. Ustaw nowy adres mac:

    ifconfig eth0 hw ether 00:1E:68:35:FF:91
    
  4. Flaga powoduje aktywację interfejsu:

    ifconfig eth0 up
    

Teraz możesz ponownie sprawdzić adres mac interfejsu:

ifconfig eth0 |grep HWaddr

Uwaga: Jako adres MAC możesz wybrać dowolny 48-bitowy adres szesnastkowy.


W celu uzupełnienia możesz połączyć kroki 2 i 3 w jedną linię:

ifconfig eth0 down hw ether 00:00:00:00:00:01

@DownVoter: Jeśli istnieje problem z moją odpowiedzią, komentarz może przejść długą drogę, aby pozwolić mi ją poprawić! Tks.
Zuul
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.