web-dev-qa-db-fra.com

Comment puis-je créer une interface Ethernet virtuelle sur une machine sans adaptateur physique?

J'ai un ultrabook Dell XPS 13 qui a un nic wifi, mais pas de nic ethernet physique (wlan0, mais pas eth0). J'ai besoin de créer un adaptateur virtuel pour utiliser Vagrant avec NFS, mais je trouve que le ifup eth0:1... échoue avec ignoring unknown interface eth0:1=eth0:1. J'ai également essayé de créer une interface virtuelle contre wlan0, mais a obtenu le même résultat.

Comment puis-je créer une interface virtuelle sur cette machine sans interface physique?

75
STW

Mise en place d'une interface factice

Si vous souhaitez créer des interfaces réseau, mais que vous n'avez pas de physique NIC pour le sauvegarder, vous pouvez utiliser le type de lien factice. Vous pouvez en savoir plus à leur sujet ici: page Wikipedia iproute2 .

Création d'eth10

Pour créer cette interface, vous devez d'abord vous assurer que le module du noyau factice est chargé. Vous pouvez le faire comme ceci:

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

Avec le pilote maintenant chargé, vous pouvez créer les interfaces réseau factices que vous aimez:

$ Sudo ip link add eth10 type dummy

REMARQUE: Dans les anciennes versions de ip, vous feriez comme ci-dessus, semble avoir changé en cours de route. En gardant cela ici à des fins de référence, mais sur la base des commentaires via les commentaires, ce qui précède fonctionne maintenant.

$ Sudo ip link set name eth10 dev dummy0

Et confirmez-le:

$ 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

Changer le MAC

Vous pouvez ensuite modifier l'adresse MAC si vous le souhaitez:

$ 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

Création d'un alias

Vous pouvez ensuite créer des alias au-dessus de eth10.

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

Et confirmez-les comme ceci:

$ 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)

Ou en utilisant 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

Supprimer tout ça?

Si vous souhaitez vous détendre, vous pouvez exécuter ces commandes pour le faire:

$ 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

Références

111
slm

Vous pouvez créer des interfaces virtuelles à l'aide de la boîte à outils iproute2 .

ip link add veth0 type veth peer name veth1

Cela va créer 2 interfaces, veth0 et veth1. Considérez-les comme 2 extrémités d'un tuyau. Tout trafic envoyé vers veth0 sortira veth1 et vice versa.

Si vous souhaitez que le trafic soit acheminé, vous pouvez faire:

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

Cela indiquera au noyau de transmettre le trafic provenant de veth0 (utilisez donc veth1 pour le point de terminaison utilisé).

Une autre option consiste à configurer un pont avec veth0 et une autre interface. Ensuite, tout trafic provenant de l'interface virtuelle sera acheminé vers le réseau comme si votre machine agissait simplement comme un commutateur.

Il y a beaucoup d'autres choses que vous pouvez faire avec ce trafic (le masquer, le rediriger, le DNAT, etc.), mais cela dépend de ce que vous essayez d'accomplir.

Pour le démonter:

ip link del veth0
29
Patrick