Kann ich eine virtuelle Ethernet-Schnittstelle namens eth0 erstellen?

24

Ich verwende Arch basierend auf dem Linux 3.10.5-1 Kernel. Das System verwendet die neuen de-facto-Namenskonventionen der Ethernet-Schnittstellen enp * s * und wlp * usw. Dies ist jedoch ein Problem, da meine Bildungseinrichtung ein Programm namens Maple 17 verwendet . Das Lizenzsystem von Maple hängt von der Existenz einer Schnittstelle mit dem Namen eth0 ab, da die MAC-Adresse abgerufen werden muss, um die Lizenz zu überprüfen. Es ist eine schlechte Lösung, aber ich muss sie umgehen.

Dies bedeutet, dass ich eine eth0-Schnittstelle mit einer beliebigen MAC-Adresse benötige (da ich eine neue Lizenzdatei für die neue MAC-Adresse abrufen kann), die nicht unbedingt funktionieren muss. In der Tat sollte es immer nur unten sein. Ich gehe davon aus, dass es mehrere Möglichkeiten gibt, um dieses Problem zu lösen, aber ich konnte zu keiner der Ideen etwas finden.

  • Adapter ohne Konnektivität erstellen
  • Erstellen eines Alias ​​für enp3s0 mit dem Namen eth0
  • Umbenennen von enp3s0 oder der Loopback-Schnittstelle.

Die Dinge, die ich finden konnte, betrafen nur die Umstellung auf die neueren Konventionen und auf ältere Versionen von udev. Sie haben sowieso nur an RHEL und SuSe gearbeitet. Ich habe es aber ohne Glück versucht. (persistent-net-names.rules und net-name-slot.rules, beide haben nur dazu geführt, dass meine eigentliche Schnittstelle nicht mehr funktioniert und meine WLAN-Schnittstelle verschwindet)

Steen Schütt
quelle

Antworten:

28

Sicher. Sie können ein tapGerät ziemlich einfach erstellen , entweder mit tunctl(von uml-utilities, zumindest unter 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)

Oder mit 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

Wahrscheinlich sollten Sie die zweite Methode ipbevorzugen , da dies das bevorzugte Netzwerk-Tool unter Linux ist, und wahrscheinlich haben Sie es bereits installiert.

In beiden Fällen wird das Tap-Gerät mit einer zufälligen lokalen MAC-Adresse erstellt. Sie können die MAC-Adresse wie gewohnt auf einen festen Wert einstellen.

derobert
quelle
1
Direkt am! Genau die Lösung, auf die ich gehofft habe, vielen Dank :) Es funktioniert wie ein Traum.
Steen Schütt
1
Ich habe ein Problem. Beim Versuch, den MAC mit zu ändern ip link set dev eth0 address 01:23:45:67:89:ab(während der Adapter natürlich ausgefallen ist) heißt es RTNETLINK answers: Cannot assign requested address. Ich habe auch versucht, Macchanger zu installieren, aber es wird ein ähnlicher Fehler zurückgegeben. Alles versucht als root.
Steen Schütt
3
@TimeSheep Das ist keine gültige MAC-Adresse. Dies ist insbesondere eine Multicast-Adresse. Versuchen Sie 00: 23: 45: 67: 89: ab. Das wird klappen Aber 02: 23: 45: 67: 89: ab wäre besser. Siehe z. B. en.wikipedia.org/wiki/MAC_address#Address_details
derobert
Ah danke. Ich habe völlig vergessen, dass es Anforderungen gibt, damit diese Dinge funktionieren. Ich nehme einfach das nächste, das es zufällig generiert, und verwende es. Gibt es eine Möglichkeit, das Gerät über Neustarts hinweg persistent zu halten, anstatt es neu zu erstellen und seine Adresse beim Neustart mit einem Skript zurückzusetzen?
Steen Schütt
@ TimeSheep Nicht wirklich. Es ist eine virtuelle Schnittstelle, die nur im Kopf des Kernels existiert. Wenn Sie also neu starten, ist sie verschwunden.
Derobert
4

Sie können auch udev-Regeln festlegen, um Ihren Netzwerkkarten die gewünschten Namen zu geben:

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

Natürlich sollten Sie udev NICHT anweisen, sie eth0, eth1 usw. zu nennen. Was macht Maple, wenn Sie nur eine WLAN-Karte haben?

Regenbogenkobold
quelle
Ich kenne Maple nicht, aber ich habe eine andere "kopiergeschützte" Software gesehen, die Ihren MAC überprüft und nur die als eth0und bezeichneten Netzwerkschnittstellen untersucht eth1. Wenn deins heißt wlan0, schade (es sei denn, Sie wissen, wie man es umbenennt oder eine virtuelle Schnittstelle erstellt).
Gilles 'SO- hör auf böse zu sein'
Wenn Sie nur eine WLAN-Karte haben, haben Sie vermutlich Pech. Ich habe mit einem Repräsentanten darüber gesprochen, aber sie scheinen nicht diejenigen zu sein, die das Lizenzsystem schreiben. Ich habe ihnen gesagt, dass sich die Namenskonventionen höchstwahrscheinlich ändern und dass sie versuchen sollten, das Ganze für eine bessere Unterstützung zu patchen. 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
Steen Schütt
Gibt es eine Möglichkeit, Ihre Netzwerkkarte mithilfe von udev-Regeln vorübergehend in eth0 umzubenennen, diese Regel dann zu entfernen und nach der Aktivierung neu zu starten? Ich weiß nicht wirklich, ob es immer wirklich, wirklich schlecht ist, deine Karte ethX umzubenennen, oder nur manchmal.
Regenbogengoblin
@rainbowgoblin Nein, es wird bei jedem Start des Servers überprüft, sodass mir später nur der Fehler "Host-ID konnte nicht ermittelt werden" angezeigt wird. In beiden Fällen war die Lösung von derobert perfekt und es scheint nicht einmal eine Umgehung zu sein.
Steen Schütt
2

Ich sehe ein sehr ähnliches Problem mit einem Computer ohne Kabel-Netzwerkkarte. Diese Lösung sieht gut aus: http://jms.id.au/wiki/FakeEth0

Grundsätzlich besteht die Idee darin, einige Dateien zu erstellen / zu ändern, um eine Dummy-Schnittstelle zu erstellen:

In /etc/modules-load.d/dummy.confadd:

# load dummy interface module
dummy

In /etc/udev/rules.d/70-persistent-net.rulesadd:

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

Dann dazu /etc/network/interfaces:

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

Sie sollten jetzt in der Lage sein, eine modprobe dummyAktion auszuführen und zu überprüfen, ob die Schnittstelle korrekt eingerichtet wurde. Möglicherweise wird die Mac-Adresse nicht festgelegt, wenn Sie modprobe verwenden, anstatt den Computer neu zu starten. In diesem Fall muss der IP-Link dev eth0 address de: ad: be: ef: ca: fe setzen.

alex.forencich
quelle
-1

Einfachste Lösung - obwohl dies nur auf Systemen mit einer Ethernet-Karte funktioniert:

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

Arch Linux verwendet "vorhersehbare Namen". Das schaltet das aus.

Nick ODell
quelle
Das habe ich schon versucht, es hat einfach alles durcheinander gebracht und meine Adapter sind verschwunden.
Steen Schütt