Правильний спосіб зміни MAC-адреси в VM Linux?


13

Я намагався змінити MAC-адресу у VM ubuntu (virtualbox), але після цього він кинув багато помилок під час завантаження, і тоді у мене не було підключення до Інтернету.

Потім я побачив, що інтерфейс було перейменовано на eth1, тому я відредагував / etc / network / інтерфейси, щоб змінити eth0 на eth1, перезавантажив (не знав, як перезапустити мережу), а завантаження тепер було швидше та Інтернет працював нормально.

Але тепер після кожного входу в систему я отримую 1 або 2 повідомлення про помилки, які нічого не говорять, вони лише запитують мене, чи хочу я повідомити про них.

Тож мені було цікаво, чи існував правильний спосіб змінити MAC-адресу, щоб уникнути цих проблем?


1
Існує ряд факторів, які беруть участь у зміні адреси mac, у ВМ або іншому способі. Чи можете ви пояснити, чому ви хочете змінити mac, це може допомогти у пошуку найкращого рішення ( meta.stackexchange.com/questions/66377/what-is-the-xy-problem )
Павло

@Paul Я намагаюся дізнатися, як різні програми відстежують вашу активність, як це робити та як цього уникати. Наприклад: IP, файли cookie, відбитки пальців у браузері тощо. Зараз я хочу побачити, як деякі програми реагують на зміну MAC-адреси.
HappyDeveloper

Відповіді:


15

Ви можете скористатися "правильним" методом для зміни MAC-адреси, якщо ви робите це в розширених мережевих налаштуваннях у VirtualBox. Однак тимчасова зміна, як і в іншій відповіді Zuul, може бути найкращою для ваших цілей, оскільки вона змінить MAC, не викликаючи занадто багато додаткових проблем - проте перезавантаження не переживе.

Зміна його у VirtualBox звичайно переживе перезавантаження, але проблема, з якою ви стикаєтеся, є udev. Це процес, який розглядає обладнання та встановлює це обладнання /dev(або все, що ще може бути потрібно зробити). Одне з речей, які він робить за замовчуванням, - це намагатися підтримувати стійкі імена для мережевих інтерфейсних карт [nics]. Це тому, що, коли у вас є декілька nics, ви хочете, щоб вони завжди мали одне і те ж ім'я ethX, так що ваша /etc/network/interfacesконфігурація орієнтується на правильний nic кожного завантажувача. ОС не може розраховувати на те, що вони щоразу перебувають фізично на одному місці - ви можете переміщати їх, наприклад, або деякі системи не повідомляють про свої фізичні з'єднання в тій же послідовності кожного завантаження.

Тому udevвикористовується правила стійкості на основі MAC-адреси мережевої карти. Якщо в ньому є запис для eth1 з відомою MAC-адресою, а на картці з’являється інша MAC-адреса, вона призначить інше ім'я пристрою ethX для інтерфейсу.

Щоб протистояти цьому, потрібно просто оновити udevправила. Редагувати:

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

і шукайте рядок із поточним 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"

Якщо ви зміните тут MAC-адресу на нову, яку ви вибрали у налаштуваннях VirtualBox, вона збереже той самий номер розробника ethX наступного завантаження.

Найкращою послідовністю було б, мабуть, спочатку відредагувати його, потім вимкнути VM, потім відредагувати налаштування VB MAC, а потім завантажити.


Редагування файлу вручну не працювало для мене, але я пам’ятав, що читав, що цей файл можна видалити повністю і після перезавантаження він генерується автоматично. І це насправді спрацювало :) +1 для показу місцезнаходження файлу.
Едуард Лука

@Paul Чому саме тоді я можу клонувати систему Linux з однієї фізичної машини на іншу того ж типу (але різні MAC адреси) і не стикатися з такою проблемою?
Арні

1
@arney Я думаю, що це тому, що це зовсім інший NIC, не змінюються лише MAC-адреси. У файлі , який згаданий Павлом, ви можете побачити: ATTR{dev_id}=="0x0". Це неодмінно буде різним.
MarioDS

@arney Я думаю, ти маєш рацію Арні, якщо nic не існує, то правило udev не застосовуватиметься. Це те саме, як якщо б це була нова машина. Без помилок важко сказати. Але видалення правил збереження допоможе, якщо це буде udev.
Пол

8

Ви можете змінити MAC-адресу за допомогою 4 простих кроків за допомогою ifconfig :

Відкрити термінал (комбінація клавіш: ctrl+ alt+ t)

  1. Знайти поточну адресу mac:

    ifconfig | grep HWaddr
    
  2. Вимкніть інтерфейс (припустимо, що це буде eth0для наступних кроків) :

    ifconfig eth0 down
    
  3. Встановіть нову mac-адресу:

    ifconfig eth0 hw ether 00:1E:68:35:FF:91
    
  4. Прапор викликає активацію інтерфейсу:

    ifconfig eth0 up
    

Тепер ви можете повторно перевірити mac-адресу свого інтерфейсу:

ifconfig eth0 |grep HWaddr

Примітка. Ви можете вибрати будь-яку 48-бітну шістнадцяткову адресу як свою MAC-адресу.


Для повноти ви можете об'єднати кроки 2 і 3 в один рядок:

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

@DownVoter: Якщо є проблема з моєю відповіддю, коментар піде на довгий шлях, щоб дозволити мені покращити її! Ткс.
Зуул
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.