问题,

问题,

我有一个ubuntu服务器14.04具有 2 个网络接口的虚拟机

  • eth0- 用于Web管理,SSH
  • eth1- 用于传入跨度网络分析

我已经使用 udev 规则配置了机器(以确保 mac 地址与逻辑网络接口名称的一致性和正确绑定。

  • 我在安装服务器时只做了一次
  • 将这些规则写入/etc/udev/rules.d/70-persistent-net.rules

    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:f5:aa:02", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth1"
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:f5:aa:f8", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth0"
    

在此输入图像描述


此设置按预期工作直到新的网络接口添加到机器上。需要提醒的是,新界面是未添加到 udev 规则中。 (因为我只在设置过程中执行一次)

我期望新的网络接口名称是任何通用名称(例如/// eth3... )p2p1em1只要名字不被占用通过 udev 规则。

这是我添加接口并启动机器后的体验:

在此输入图像描述

  1. 我的 udev 规则被忽略/冲突并被命名rename3
  2. eth0被劫持了。现在的新界面之一是eth0.这在安全方面是一个超级问题(可能导致数据泄漏)

这是我在中找到的相关流程/var/log/messages

systemd-udevd[126]: starting version 204

...

vmxnet3 0000:04:00.0 eth0: NIC Link is Up 10000 Mbps
vmxnet3 0000:0b:00.0 eth1: NIC Link is Up 10000 Mbps
vmxnet3 0000:13:00.0 eth2: NIC Link is Up 10000 Mbps
vmxnet3 0000:1b:00.0 eth3: NIC Link is Up 10000 Mbps

...

vmxnet3 0000:0b:00.0 rename3: renamed from eth1
vmxnet3 0000:13:00.0 eth1: renamed from eth2
systemd-udevd[396]: renamed network interface eth1 to rename3
systemd-udevd[405]: renamed network interface eth2 to eth1
  • IMO 这是一个竞争条件。驱动程序/内核占用名称。稍后当我的 udev 规则执行时,占用的名称回退到rename*

问题,

在驱动程序/内核占用接口名称之前,有没有办法更改顺序并确定 udev-rules 的优先级?

注意 - 这些解决方法(POC 级别)对我有用:

  • 在 udev 规则中使用不同的命名约定(例如management0span0) - 工作没有问题,因为它不与默认值冲突。
  • 运行 @ boot 的脚本 - 将重新定义有关硬件更改的 udev 规则 - 有效,但需要额外的重新启动(天真的方法) - 没有问题

相关内容