¿Cómo podemos crear múltiples interfaces ficticias en Linux?


11

Para crear una interfaz ficticia falsa de Ethernet En Linux, primero inicializamos el controlador de interfaz ficticia utilizando el siguiente comando: / sbin / modprobe dummy .
Luego asignamos alias de interfaz Ethernet al controlador ficticio que acabamos de inicializar anteriormente.

Pero da el siguiente error fatal que dice: FATAL: Módulo ficticio no encontrado.

Además, en la ruta cd / sys / devices / virtual / net # , podemos ver que hay interfaces virtuales presentes con los siguientes nombres:
dummy0 / lo / sit0 / tunl0 /

ifconfig -a

dummy0:   Link encap:Ethernet  HWaddr aa:3a:a6:cd:91:2b    
          BROADCAST NOARP  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:0   
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo:     Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0  
          inet6 addr: ::1/128 Scope:Host  
          UP LOOPBACK RUNNING  MTU:16436  Metric:1  
          RX packets:111 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:111 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0   
          RX bytes:8303 (8.1 KiB)  TX bytes:8303 (8.1 KiB)

sit0:      Link encap:UNSPEC  HWaddr 00-00-00-00-FF-00-00-00-00-00-00-00-00-00-00-00    
          NOARP  MTU:1480  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:0   
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tunl0:  Link encap:IPIP Tunnel  HWaddr   
          NOARP  MTU:1480  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:0   
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  

Entonces, el comando modprobe no puede cargar el módulo del núcleo.
¿Cómo podemos cargar un módulo de kernel usando modprobe o insmod para inicializar un controlador de interfaz ficticio?
¿Podemos crear múltiples interfaces ficticias en un solo módulo cargado?


Cuando habló de la interfaz virtual Ethernet, no necesitaba cargar ningún módulo ficticio. Puede crearlo con el comando ifconfig como eth0: 1, eth0: 2, etc.
supriady

Puede configurar diferentes direcciones IP, subredes y puertas de enlace en la interfaz virtual Ethernet utilizando el comando ifconfig. Simplemente agréguelo en rc.local y cargue en el arranque. No necesitaba crear ningún archivo de configuración de interfaz virtual de Ethernet.
Sorpresa

1
@supriady No estoy preguntando sobre las interfaces virtuales. Sé que podemos asignar ip virtuales a una interfaz usando ifconfig como eth0: 1 y así sucesivamente, pero aquí la dirección Mac h / w será la misma para cada interfaz virtual creada. Mi pregunta es cómo crear múltiples interfaces ficticias como dummy0 que se muestra arriba con una dirección Mac H / w diferente a las interfaces reales.
Kushal

Solo para estar seguro, te das cuenta de que estas interfaces no serán visibles desde fuera de la máquina, ¿verdad?
Julie Pelletier

Agregue a la pregunta la salida COMPLETA del modprobeerror y la salida deuname -r
Rui F Ribeiro

Respuestas:


13

La forma habitual de agregar varias interfaces ficticias es usar iproute2 :

# ip link add dummy0 type dummy
# ip link add dummy1 type dummy
# ip link list
...
5: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 22:4e:84:26:c5:98 brd ff:ff:ff:ff:ff:ff
6: dummy1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 9e:3e:48:b5:d5:1d brd ff:ff:ff:ff:ff:ff

Pero el mensaje de error FATAL: el módulo ficticio no encontrado indica que puede tener un núcleo donde el módulo de interfaz ficticio no está habilitado, así que asegúrese de verificar la configuración del núcleo y recompile el núcleo si es necesario.


"el mensaje de error FATAL: El módulo ficticio no encontrado indica que puede tener un núcleo donde el módulo de interfaz ficticio no está habilitado" => No, puede significar que el controlador ficticio no se compiló como un módulo, sino que se agregó directamente al núcleo . Aparentemente dummy0existe una interfaz en la máquina del OP. Aparte de eso, su respuesta está bien.
xhienne

1
@xhienne depende de su versión de modprobe, pero las versiones recientes de kmod, al menos, sabrán sobre las incorporaciones. Intentalo. Por ejemplo modprobe unixy modprobe -r unix.
sourcejedi

7

Para crear interfaces ficticias en el arranque, aconsejo agregar a /etc/modules

dummy

Tenga en cuenta que el módulo dummysolo permite dos interfaces ficticias por defecto antes del kernel 4.4.x (se debe verificar la versión correcta).

Si necesita más, también debe crear una /etc/modprobe.d/localo /etc/modprobe.d/dummy.confdefinir el parámetro numdummiescon el número de interfaces ficticias que desee:

options dummy numdummies=4 

Según los comentarios de @Feuermurmel, en los núcleos más nuevos, agrega más interfaces ficticias, además de las dos creadas de forma predeterminada, utilizando el comando:

sudo ip link add dummyX type dummy

Al menos con el kernel 4.4.0, se pueden agregar interfaces ficticias adicionales con ip link add dumdum type dummy.
Feuermurmel

@Feuermurmel ¿Tienes una idea si funciona para agregar más de 2?
Rui F Ribeiro

Definitivamente lo hace. Prueba por ti mismo:for i in {0..100}; do ip link add blubb-$i type dummy; done
Feuermurmel

@Feuermurmel Buenas noticias, gracias por la sugerencia. Es posible que desee agregarlo como una respuesta adicional. OMI ambos son pertinentes ya que todavía hay muchos dispositivos iOT que están atascados en versiones de kernel inferiores.
Rui F Ribeiro

Por curiosidad: ¿son estos dispositivos, una vez creados, persistentes durante los reinicios, o tienes que recrearlos después de cada inicio del sistema?
Robidu
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.