克隆的 Linux 系统和 /etc/udev/rules.d/70-persistent-net.rules

Zob*_*bal 9 networking ubuntu udev

我设置了一个 Ubuntu 系统并正确配置了它,包括eth0/etc/network/interfaces. 然后我对该系统进行了映像并将其克隆到一个新系统上。

当我第一次启动系统时,一切都很好,但几次重启后,我遇到了网络配置超时的问题。当我登录时,我发现它eth0不可用。

我最初的研究让我尝试ifdown -aifup -a我做了几次没有明显的影响。

研究最终将我指向了/etc/udev/rules.d/70-persistent-net.rules,我发现新系统的 MAC 地址已经创建了 eth1。好主意,但不是我想要发生的。

刚才开机的时候发现/etc/udev/rules.d/70-persistent-net.rules现在有六个不同的硬件地址有六个条目,我觉得很奇怪,因为只有一个接口。

我的问题是:我的使用是否ifup -a以某种方式创建了要创建的新 MAC 地址?如果没有,是否有关于这是如何发生的任何想法?我更改/etc/udev/rules.d/70-persistent-net.rules了当前硬件地址的名称eth0,它似乎可以正常工作,但是我可以确定该地址在重新启动时不会再次更改吗?

slm*_*slm 7

当我克隆虚拟机(VM)时,我不时在 CentOS 下遇到这个完全相同的问题。问题源于原始 VM 将条目放入此文件以设置以太网设备eth0

示例 .rules 文件

# 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"
Run Code Online (Sandbox Code Playgroud)

当您克隆第一个 VM 时,问题会变得丑陋,这会导致在某些虚拟化技术(例如 KVM)下创建新的 MAC 地址。当克隆的 VM 被启动并被 视为新的以太网设备时,会自动检测到这个新的 MAC 地址/lib/udev/write_net_rules,因此将第二个条目添加到上述文件中。

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:de", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
Run Code Online (Sandbox Code Playgroud)

我通常70-persistent-net.rules在编辑器中打开这个文件,然后简单地合并行,以便将新的 MAC 地址分配给eth0设备并重新启动。

...
# 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"
Run Code Online (Sandbox Code Playgroud)

编辑#1

OP 用以下新信息跟进了这个问题。

第 1 项:嗯。这在我的情况下不起作用,因为我正在运行具有与 mac 地址相关联的 flex 许可证的软件。不断更改地址使所述软件无用..

@Zobal - 我熟悉 Flex。由于它是虚拟机,您可以更改虚拟机的 MAC(在虚拟机软件中 - VirtualBox、KVM 等)。

注意: Flex 是一种由Flexera提供的许可技术。它们曾经被称为 GlobeTrotter 软件。该技术允许软件绑定到物理主机,或者可以从中央服务器管理许可证作为“令牌”,客户端可以在一段时间内检出令牌。许可证通常与主机相关联,该主机通常由一个唯一编号标识,您可以使用命令 找到该编号hostid

例如:

$ hostid
a8c0c801
Run Code Online (Sandbox Code Playgroud)

第 2 项:就我而言,它不是 VM。我已经将一个物理系统克隆到另一个物理系统上。

我的回答是:那么您唯一的选择是将新系统的 MAC 地址更改为与其他系统的 MAC 地址相同。意识到这两个系统不能存在于同一个网络中,否则它们会相互冲突。此外,Flex 许可通常不使用 MAC,它们使用可通过命令识别的数字hostid

参考