Cách thích hợp để thay đổi địa chỉ MAC trong máy ảo linux?


13

Tôi đã cố gắng thay đổi địa chỉ MAC trong máy ảo ubfox (hộp ảo), nhưng sau đó nó đã gây ra nhiều lỗi trong khi khởi động, và sau đó tôi không có kết nối internet.

Sau đó, tôi thấy rằng giao diện đã được đổi tên thành eth1, vì vậy tôi đã chỉnh sửa / etc / mạng / giao diện để thay đổi eth0 thành eth1, khởi động lại (không biết cách khởi động lại mạng) và khởi động nhanh hơn và internet hoạt động tốt.

Nhưng bây giờ sau mỗi lần tôi đăng nhập, tôi nhận được 1 hoặc 2 thông báo lỗi không nói gì, họ chỉ hỏi tôi có muốn báo cáo không.

Vì vậy, tôi đã tự hỏi, có một cách thích hợp để thay đổi địa chỉ MAC, để tránh những vấn đề này?


1
Có một số yếu tố liên quan đến việc thay đổi địa chỉ mac, trong VM hoặc cách khác. Bạn có thể giải thích lý do tại sao bạn muốn thay đổi máy Mac không, nó có thể giúp tìm ra giải pháp tốt nhất ( meta.stackexchange.com/questions/66377/what-is-the-xy-probols )
Paul

@Paul Tôi đang cố gắng tìm hiểu cách các chương trình khác nhau theo dõi hoạt động của bạn, cách thực hiện và cách tránh. Ví dụ: IP, cookie, dấu vân tay trình duyệt, v.v ... Bây giờ tôi muốn xem một số chương trình phản ứng với thay đổi địa chỉ MAC như thế nào.
HappyDeveloper

Câu trả lời:


15

Bạn rất có thể sử dụng phương pháp "chính xác" để thay đổi địa chỉ MAC, nếu bạn đang thực hiện việc này trong cài đặt mạng nâng cao trong VirtualBox. Tuy nhiên, một thay đổi tạm thời như trong câu trả lời khác của Zuul có thể là tốt nhất cho mục đích của bạn, vì nó sẽ thay đổi MAC mà không gây ra quá nhiều vấn đề khác - tuy nhiên nó sẽ không tồn tại khi khởi động lại.

Thay đổi nó trong VirtualBox tất nhiên sẽ tồn tại khi khởi động lại, nhưng vấn đề bạn gặp phải là udev. Đây là quá trình xem xét phần cứng và thiết lập phần cứng đó /dev(hoặc bất cứ điều gì khác có thể cần phải được thực hiện). Một trong những điều nó làm theo mặc định là cố gắng duy trì các tên liên tục cho thẻ giao diện mạng [nics]. Điều này là do khi bạn có nhiều nics, bạn muốn chúng luôn có cùng tên ethX, để /etc/network/interfacescấu hình của bạn nhắm đúng nic mỗi lần khởi động. Hệ điều hành không thể dựa vào chúng chỉ ở cùng một vị trí mỗi lần - bạn có thể di chuyển chúng xung quanh hoặc một số hệ thống không báo cáo các kết nối vật lý của chúng theo cùng một trình tự mỗi lần khởi động.

Vì vậy, udevsử dụng quy tắc kiên trì dựa trên địa chỉ MAC của card mạng. Nếu nó có một mục nhập cho eth1 với một địa chỉ MAC đã biết và một thẻ xuất hiện với một địa chỉ MAC khác, nó sẽ phân bổ một tên thiết bị ethX khác cho giao diện.

Để chống lại điều này, bạn chỉ cần cập nhật các udevquy tắc. Biên tập:

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

và tìm dòng với MAC hiện tại của bạn:

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

Nếu bạn thay đổi địa chỉ MAC ở đây thành địa chỉ mới mà bạn đã chọn trong cài đặt VirtualBox, thì địa chỉ đó sẽ giữ lại số nhà phát triển ethX tương tự.

Trình tự tốt nhất có lẽ là chỉnh sửa nó ở đây trước, sau đó tắt VM, sau đó chỉnh sửa cài đặt VB MAC, sau đó khởi động.


Chỉnh sửa tệp theo cách thủ công không phù hợp với tôi, nhưng tôi nhớ rằng bạn có thể xóa tệp này hoàn toàn và sau khi khởi động lại, nó được tạo tự động. Và điều đó thực sự có hiệu quả :) +1 để hiển thị vị trí tệp.
Eduard Luca

@Paul Tại sao sau đó, tôi có thể sao chép một hệ thống Linux từ máy vật lý này sang máy khác cùng loại (nhưng địa chỉ MAC khác nhau) và không gặp phải rắc rối như vậy?
arney

1
@arney Tôi nghĩ đó là bởi vì nó là một NIC hoàn toàn khác, không chỉ thay đổi địa chỉ MAC. Trong tập tin được đề cập bởi Paul, bạn có thể thấy : ATTR{dev_id}=="0x0". Điều này chắc chắn là khác nhau.
MarioDS

@arney Tôi nghĩ bạn đúng Arney, nếu nic không tồn tại, thì quy tắc udev sẽ không được áp dụng. Điều này giống như là một máy mới. Nếu không có lỗi thì khó có thể nói. Nhưng xóa các quy tắc kiên trì sẽ giúp nếu nó là udev.
Paul

8

Bạn có thể thay đổi địa chỉ MAC với 4 bước đơn giản bằng ifconfig :

Mở một thiết bị đầu cuối (phím tắt: ctrl+ alt+ t)

  1. Tìm địa chỉ mac hiện tại:

    ifconfig | grep HWaddr
    
  2. Tắt giao diện (giả sử là eth0cho các bước tiếp theo) :

    ifconfig eth0 down
    
  3. Đặt địa chỉ mac mới:

    ifconfig eth0 hw ether 00:1E:68:35:FF:91
    
  4. Cờ khiến giao diện được kích hoạt:

    ifconfig eth0 up
    

Bây giờ bạn có thể kiểm tra lại địa chỉ mac giao diện của bạn:

ifconfig eth0 |grep HWaddr

Lưu ý: Bạn có thể chọn bất kỳ địa chỉ thập lục phân 48 bit nào làm địa chỉ MAC của mình.


Với mục đích hoàn thiện, bạn có thể kết hợp các bước 2 và 3 thành một dòng:

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

@DownVoter: Nếu có vấn đề với câu trả lời của tôi, một nhận xét sẽ đi một chặng đường dài để cho phép tôi cải thiện nó! Tks.
Zuul
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.