Hệ thống nhân bản Linux và /etc/udev/rules.d/70-persistent-net.rules


9

Tôi thiết lập một hệ thống Ubuntu và cấu hình nó đúng cách, bao gồm cả xác định eth0trong /etc/network/interfaces. Sau đó tôi chụp ảnh hệ thống đó và nhân bản nó trên một hệ thống mới.

Khi tôi khởi động hệ thống lần đầu tiên tất cả đều tốt, nhưng một vài lần khởi động lại sau đó tôi đã được chào đón với cấu hình mạng hết thời gian. Khi tôi đăng nhập tôi thấy rằng nó eth0không có sẵn.

Nghiên cứu ban đầu của tôi cho phép tôi thử ifdown -aifup -atôi đã làm một vài lần mà không có hiệu quả rõ ràng.

Nghiên cứu cuối cùng đã chỉ cho tôi /etc/udev/rules.d/70-persistent-net.rules, nơi tôi phát hiện ra rằng địa chỉ MAC cho hệ thống mới đã tạo ra eth1. Ý tưởng tốt, nhưng không phải những gì tôi muốn xảy ra.

Khi tôi vừa mới khởi động, tôi thấy rằng /etc/udev/rules.d/70-persistent-net.rulesbây giờ có sáu mục nhập cho sáu Địa chỉ CT khác nhau, điều mà tôi thấy lạ vì chỉ có một giao diện.

Câu hỏi của tôi là: việc tôi sử dụng ifup -abằng cách nào đó tạo địa chỉ MAC mới sẽ được tạo? Nếu không, có bất kỳ suy nghĩ về cách điều này xảy ra? Tôi đã thay đổi /etc/udev/rules.d/70-persistent-net.rulesđể đặt tên cho Địa chỉ CT hiện tại eth0và nó dường như đang hoạt động, nhưng tôi có thể yên tâm rằng địa chỉ sẽ không thay đổi nữa khi khởi động lại không?


Khách truy cập tương lai của Q này: Đây không phải là VM, đây là một hệ thống vật lý mà OP đã nhân bản lên phần cứng mới!
slm

Câu trả lời:


7

Thỉnh thoảng tôi cũng gặp phải vấn đề tương tự trong CentOS khi tôi nhân bản máy ảo (VM). Vấn đề bắt nguồn từ VM gốc nhận được một mục nhập vào tệp này để thiết lập thiết bị Ethernet eth0.

Tệp .rules mẫu

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# net device () (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:dd", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Vấn đề xảy ra với cái đầu xấu xí của nó khi bạn sao chép VM đầu tiên, điều này khiến một địa chỉ MAC mới được tạo, dưới một số công nghệ ảo hóa như KVM cho một. Địa chỉ MAC mới này được tự động phát hiện khi VM nhân bản được khởi động và được xem như một thiết bị Ethernet mới /lib/udev/write_net_rules, và do đó, mục nhập thứ 2 được thêm vào tệp trên.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:de", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Tôi thường mở tệp này 70-persistent-net.rules, trong một trình chỉnh sửa và chỉ cần hợp nhất các dòng để địa chỉ MAC mới được gán cho eth0thiết bị và khởi động lại.

...
# net device () (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:de", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

EDIT # 1

OP theo dõi câu hỏi với thông tin mới sau đây.

Mục số 1: Hmmm. Điều đó sẽ không hoạt động trong trường hợp của tôi vì tôi đang chạy phần mềm có giấy phép flex liên kết với địa chỉ mac. Thay đổi địa chỉ liên tục khiến phần mềm nói vô dụng ..

@Zobal - Tôi quen thuộc với Flex. Vì là máy ảo, bạn có thể thay đổi MAC của máy ảo (trong phần mềm VM - VirtualBox, KVM, v.v.).

LƯU Ý: Flex là công nghệ cấp phép do Flexera cung cấp . Chúng từng được gọi là Phần mềm GlobeTrotter. Công nghệ này cho phép phần mềm được gắn với máy chủ vật lý hoặc có thể có giấy phép được quản lý từ máy chủ trung tâm dưới dạng "mã thông báo" nơi khách hàng có thể kiểm tra mã thông báo trong một khoảng thời gian. Các giấy phép thường được gắn với một máy chủ và máy chủ này thường được xác định bởi một số duy nhất mà bạn có thể tìm thấy bằng cách sử dụng lệnh hostid.

Ví dụ:

$ hostid
a8c0c801

Mục số 2: Trong trường hợp của tôi, nó không phải là VM. Tôi đã nhân bản một hệ thống vật lý lên một hệ thống vật lý khác.

Tôi đã trả lời: Vậy thì lựa chọn duy nhất của bạn là thay đổi địa chỉ MAC của hệ thống mới giống như MAC của hệ thống khác. Nhận ra rằng 2 hệ thống này không thể tồn tại trên cùng một mạng, nếu không chúng sẽ xung đột với nhau. Ngoài ra, cấp phép Flex thường không sử dụng MAC, họ sử dụng số có thể nhận dạng bằng lệnh hostid!

Người giới thiệu


Hừm. Điều đó sẽ không hoạt động trong trường hợp của tôi vì tôi đang chạy phần mềm có giấy phép flex liên kết với địa chỉ mac. Thay đổi địa chỉ liên tục khiến phần mềm cho biết vô dụng ...
Zobal

@Zobal - Tôi quen thuộc với Flex. Vì là máy ảo, bạn có thể thay đổi MAC của máy ảo (trong phần mềm VM - VirtualBox, KVM, v.v.).
slm

Trong trường hợp của tôi, nó không phải là VM. Tôi đã nhân bản một hệ thống vật lý lên một hệ thống vật lý khác.
Zobal

@Zobal - vậy thì tùy chọn duy nhất của bạn là thay đổi địa chỉ MAC của hệ thống mới thành giống như MAC của hệ thống khác. Nhận ra rằng 2 hệ thống này không thể tồn tại trên cùng một mạng, nếu không chúng sẽ xung đột với nhau. Ngoài ra, cấp phép Flex thường không sử dụng MAC, họ sử dụng số có thể nhận dạng bằng lệnh hostid!
slm

giấy phép flex là giấy phép mà chúng tôi đã tạo để buộc phần mềm của chúng tôi vào một máy cụ thể và trong trường hợp này, nó sử dụng MAC. Phát triển mới: Tôi đã cài đặt lại UBUNTU từ đầu (không phải từ và hình ảnh) và đang có hành vi tương tự. Nó thực sự chỉ hiển thị trên tắt máy bẩn (sức mạnh được kéo mạnh). Có suy nghĩ gì không?
Zobal

0

hostid là duy nhất như địa chỉ IP của máy chủ của bạn.
Trong ví dụ của bạn hostid là a8c0c801, địa chỉ IP của máy chủ của bạn có phải là 192.168.1.200 không?
A8C0 C801 -> C0A8 01C8
C0: 192
A8: 168
01: 1
C8: 200

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.