Comment créer plusieurs interfaces factices sous Linux?

11

Pour créer une fausse interface Ethernet factice Sous Linux, nous initialisons d'abord le pilote d'interface factice à l'aide de la commande ci-dessous: / sbin / modprobe dummy .
Ensuite, nous attribuons un alias d'interface Ethernet au pilote factice que nous venons d'initialiser ci-dessus.

Mais cela donne l'erreur fatale suivante disant: FATAL: Module factice introuvable.

De plus, sur le chemin cd / sys / devices / virtual / net # , nous pouvons voir qu'il y a des interfaces virtuelles présentes sous les noms suivants:
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)  

Ainsi, la commande modprobe n'est pas en mesure de charger le module du noyau.
Comment pouvons-nous charger un module du noyau en utilisant modprobe ou insmod pour initialiser un pilote d'interface factice?
Peut-on créer plusieurs interfaces factices sur un seul module chargé?

Kushal
la source
Lorsque vous avez parlé de l'interface virtuelle Ethernet, vous n'avez pas eu besoin de charger de module factice. Vous pouvez le créer en utilisant la commande ifconfig comme eth0: 1, eth0: 2, etc.
supriady
Vous pouvez définir différentes adresses IP, sous-réseaux et passerelles sur l'interface virtuelle Ethernet à l'aide de la commande ifconfig. Il suffit de l'ajouter sur rc.local et de le charger au démarrage. Vous n'aviez pas besoin de créer de fichiers de configuration d'interface virtuelle Ethernet.
supriady
1
@supriady Je ne pose pas de questions sur les interfaces virtuelles. Je sais que nous pouvons attribuer des adresses IP virtuelles à une interface en utilisant ifconfig comme eth0: 1 et ainsi de suite, mais ici, l'adresse Mac H / W sera la même pour chaque interface virtuelle créée. Ma question est de savoir comment créer plusieurs interfaces factices comme dummy0 illustré ci-dessus avec une adresse Mac H / W différente de celle des interfaces réelles.
Kushal
Juste pour être sûr, vous vous rendez compte que ces interfaces ne seront pas visibles de l'extérieur de la machine, non?
Julie Pelletier
Veuillez ajouter à la question la sortie COMPLÈTE de l' modprobeerreur et la sortie deuname -r
Rui F Ribeiro

Réponses:

13

La manière habituelle d'ajouter plusieurs interfaces factices est d'utiliser 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

Mais le message d'erreur FATAL: Module dummy not found indique que vous pouvez avoir un noyau où le module d'interface factice n'est pas activé, alors assurez-vous de vérifier la configuration de votre noyau et recompilez le noyau si nécessaire.

dirkt
la source
"le message d'erreur FATAL: Module factice non trouvé indique que vous pouvez avoir un noyau où le module d'interface factice n'est pas activé" => Non, cela peut signifier que le pilote factice n'a pas été construit en tant que module, mais directement ajouté au noyau à la place . Apparemment, une dummy0interface existe sur la machine de l'OP. À part cela, votre réponse est OK.
xhienne
1
@xhienne dépend de votre version de modprobe, mais les versions récentes de kmod, au moins, connaîtront les builtins. Essayez-le. Par exemple modprobe unixet modprobe -r unix.
sourcejedi
7

Pour créer des interfaces factices au démarrage, je conseille d'ajouter à /etc/modules

dummy

Attention le module dummyn'autorise par défaut que deux interfaces factices avant le noyau 4.4.x (version correcte à vérifier).

Si vous avez besoin de plus, vous devez également créer un /etc/modprobe.d/localou /etc/modprobe.d/dummy.confdéfinir le paramètre numdummiesavec le nombre d'interfaces factices que vous désirez:

options dummy numdummies=4 

Selon les commentaires @Feuermurmel, dans les noyaux plus récents, vous ajoutez d'autres interfaces factices, en plus des deux créées par défaut, à l'aide de la commande:

sudo ip link add dummyX type dummy
Rui F Ribeiro
la source
Au moins avec le noyau 4.4.0, des interfaces factices supplémentaires peuvent être ajoutées avec ip link add dumdum type dummy.
Feuermurmel
@Feuermurmel Avez-vous une idée si cela fonctionne pour en ajouter plus de 2?
Rui F Ribeiro
C'est certainement le cas. Testez par vous-même:for i in {0..100}; do ip link add blubb-$i type dummy; done
Feuermurmel
@Feuermurmel Bonne nouvelle, merci pour l'astuce. Vous voudrez peut-être l'ajouter comme réponse supplémentaire. Les deux IMO sont pertinents car il y a encore beaucoup de périphériques iOT qui sont bloqués dans les versions inférieures du noyau.
Rui F Ribeiro
Par curiosité: ces appareils, une fois créés, sont-ils persistants lors des redémarrages, ou devez-vous les recréer après chaque démarrage du système?
Robidu