¿Puedo crear una interfaz virtual de ethernet llamada eth0?

24

Estoy ejecutando Arch basado en el núcleo Linux 3.10.5-1. El sistema utiliza las nuevas convenciones de nomenclatura de facto de las interfaces de ethernet enp * s * y wlp * etc. Sin embargo, este es un problema, ya que mi institución educativa está utilizando un programa llamado Maple 17 . El sistema de licencias de Maple depende de la existencia de una interfaz llamada eth0 porque debe recuperar su dirección MAC para verificar la licencia. Es una mala solución, pero tengo que solucionarlo.

Esto significa que necesitaré una interfaz eth0 con cualquier dirección MAC (ya que puedo recuperar un nuevo archivo de licencia para la nueva dirección MAC) que no necesariamente tiene que funcionar. De hecho, debería estar inactivo en todo momento. Creo que hay varias formas de intentar resolver este problema, pero no he podido encontrar nada sobre ninguna de las ideas.

  • Crear un adaptador sin conectividad
  • Crear un alias para enp3s0 llamado eth0
  • Renombrando enp3s0 o la interfaz loopback.

Las cosas que pude encontrar solo abarcaban el cambio a las convenciones más nuevas y en versiones anteriores de udev. Solo trabajaron en RHEL y SuSe de todos modos. Aunque lo intenté sin suerte. (persistent-net-names.rules y net-name-slot.rules, ambos hicieron que mi interfaz real dejara de funcionar y mi interfaz wlan desapareciera)

Steen Schütt
fuente

Respuestas:

28

Seguro. Puede crear un tapdispositivo con bastante facilidad, ya sea con tunctl(desde uml-utilities, al menos en 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)

O con 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

Probablemente debería preferir el segundo método, como ipes la herramienta de red preferida en Linux, y es probable que ya lo tenga instalado.

Además, ambos están creando el dispositivo de tap con un MAC local aleatorio, supongo, puede configurar el MAC a un valor fijo en cualquiera de las formas normales.

derobert
fuente
1
¡Tocar el asunto exacto! Exactamente la solución que esperaba, muchas gracias :) Funciona como un sueño.
Steen Schütt
1
Tengo un problema. Al intentar cambiar el MAC con ip link set dev eth0 address 01:23:45:67:89:ab(mientras el adaptador está inactivo, por supuesto) dice RTNETLINK answers: Cannot assign requested address. También intenté instalar macchanger, pero devuelve un error similar. Todo lo intentado como root.
Steen Schütt
3
@TimeSheep Esa no es una dirección MAC válida. En particular, esa es una dirección de multidifusión. Intenta 00: 23: 45: 67: 89: ab. Eso funcionará Pero 02: 23: 45: 67: 89: ab sería mejor. Véase, por ejemplo, en.wikipedia.org/wiki/MAC_address#Address_details
derobert el
Ah gracias. Olvidé por completo que hay requisitos para que esas cosas funcionen. Solo tomaré el siguiente que genere al azar y lo usaré. ¿Hay alguna manera de mantener el dispositivo persistente durante los reinicios en lugar de recrearlo y volver a configurar su dirección en el arranque con un script?
Steen Schütt
@TimeSheep No realmente. Es una interfaz virtual, no existe en ningún otro lado que no sea la mente del núcleo ... así que cuando reinicia, desaparece.
derobert
4

También puede establecer reglas de udev para dar a sus tarjetas de red los nombres que desee:

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

Por supuesto, NO debe decirle a udev que los llame eth0, eth1, etc. ¿Qué hace Maple si solo tiene una tarjeta wifi?

Rainbowgoblin
fuente
No sé sobre Maple, pero he visto otro software "protegido contra copia" que verifica su MAC y solo mira las interfaces de red llamadas eth0y eth1. Si se llama al suyo wlan0, demasiado malo (a menos que sepa cómo cambiarle el nombre o crear una interfaz virtual).
Gilles 'SO- deja de ser malvado'
Si solo tiene una tarjeta wifi, creo que no tendrá suerte. Hablé con un representante al respecto, pero no parecen ser los que escriben el sistema de licencias. Les dije que lo más probable es que las convenciones de nomenclatura cambien y que deberían buscar parchear todo para obtener un mejor soporte. 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
¿Hay alguna posibilidad de que pueda usar las reglas de udev para cambiar temporalmente el nombre de su NIC a eth0, luego eliminar esa regla y reiniciar después de la activación? En realidad no sé si siempre es realmente malo cambiar el nombre de su tarjeta ethX, o solo a veces.
rainbowgoblin
@rainbowgoblin No, verifica con el servidor cada vez que se inicia, por lo que comenzaría a darme el error "No se pudo obtener la identificación del host" más tarde. De cualquier manera, la solución de derobert fue perfecta y ni siquiera parece una solución alternativa.
Steen Schütt
2

Estoy viendo un problema muy similar con una computadora sin tarjeta de red cableada. Esta solución parece buena: http://jms.id.au/wiki/FakeEth0

Básicamente, la idea es crear / modificar algunos archivos para crear una interfaz ficticia:

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

# load dummy interface module
dummy

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

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

Luego en /etc/network/interfacesagregar:

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

Debería poder hacer una modprobe dummyen este punto y verificar para asegurarse de que la interfaz se configuró correctamente. Es posible que no establezca la dirección mac si usa modprobe en lugar de reiniciar; en ese caso, haga ip link set dev eth0 address de: ad: be: ef: ca: fe.

alex.forencich
fuente
-1

La solución más simple, aunque esto solo funciona en sistemas con una tarjeta ethernet:

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

Arch Linux usa "nombres predecibles". Esto apaga eso.

Nick ODell
fuente
Ya lo intenté, simplemente lo estropeó todo y mis adaptadores desaparecieron.
Steen Schütt