Puis-je créer une interface Ethernet virtuelle nommée eth0?

24

J'utilise Arch basé sur le noyau Linux 3.10.5-1. Le système utilise les nouvelles conventions de dénomination de facto des interfaces Ethernet enp * s * et wlp * etc. C'est un problème cependant, car mon établissement d'enseignement utilise un programme appelé Maple 17 . Le système de licence de Maple dépend de l'existence d'une interface nommée eth0 car il doit en récupérer l'adresse MAC pour vérifier la licence. C'est une mauvaise solution, mais je dois y remédier.

Cela signifie que j'aurai besoin d'une interface eth0 avec n'importe quelle adresse MAC (car je peux récupérer un nouveau fichier de licence pour la nouvelle adresse MAC) qui ne doit pas nécessairement fonctionner. En fait, il devrait être à tout moment en panne. Je pense qu'il existe plusieurs façons de tenter de résoudre ce problème, mais je n'ai rien trouvé sur aucune des idées.

  • Création d'un adaptateur sans connectivité
  • Création d'un alias pour enp3s0 nommé eth0
  • Renommer enp3s0 ou l'interface de bouclage.

Les choses que j'ai pu trouver ne couvraient que la modification des conventions plus récentes et des anciennes versions d'udev. De toute façon, ils n'ont travaillé que sur RHEL et SuSe. Je l'ai essayé sans chance cependant. (persistent-net-names.rules et net-name-slot.rules, les deux ont juste fait cesser de fonctionner mon interface réelle et mon interface wlan a disparu)

Steen Schütt
la source

Réponses:

28

Sûr. Vous pouvez créer un tappériphérique assez facilement, soit avec tunctl(depuis uml-utilities, au moins sur 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)

Ou avec 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

Vous devriez probablement préférer la deuxième méthode, tout comme l' ipoutil réseau préféré sous Linux, et vous l'avez probablement déjà installé.

En outre, les deux créent le périphérique de prise avec un MAC local aléatoire, je suppose, vous pouvez définir le MAC sur une valeur fixe de l'une des manières normales.

derobert
la source
1
Tout de suite! Exactement la solution que j'espérais, merci beaucoup :) Cela fonctionne comme un rêve.
Steen Schütt
1
J'ai un problème. Lorsque vous essayez de changer le MAC avec ip link set dev eth0 address 01:23:45:67:89:ab(alors que l'adaptateur est en panne bien sûr), il dit RTNETLINK answers: Cannot assign requested address. J'ai également essayé d'installer macchanger, mais cela renvoie une erreur similaire. Tout a essayé en tant que root.
Steen Schütt
3
@TimeSheep Ce n'est pas une adresse MAC valide. En particulier, c'est une adresse de multidiffusion. Essayez 00: 23: 45: 67: 89: ab. Ça va marcher. Mais 02: 23: 45: 67: 89: ab serait mieux. Voir, par exemple, en.wikipedia.org/wiki/MAC_address#Address_details
derobert
Ah merci. J'ai complètement oublié qu'il y a des exigences pour que ces choses fonctionnent. Je vais juste saisir le suivant qu'il génère aléatoirement et l'utiliser. Existe-t-il un moyen de garder le périphérique persistant pendant les redémarrages plutôt que de le recréer et de redéfinir son adresse au démarrage avec un script?
Steen Schütt
@TimeSheep Pas vraiment. C'est une interface virtuelle, elle n'existe nulle part ailleurs que dans l'esprit du noyau ... donc quand vous redémarrez, c'est parti.
derobert
4

Vous pouvez également définir des règles udev pour donner à vos cartes réseau les noms que vous souhaitez:

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

Bien sûr, vous ne devriez PAS dire à udev de les appeler eth0, eth1, etc. Que fait Maple si vous ne disposez que d'une carte wifi?

arc-en-ciel
la source
Je ne connais pas Maple, mais j'ai vu d'autres logiciels «protégés contre la copie» qui vérifient votre MAC et ne regardent que les interfaces réseau appelées eth0et eth1. Si le vôtre est appelé wlan0, tant pis (sauf si vous savez comment le renommer ou créer une interface virtuelle).
Gilles 'SO- arrête d'être méchant'
Si vous ne disposez que d'une carte wifi, je pense que vous n'auriez pas de chance. J'en ai parlé avec un représentant, mais ils ne semblent pas être ceux qui écrivent le système de licence. Je leur ai dit que les conventions de dénomination sont très probablement en train de changer et qu'ils devraient chercher à corriger le tout pour un meilleur support. 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 du
Y a-t-il une chance que vous puissiez utiliser les règles udev pour renommer temporairement votre carte réseau en eth0, puis supprimer cette règle et redémarrer après l'activation? Je ne sais pas vraiment si c'est toujours vraiment, vraiment mauvais de renommer votre carte ethX, ou tout simplement parfois.
rainbowgoblin
@rainbowgoblin Non, il vérifie avec le serveur à chaque démarrage, il recommencera donc plus tard l'erreur "Impossible d'obtenir l'ID d'hôte". Dans les deux cas, la solution de Derobert était parfaite et ne ressemble même pas à une telle solution.
Steen Schütt
2

Je regarde un problème très similaire avec un ordinateur sans carte réseau filaire. Cette solution ressemble à une bonne: http://jms.id.au/wiki/FakeEth0

Fondamentalement, l'idée est de créer / modifier quelques fichiers pour créer une interface factice:

En /etc/modules-load.d/dummy.confplus:

# load dummy interface module
dummy

En /etc/udev/rules.d/70-persistent-net.rulesplus:

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

Puis en /etc/network/interfacesplus:

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

Vous devriez pouvoir faire un modprobe dummyà ce stade et vérifier que l'interface a été configurée correctement. Il peut ne pas définir l'adresse mac si vous utilisez modprobe au lieu de redémarrer; dans ce cas, ip link set dev eth0 adresse de: ad: be: ef: ca: fe.

alex.forencich
la source
-1

Solution la plus simple - bien que cela ne fonctionne que sur les systèmes avec une seule carte Ethernet:

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

Arch Linux utilise une «dénomination prévisible». Cela éteint cela.

Nick ODell
la source
J'ai déjà essayé ça, ça a tout gâché et mes adaptateurs ont disparu.
Steen Schütt