web-dev-qa-db-fra.com

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

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 y a 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)

25
Steen Schütt

Sûr. Vous pouvez créer un périphérique tap assez facilement, soit avec tunctl (à partir d'utilitaires uml, 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, car ip est l'outil 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.

28
derobert

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?

4
rainbowgoblin

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/FakeEth

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

Dans /etc/modules-load.d/dummy.conf ajouter:

# load dummy interface module
dummy

Dans /etc/udev/rules.d/70-persistent-net.rules ajouter:

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

Puis dans /etc/network/interfaces ajouter:

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

Vous devriez pouvoir faire un modprobe dummy à ce stade et vérifiez 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.

2
alex.forencich