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


24

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

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

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

我只能找到的内容包括更改到较新的约定以及旧版本的udev。无论如何,他们只在RHEL和SuSe上工作。我试了一下却没有运气。(persistent-net-names.rules和net-name-slot.rules,它们都使我的实际界面停止工作,并且wlan界面消失了)

Answers:


28

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

# 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

可能您应该首选第二种方法,就像ipLinux上的首选网络工具一样,并且您可能已经安装了它。

而且,这两者都使用随机的本地MAC创建抽头设备,您可以通过任何正常方式将MAC设置为固定值。


1
对!正是我所希望的解决方案,非常感谢:)它就像一个梦。
SteenSchütt2013年

1
我有个问题。尝试使用来更改MAC时ip link set dev eth0 address 01:23:45:67:89:ab(当然适配器已关闭),它说RTNETLINK answers: Cannot assign requested address。我也尝试安装macchanger,但返回类似错误。一切都尝试作为根。
SteenSchütt2013年

3
@TimeSheep这不是有效的MAC地址。特别是,这是一个多播地址。尝试00:23:45:67:89:ab。可以的 但是02:23:45:67:89:ab会更好。参见,例如en.wikipedia.org/wiki/MAC_address#Address_details
derobert 2013年

嗯谢谢 我完全忘记了那些东西需要工作。我将抓住它随机生成的下一个并使用它。有没有一种方法可以使设备在重新启动后保持持久状态,而不是重新创建设备并使用脚本在启动时设置其地址?
SteenSchütt2013年

@TimeSheep不是。它是一个虚拟接口,除了内核之外,它什么都不存在……因此,当您重新启动时,它就消失了。
derobert 2013年

4

您还可以设置udev规则为网卡指定所需的名称:

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

当然,您不应告诉udev将其命名为eth0,eth1等。如果您只有wifi卡,Maple会怎么做?


我不了解Maple,但我看过其他“复制保护”软件,该软件检查您的MAC,仅查看称为eth0和的网络接口eth1。如果您的名字叫wlan0,那就太糟糕了(除非您知道如何重命名它或创建虚拟接口)。
吉尔(Gilles)'所以

如果您只有wifi卡,我只是觉得您不走运。我曾与一名代表讨论此事,但他们似乎并不是编写许可系统的人。我确实告诉他们,命名约定很可能会发生变化,并且他们应该研究修补整个过程以获得更好的支持。you are correct in your suspicions of the cause of the problem with the activation, particularly the issue with the Ethernet adapter name. Unfortunately, it is a limitation of the licensing software that it has to look for an "eth0" in order to find the Host ID of the system
SteenSchütt2013年

您是否有可能使用udev规则将您的NIC临时重命名为eth0,然后删除该规则并在激活后重新启动?我实际上不知道将您的卡ethX重命名是否总是真的,真的很糟糕,或者只是有时候。
rainbowgoblin

@rainbowgoblin不,每次启动时它都会与服务器进行检查,因此稍后它会再次开始向我显示“无法获取主机ID”错误。不管哪种方式,derobert的解决方案都是完美的,甚至都没有那么多解决方法。
SteenSchütt13年

2

我正在寻找一台根本没有有线网卡的计算机的非常相似的问题。此解决方案看起来不错: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链接设置dev eth0地址为de:ad:be:ef:ca:fe。


-1

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

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

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


我已经尝试过了,一切都弄糟了,我的适配器也消失了。
SteenSchütt2013年
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.