Wie kann ich eine virtuelle Ethernet-Schnittstelle auf einem Computer ohne physischen Adapter erstellen?

68

Ich habe ein Dell XPS 13 Ultrabook, das eine WiFi-Netzwerkkarte, aber keine physikalische Ethernet-Netzwerkkarte (wlan0, aber keine eth0) hat. Ich muss einen virtuellen Adapter für die Verwendung von Vagrant mit NFS erstellen, stelle jedoch fest, dass das typische ifup eth0:1...Problem mit fehlschlägt ignoring unknown interface eth0:1=eth0:1. Ich habe auch versucht, eine virtuelle Schnittstelle dagegen zu erstellen wlan0, aber das gleiche Ergebnis erhalten.

Wie kann ich auf diesem Computer eine virtuelle Schnittstelle ohne physische Schnittstelle erstellen?

STW
quelle
Stellen Sie zunächst sicher, dass Ihr von wlan0 verwendeter Treiber Aliasing unterstützt. Das ist der andere Name für virtuelle Schnittstellen. Sehen Sie, wie über mein A zu diesem Q: unix.stackexchange.com/questions/108396/… . Übrigens können Sie keinen Alias ​​für eth0 erstellen, wenn Sie nicht über dieses physische Gerät verfügen.
SLM
Sie können mit dem ipBefehl auch zusätzliche IPs hinzufügen : xmodulo.com/2013/02/…
slm

Antworten:

103

Einrichten einer Dummy-Schnittstelle

Wenn Sie Netzwerkschnittstellen erstellen möchten, für die jedoch keine physische Netzwerkkarte vorhanden ist, können Sie den Dummy-Verbindungstyp verwenden. Sie können mehr darüber hier lesen: iproute2 Wikipedia-Seite .

Eth10 erstellen

Um diese Schnittstelle zu erstellen, müssen Sie zunächst sicherstellen, dass das Dummy-Kernel-Modul geladen ist. Das können Sie so machen:

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

Mit dem jetzt geladenen Treiber können Sie beliebige Dummy-Netzwerkschnittstellen erstellen:

$ sudo ip link set name eth10 dev dummy0

Und bestätige es:

$ 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

Ändern der MAC

Sie können dann die MAC-Adresse ändern, wenn Sie möchten:

$ 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

Einen Alias ​​erstellen

Sie können dann Aliase über eth10 erstellen.

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

Und bestätigen Sie sie so:

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

Oder mit 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

Das alles entfernen?

Wenn Sie dies alles abwickeln möchten, können Sie dazu die folgenden Befehle ausführen:

$ 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

Verweise

slm
quelle
4
Dieser Befehl hat bei mir nicht funktioniert: sudo ip link set name eth10 dev dummy0. Ich habe ip link add dummy0 type dummyDummy0-Schnittstelle in folgenden Befehlen verwendet und verwendet. Andere Befehle haben gut funktioniert. Vielen Dank!
Ikrom
1
Genial, das ist genau das, was ich für einen alten lmgrd brauchte, der keine MAC-Adresse von neuen RHEL 7-Gerätenamen lesen konnte (emX statt ethX)
Thesane
26

Sie können virtuelle Schnittstellen mit dem iproute2- Toolkit erstellen .

ip link add veth0 type veth peer name veth1

Dadurch werden 2 Schnittstellen erstellt, veth0und veth1. Stellen Sie sie sich als zwei Enden einer Pfeife vor. Jeder eingehende Datenverkehr veth0wird ausgegeben veth1und umgekehrt.

Wenn Sie möchten, dass der Datenverkehr weitergeleitet wird, haben Sie folgende Möglichkeiten:

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

Dadurch wird der Kernel angewiesen, Datenverkehr weiterzuleiten, der von kommt veth0(also veth1für den verwendeten Endpunkt verwenden).

Eine andere Möglichkeit besteht darin, eine Brücke mit veth0und eine andere Schnittstelle einzurichten . Dann wird jeglicher Datenverkehr, der über die virtuelle Schnittstelle eingeht, an das Netzwerk weitergeleitet, als ob Ihr Computer lediglich als Switch fungieren würde.

Es gibt viele andere Dinge, die Sie mit diesem Datenverkehr tun können (Maskieren, Umleiten, DNAT usw.), aber das hängt davon ab, was Sie erreichen möchten.

Um es abzureißen:

ip link del veth0
Patrick
quelle
Coole Sachen, aber nicht ganz das, was ich in diesem Fall brauchte (ich brauchte wirklich nur eine virtuelle Schnittstelle, damit eine VM eine NFS-Freigabe bereitstellen konnte, anstatt VBox-Dateifreigaben zu verwenden)
STW
Wie wird die IP-Adresse veth0 im Beispiel eingestellt?
MURATSPLAT