Wie können wir unter Linux mehrere Dummy-Schnittstellen erstellen?


11

So erstellen Sie eine gefälschte Ethernet-Dummy-Schnittstelle Unter Linux initialisieren wir zuerst den Dummy-Schnittstellentreiber mit dem folgenden Befehl: / sbin / modprobe Dummy .
Dann weisen wir dem oben initialisierten Dummy-Treiber einen Alias ​​für die Ethernet-Schnittstelle zu.

Es wird jedoch der folgende schwerwiegende Fehler angezeigt: FATAL: Modul-Dummy nicht gefunden.

Unter dem Pfad cd / sys / device / virtual / net # können wir außerdem sehen, dass virtuelle Schnittstellen mit den folgenden Namen vorhanden sind:
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)  

Daher kann der Befehl modprobe das Kernelmodul nicht laden.
Wie können wir ein Kernelmodul mit modprobe oder insmod laden, um einen Dummy-Schnittstellentreiber zu initialisieren?
Können wir mehrere Dummy-Schnittstellen auf einem einzelnen geladenen Modul erstellen?


Wenn Sie über die virtuelle Ethernet-Schnittstelle gesprochen haben. Sie mussten kein Dummy-Modul laden. Sie können es mit dem Befehl ifconfig wie eth0: 1, eth0: 2 usw.
— erstellen

Mit dem Befehl ifconfig können Sie unterschiedliche IP-Adressen, Subnetze und Gateways auf der virtuellen Ethernet-Schnittstelle festlegen. Fügen Sie es einfach auf rc.local hinzu und laden Sie es auf den Boot. Sie mussten keine Konfigurationsdateien für die virtuelle Ethernet-Schnittstelle erstellen.
— Supriady

1
@supriady Ich frage nicht nach virtuellen Schnittstellen. Ich weiß, dass wir einer Schnittstelle mit ifconfig wie eth0: 1 usw. virtuelle IP-Adressen zuweisen können, aber hier ist die Mac-H / W-Adresse für jede erstellte virtuelle Schnittstelle gleich. Meine Frage ist, wie man mehrere Dummy-Schnittstellen wie den oben gezeigten Dummy0 mit einer anderen H / W-Mac-Adresse als die realen Schnittstellen erstellt.
— Kushal

Nur um sicherzugehen, dass diese Schnittstellen von außerhalb der Maschine nicht sichtbar sind, oder?
— Julie Pelletier

Bitte fügen Sie der Frage die vollständige Ausgabe des modprobeFehlers und die Ausgabe vonuname -r
— Rui F Ribeiro

Antworten:


13

Die übliche Methode zum Hinzufügen mehrerer Dummy-Schnittstellen ist die Verwendung von 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

Die Fehlermeldung FATAL: Modul-Dummy nicht gefunden zeigt jedoch an, dass Sie möglicherweise einen Kernel haben, in dem das Dummy-Schnittstellenmodul nicht aktiviert ist. Überprüfen Sie daher unbedingt Ihre Kernelkonfiguration und kompilieren Sie den Kernel gegebenenfalls neu.


"Die Fehlermeldung FATAL: Modul-Dummy nicht gefunden zeigt an, dass Sie möglicherweise einen Kernel haben, in dem das Dummy-Schnittstellenmodul nicht aktiviert ist." => Nein, dies kann bedeuten, dass der Dummy-Treiber nicht als Modul erstellt, sondern direkt zum Kernel hinzugefügt wurde . Anscheinend dummy0ist auf dem OP-Computer eine Schnittstelle vorhanden. Ansonsten ist Ihre Antwort in Ordnung.
— Xhienne

1
@xhienne hängt von Ihrer Version von modprobe ab, aber aktuelle Versionen von kmodzumindest kennen sich mit Builtins aus. Versuch es. ZB modprobe unixund modprobe -r unix.
— Sourcejedi

7

Um beim Booten Dummy-Schnittstellen zu erstellen, empfehle ich das Hinzufügen zu /etc/modules

dummy

Beachten Sie, dass das Modul dummystandardmäßig nur zwei Dummy-Schnittstellen vor Kernel 4.4.x zulässt (korrekte Version muss überprüft werden).

Wenn Sie mehr benötigen, müssen Sie entweder einen Parameter erstellen /etc/modprobe.d/localoder /etc/modprobe.d/dummy.confden Parameter numdummiesmit der Anzahl der gewünschten Dummy-Schnittstellen definieren:

options dummy numdummies=4 

Gemäß den Kommentaren von @Feuermurmel fügen Sie in neueren Kerneln neben den beiden standardmäßig mit dem folgenden Befehl weitere Dummy-Schnittstellen hinzu:

sudo ip link add dummyX type dummy

Zumindest mit dem Kernel 4.4.0 können zusätzliche Dummy-Schnittstellen hinzugefügt werden ip link add dumdum type dummy.
— Feuermurmel

@Feuermurmel Hast du eine Idee, wenn es funktioniert, mehr als 2 hinzuzufügen?
— Rui F Ribeiro

Das tut es definitiv. Testen Sie selbst:for i in {0..100}; do ip link add blubb-$i type dummy; done
— Feuermurmel

@Feuermurmel Gute Nachrichten, danke für den Tipp. Vielleicht möchten Sie es als zusätzliche Antwort hinzufügen. IMO sind beide relevant, da es immer noch viele iOT-Geräte gibt, die in Versionen mit niedrigerem Kernel stecken bleiben.
— Rui F Ribeiro

Aus Neugier: Sind diese Geräte nach ihrer Erstellung über Neustarts hinweg beständig oder müssen Sie sie nach jedem Systemstart neu erstellen?
— Robidu
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.