Come possiamo creare più interfacce fittizie su Linux?


11

Per creare un'interfaccia fittizia Ethernet falsa Su Linux inizializziamo innanzitutto il driver dell'interfaccia fittizia utilizzando il comando seguente: / sbin / modprobe dummy .
Quindi assegniamo l'alias dell'interfaccia Ethernet al driver fittizio appena inizializzato sopra.

Ma dà il seguente errore fatale che dice: FATAL: modulo fittizio non trovato.

Inoltre, nel percorso cd / sys / devices / virtual / net # , possiamo vedere che ci sono interfacce virtuali presenti con i seguenti nomi:
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)  

Quindi, il comando modprobe non è in grado di caricare il modulo del kernel.
Come possiamo caricare un modulo kernel usando modprobe o insmod per inizializzare un driver di interfaccia fittizio?
Possiamo creare più interfacce fittizie su un singolo modulo caricato?


Quando hai parlato dell'interfaccia virtuale Ethernet, non è stato necessario caricare alcun modulo fittizio. Puoi crearlo usando il comando ifconfig come eth0: 1, eth0: 2, ecc.
Supriady

È possibile impostare diversi indirizzi IP, sottoreti e gateway sull'interfaccia virtuale Ethernet utilizzando il comando ifconfig. Basta aggiungerlo su rc.local e caricato all'avvio. Non è necessario creare alcun file di configurazione dell'interfaccia virtuale Ethernet.
Sopravvissuto il

1
@supriady Non sto chiedendo delle interfacce virtuali. So che possiamo assegnare ip virtuali a un'interfaccia usando ifconfig come eth0: 1 e così via, ma qui l'indirizzo Mac h / w sarà lo stesso per ogni interfaccia virtuale creata. La mia domanda è come creare più interfacce fittizie come dummy0 mostrato sopra con un indirizzo Mac H / w diverso rispetto alle interfacce reali.
Kushal,

Giusto per essere sicuro, ti rendi conto che queste interfacce non saranno visibili dall'esterno della macchina, giusto?
Julie Pelletier,

Aggiungi alla domanda l'output COMPLETO modprobedell'errore e l'output diuname -r
Rui F Ribeiro

Risposte:


13

Il solito modo per aggiungere diverse interfacce fittizie è usare 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

Ma il messaggio di errore FATAL: Modulo fittizio non trovato indica che potresti avere un kernel in cui il modulo interfaccia fittizio non è abilitato, quindi assicurati di controllare la configurazione del kernel e ricompilare il kernel se necessario.


"il messaggio di errore FATAL: Modulo fittizio non trovato indica che potresti avere un kernel in cui il modulo interfaccia fittizio non è abilitato" => No, potrebbe significare che il driver fittizio non è stato creato come modulo, ma invece è stato aggiunto direttamente al kernel . Apparentemente dummy0esiste un'interfaccia sulla macchina dell'OP. A parte questo, la tua risposta è OK.
Xhienne,

1
@xhienne dipende dalla tua versione di modprobe, ma le versioni recenti kmod, almeno, conosceranno i builtin. Provalo. Ad esempio, modprobe unixe modprobe -r unix.
Fontejedi

7

Per creare interfacce fittizie all'avvio, consiglio di aggiungere a /etc/modules

dummy

Attenzione, il modulo dummyconsente solo due interfacce fittizie di default prima del kernel 4.4.x (verificare la versione corretta).

Se hai bisogno di più, devi anche creare uno /etc/modprobe.d/localo /etc/modprobe.d/dummy.confdefinire il parametro numdummiescon il numero di interfacce fittizie che desideri:

options dummy numdummies=4 

Secondo i commenti di @Feuermurmel, nei kernel più recenti, aggiungi più interfacce fittizie, oltre a quelle create di default, usando il comando:

sudo ip link add dummyX type dummy

Almeno con il kernel 4.4.0, è possibile aggiungere ulteriori interfacce fittizie con ip link add dumdum type dummy.
Feuermurmel,

@Feuermurmel Hai un'ideia se funziona per aggiungere più di 2?
Rui F Ribeiro,

Lo fa sicuramente. Prova per te:for i in {0..100}; do ip link add blubb-$i type dummy; done
Feuermurmel

@Feuermurmel Buone notizie, grazie per il suggerimento. Potresti volerlo aggiungere come risposta aggiuntiva. Entrambi gli IMO sono pertinenti poiché ci sono ancora molti dispositivi iOT bloccati nelle versioni del kernel inferiore.
Rui F Ribeiro,

Per curiosità: questi dispositivi, una volta creati, persistono durante i riavvii o è necessario ricrearli dopo l'avvio di ciascun sistema?
Robidu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.