我可以创建一个名为 eth0 的虚拟以太网接口吗?

我可以创建一个名为 eth0 的虚拟以太网接口吗?

我正在运行基于 Linux 3.10.5-1 内核的 Arch。该系统使用以太网接口 enp*s* 和 wlp* 等新的事实上的命名约定。然而,这是一个问题,因为我的教育机构正在使用一个名为枫树 17。 Maple 的许可系统依赖于名为 eth0 的接口的存在,因为它必须检索该接口的 MAC 地址来验证许可证。这是一个糟糕的解决方案,但我必须解决它。

这意味着我将需要一个具有任何 MAC 地址的 eth0 接口(因为我可以检索新 MAC 地址的新许可证文件),但该接口不一定能工作。事实上,它应该一直处于下降状态。我认为有几种方法可以尝试解决这个问题,但我还没有找到任何有关任何想法的信息。

  • 创建没有连接的适配器
  • 为 enp3s0 创建一个名为 eth0 的别名
  • 重命名 enp3s0 或环回接口。

我能找到的内容仅涵盖更改为较新的约定和旧版本的 udev。无论如何,他们只在 RHEL 和 SuSe 上工作。我尝试过但没有运气。 (persistent-net-names.rules 和 net-name-slot.rules,它们都只是让我的实际接口停止工作并且我的 wlan 接口消失)

答案1

当然。您可以tap相当轻松地创建设备,可以使用tunctl(来自 uml-utilities,至少在 Debian 上):

# tunctl -t eth0
Set 'eth0' persistent and owned by uid 0
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr a6:9b:fe:d8:d9:5e  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

或者与ip

# ip tuntap add dev eth0 mode tap
# ip link ls dev eth0
7: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 500
    link/ether 0e:55:9b:6f:57:6c brd ff:ff:ff:ff:ff:ff

也许您应该更喜欢第二种方法,因为ip它是 Linux 上的首选网络工具,并且您可能已经安装了它。

此外,这两者都使用(我猜)随机本地 MAC 创建分接设备,您可以通过任何正常方式将 MAC 设置为固定值。

答案2

您还可以设置 udev 规则来为您的网卡指定您想要的名称:

https://wiki.archlinux.org/index.php/Network_Configuration#Change_device_name

当然,你不应该告诉 udev 将它们称为 eth0、eth1 等。如果你只有一张 wifi 卡,Maple 会做什么?

答案3

我正在寻找一个完全没有有线网卡的计算机的非常类似的问题。这个解决方案看起来不错:http://jms.id.au/wiki/FakeEth0

基本上,这个想法是创建/修改一些文件来创建一个虚拟接口:

添加/etc/modules-load.d/dummy.conf

# load dummy interface module
dummy

添加/etc/udev/rules.d/70-persistent-net.rules

SUBSYSTEM=="net", KERNEL=="dummy0", NAME="eth0"

然后在/etc/network/interfaces添加:

iface eth0 inet static
    hwaddress DE:AD:BE:EF:CA:FE

此时您应该能够执行modprobe dummy并检查以确保接口设置正确。如果您使用modprobe而不是重新启动,它可能不会设置mac地址;在这种情况下,请执行 ip link set dev eth0 地址 de:ad:be:ef:ca:fe。

答案4

最简单的解决方案 - 尽管这只适用于具有一张以太网卡的系统:

ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

Arch Linux 使用“可预测的命名”。这会将其关闭。

相关内容