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


9

我设置了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并且该地址似乎可以正常工作,但是我可以确定地址不会在重新启动后再次更改吗?


问:这不是虚拟机,而是OP克隆到新硬件上的物理系统!
slm

Answers:


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"

当您克隆第一个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"

我通常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"

编辑#1

OP通过以下新信息来跟踪问题。

项目1:嗯。就我而言,这是行不通的,因为我正在运行具有与Mac地址相关联的Flex许可证的软件。不断变化的地址使所述软件无用。

@Zobal-我对Flex熟悉。由于它是VM,因此您可以更改VM的MAC(在VM软件中-VirtualBox,KVM等)。

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

例如:

$ hostid
a8c0c801

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

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

参考文献


嗯 就我而言,这是行不通的,因为我正在运行具有与Mac地址相关联的Flex许可证的软件。不断变化的地址使所说的软件无用...
Zobal 2014年

@Zobal-我对Flex熟悉。由于它是VM,因此您可以更改VM的MAC(在VM软件中-VirtualBox,KVM等)。
slm

就我而言,它不是虚拟机。我已经将一个物理系统克隆到另一个物理系统上。
Zobal 2014年

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

flex许可证是我们创建的用于将软件绑定到特定计算机的许可证,在这种情况下,它确实使用MAC。新开发:我从头开始安装了UBUNTU(不是从和镜像安装的),并且行为相同。实际上,它仅在脏关机时才会显示(电源被拉动)。有什么想法吗?
Zobal 2014年

0

hostid与服务器的IP地址一样唯一。
在您的示例主机ID是a8c0c801中,您服务器的IP地址是否是192.168.1.200?
A8C0 C801-> C0A8 01C8
C0:192
A8:168
01:1
C8:200

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.