Jak możemy stworzyć wiele fałszywych interfejsów w systemie Linux?

11

Aby utworzyć fałszywy interfejs fikcyjny Ethernet W systemie Linux najpierw inicjujemy sterownik interfejsu fikcyjnego za pomocą poniższej komendy: / sbin / modprobe dummy .
Następnie przypisujemy alias interfejsu Ethernet do Dummy Driver, który właśnie zainicjowaliśmy powyżej.

Daje jednak następujący błąd krytyczny: FATAL: Nie znaleziono manekina modułu.

Ponadto na ścieżce cd / sys / devices / virtual / net # możemy zobaczyć, że istnieją wirtualne interfejsy o następujących nazwach:
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)  

Tak więc komenda modprobe nie jest w stanie załadować modułu jądra.
Jak możemy załadować moduł jądra za pomocą modprobe lub insmod w celu zainicjowania fikcyjnego sterownika interfejsu?
Czy możemy stworzyć wiele fałszywych interfejsów w jednym załadowanym module?

Kushal
źródło
Gdy mówiłeś o wirtualnym interfejsie Ethernet, nie trzeba było ładować żadnego fałszywego modułu. Możesz go utworzyć za pomocą polecenia ifconfig, takiego jak eth0: 1, eth0: 2 itd.
supriady
Możesz ustawić inny adres IP, podsieć i bramę w wirtualnym interfejsie Ethernet za pomocą polecenia ifconfig. Po prostu dodaj go do rc.local i załaduj na boot. Nie trzeba tworzyć żadnych plików konfiguracyjnych interfejsu wirtualnego Ethernet.
supriady
1
@supriady Nie pytam o interfejsy wirtualne. Wiem, że możemy przypisać wirtualne IP do interfejsu za pomocą ifconfig, takiego jak eth0: 1 itd., Ale tutaj adres sprzętowy Mac będzie taki sam dla każdego utworzonego interfejsu wirtualnego. Moje pytanie brzmi: jak utworzyć wiele interfejsów fikcyjnych, takich jak manekin0 pokazany powyżej, posiadających inny adres sprzętowy Maca niż rzeczywiste interfejsy.
Kushal
Dla pewności zdajesz sobie sprawę, że te interfejsy nie będą widoczne z zewnątrz maszyny, prawda?
Julie Pelletier,
Dodaj do pytania PEŁNE wyjście modprobebłędu i wyjścieuname -r
Rui F Ribeiro

Odpowiedzi:

13

Zwykłym sposobem dodawania kilku fałszywych interfejsów jest użycie 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

Ale komunikat o błędzie FATAL: Nie znaleziono manekina modułu oznacza, że ​​możesz mieć jądro, w którym moduł interfejsu manekina nie jest włączony, więc sprawdź konfigurację jądra i, jeśli to konieczne, skompiluj jądro.

reż
źródło
„komunikat o błędzie FATAL: Nie znaleziono manekina modułu oznacza, że ​​możesz mieć jądro, w którym moduł interfejsu manekina nie jest włączony” => Nie, może to oznaczać, że sterownik manekina nie został zbudowany jako moduł, ale bezpośrednio dodany do jądra . Najwyraźniej dummy0istnieje interfejs na maszynie OP. Poza tym twoja odpowiedź jest OK.
xhienne
1
@xhienne zależy od twojej wersji modprobe, ale najnowsze wersje kmodprzynajmniej będą wiedzieć o wbudowanych. Spróbuj. Np modprobe unixa modprobe -r unix.
sourcejedi
7

Aby utworzyć atrapy interfejsów podczas rozruchu, radzę dodać do /etc/modules

dummy

Uwaga: moduł dummydomyślnie dopuszcza tylko dwa fałszywe interfejsy przed jądrem 4.4.x (poprawna wersja do zweryfikowania).

Jeśli potrzebujesz więcej, musisz również utworzyć parametr a /etc/modprobe.d/locallub /etc/modprobe.d/dummy.confzdefiniować parametr numdummiesz liczbą wymaganych interfejsów:

options dummy numdummies=4 

Zgodnie z komentarzami @Feuermurmel w nowszych jądrach dodajesz więcej interfejsów zastępczych, oprócz dwóch domyślnie utworzonych, za pomocą polecenia:

sudo ip link add dummyX type dummy
Rui F. Ribeiro
źródło
Przynajmniej z jądrem 4.4.0 można dodawać dodatkowe interfejsy fikcyjne ip link add dumdum type dummy.
Feuermurmel
@ Feuermurmel Czy masz pomysł, jeśli można dodać więcej niż 2?
Rui F Ribeiro
Zdecydowanie tak. Sprawdź sam:for i in {0..100}; do ip link add blubb-$i type dummy; done
Feuermurmel,
@ Feuermurmel Dobra wiadomość, dziękuję za podpowiedź. Możesz dodać go jako dodatkową odpowiedź. Oba IMO są istotne, ponieważ wciąż istnieje wiele urządzeń iOT, które utknęły w niższych wersjach jądra.
Rui F Ribeiro
Z ciekawości: czy te urządzenia, raz utworzone, są trwałe po ponownym uruchomieniu, czy też trzeba je ponownie utworzyć po każdym uruchomieniu systemu?
Robidu