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?
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 .
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
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
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
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
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