Come posso creare un'interfaccia ethernet virtuale su una macchina senza un adattatore fisico?


68

Ho un ultrabook Dell XPS 13 che ha un nic wifi, ma nessun ethernet fisico (wlan0, ma niente eth0). Devo creare un adattatore virtuale per usare Vagrant con NFS, ma sto scoprendo che il tipico ifup eth0:1...non riesce ignoring unknown interface eth0:1=eth0:1. Ho anche provato a creare un'interfaccia virtuale wlan0, ma ho ricevuto lo stesso risultato.

Come posso creare un'interfaccia virtuale su questa macchina senza interfaccia fisica?


Prima di tutto, assicurati che il tuo driver utilizzato da wlan0 supporti l'aliasing. Questo è l'altro nome che passa l'interfaccia virtuale. Guarda come tramite la mia A a questo Q: unix.stackexchange.com/questions/108396/… . A proposito non puoi creare un alias contro eth0 se non hai quel dispositivo fisico.
slm

Puoi anche aggiungere altri IP utilizzando anche il ipcomando: xmodulo.com/2013/02/…
slm

Risposte:


103

Impostazione di un'interfaccia fittizia

Se si desidera creare interfacce di rete, ma non dispone di una scheda NIC fisica per il backup, è possibile utilizzare il tipo di collegamento fittizio. Puoi leggere di più su di loro qui: pagina iproute2 Wikipedia .

Creazione di eth10

Per rendere questa interfaccia devi prima assicurarti di avere caricato il modulo kernel fittizio. Puoi farlo in questo modo:

$ sudo lsmod | grep dummy
$ sudo modprobe dummy
$ sudo lsmod | grep dummy
dummy                  12960  0 

Con il driver ora caricato, puoi creare le interfacce di rete che ti piacciono:

$ sudo ip link set name eth10 dev dummy0

E confermalo:

$ ip link show eth10
6: eth10: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
    link/ether c6:ad:af:42:80:45 brd ff:ff:ff:ff:ff:ff

Modifica del MAC

Puoi quindi cambiare l'indirizzo MAC se ti piace:

$ sudo ifconfig eth10 hw ether 00:22:22:ff:ff:ff
$ ip link show eth10
6: eth10: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
    link/ether 00:22:22:ff:ff:ff brd ff:ff:ff:ff:ff:ff

Creare un alias

È quindi possibile creare alias su eth10.

$ sudo ip addr add 192.168.100.199/24 brd + dev eth10 label eth10:0

E confermali così:

$ ifconfig -a eth10
eth10: flags=130<BROADCAST,NOARP>  mtu 1500
        ether 00:22:22:ff:ff:ff  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ ifconfig -a eth10:0
eth10:0: flags=130<BROADCAST,NOARP>  mtu 1500
        inet 192.168.100.199  netmask 255.255.255.0  broadcast 192.168.100.255
        ether 00:22:22:ff:ff:ff  txqueuelen 0  (Ethernet)

O usando ip:

$ ip a | grep -w inet
    inet 127.0.0.1/8 scope host lo
    inet 192.168.1.20/24 brd 192.168.1.255 scope global wlp3s0
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
    inet 192.168.100.199/24 brd 192.168.100.255 scope global eth10:0

Rimozione di tutto questo?

Se vuoi svolgere tutto ciò puoi eseguire questi comandi per farlo:

$ sudo ip addr del 192.168.100.199/24 brd + dev eth10 label eth10:0
$ sudo ip link delete eth10 type dummy
$ sudo rmmod dummy

Riferimenti


4
Questo comando non ha funzionato per me: sudo ip link set name eth10 dev dummy0. Ho usato ip link add dummy0 type dummye usato l'interfaccia dummy0 nei seguenti comandi. Altri comandi hanno funzionato bene. Grazie!
Ikrom,

1
fantastico, questo è esattamente ciò di cui avevo bisogno per un vecchio lmgrd che non era in grado di leggere l'indirizzo MAC dai nuovi nomi di dispositivi RHEL 7 (emX invece di ethX)
Thesane,

26

Puoi creare interfacce virtuali usando il toolkit iproute2 .

ip link add veth0 type veth peer name veth1

Questo creerà 2 interfacce veth0e veth1. Pensa a loro come a 2 estremità di un tubo. Tutto il traffico inviato veth0verrà fuori veth1e viceversa.

Se desideri che il traffico venga instradato, puoi fare:

sysctl -w net.ipv4.conf.veth0.forwarding=1

Questo dirà al kernel di inoltrare il traffico proveniente veth0(quindi utilizzare veth1per l'endpoint utilizzato).

Un'altra opzione è quella di impostare un bridge con veth0e un'altra interfaccia. Quindi qualsiasi traffico proveniente dall'interfaccia virtuale verrà instradato verso la rete come se la tua macchina agisse semplicemente come uno switch.

Ci sono molte altre cose che puoi fare con questo traffico (mascherarlo, reindirizzarlo, DNAT, ecc.), Ma dipende da cosa stai cercando di realizzare.

Per abbatterlo:

ip link del veth0

Roba interessante, ma non proprio quello di cui avevo bisogno in questo caso (avevo solo bisogno di un'interfaccia virtuale in modo che una VM potesse montare una condivisione NFS piuttosto che usare le condivisioni di file VBox)
STW,

Come impostare l'indirizzo IP veth0 nell'esempio?
MURATSPLAT,
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.