Jak mogę utworzyć wirtualny interfejs Ethernet na maszynie bez fizycznego adaptera?


68

Mam ultrabook Dell XPS 13, który ma nic WiFi, ale nie ma fizycznej nic Ethernet (wlan0, ale nie eth0). Muszę utworzyć wirtualny adapter do używania Vagrant z NFS, ale okazuje się, że typowy ifup eth0:1...kończy się niepowodzeniem ignoring unknown interface eth0:1=eth0:1. Próbowałem też utworzyć interfejs wirtualny wlan0, ale otrzymałem ten sam wynik.

Jak mogę utworzyć wirtualny interfejs na tym komputerze bez fizycznego interfejsu?


Po pierwsze, upewnij się, że sterownik używany przez wlan0 obsługuje aliasing. To jest inna nazwa, którą nazywają interfejsy wirtualne. Zobacz, jak za pośrednictwem mojego A do tego pytania: unix.stackexchange.com/questions/108396/… . BTW, nie możesz utworzyć aliasu przeciwko eth0, jeśli nie masz tego fizycznego urządzenia.
slm

Możesz również dodać dodatkowe adresy IP za pomocą ippolecenia: xmodulo.com/2013/02/…
slm

Odpowiedzi:


103

Konfigurowanie fikcyjnego interfejsu

Jeśli chcesz utworzyć interfejsy sieciowe, ale brakuje ci fizycznej karty sieciowej, aby to zrobić, możesz użyć fikcyjnego typu łącza. Możesz przeczytać więcej o nich tutaj: strona Wikipedii iproute2 .

Tworzenie eth10

Aby stworzyć ten interfejs, musisz najpierw upewnić się, że masz załadowany atrapa modułu jądra. Możesz to zrobić w następujący sposób:

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

Po załadowaniu sterownika możesz tworzyć dowolne fikcyjne interfejsy sieciowe, które Ci się podobają:

$ sudo ip link set name eth10 dev dummy0

I potwierdź to:

$ 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

Zmiana MAC

Następnie możesz zmienić adres MAC, jeśli chcesz:

$ 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

Tworzenie aliasu

Następnie możesz utworzyć aliasy na etykiecie eth10.

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

I potwierdź je w ten sposób:

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

Lub używając 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

Usuwasz to wszystko?

Jeśli chcesz to wszystko zrelaksować, możesz uruchomić następujące polecenia:

$ 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

Bibliografia


4
Ta komenda nie działa dla mnie sudo ip link set name eth10 dev dummy0. Używałem ip link add dummy0 type dummyi używany interfejs dummy0 w następujących poleceń. Inne polecenia działały dobrze. Dzięki!
Ikrom

1
niesamowite, właśnie tego potrzebowałem dla starego lmgrd, który nie był w stanie odczytać adresu MAC z nowych nazw urządzeń RHEL 7 (emX zamiast ethX)
Thesane,

26

Możesz tworzyć wirtualne interfejsy za pomocą zestawu narzędzi iproute2 .

ip link add veth0 type veth peer name veth1

Spowoduje to utworzenie 2 interfejsów veth0i veth1. Pomyśl o nich jak o dwóch końcach rury. Każdy wysłany ruch veth0wyjdzie veth1i na odwrót.

Jeśli chcesz, aby ruch był kierowany, możesz:

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

Dzięki temu jądro będzie przekazywać ruch przychodzący veth0(więc użyj veth1dla używanego punktu końcowego).

Inną opcją jest skonfigurowanie mostu z veth0innym interfejsem. Następnie wszelki ruch przychodzący przez interfejs wirtualny zostanie skierowany do sieci, tak jakby twoja maszyna po prostu działała jak przełącznik.

Istnieje wiele innych rzeczy, które możesz zrobić z tym ruchem (maskować go, przekierowywać, DNAT itp.), Ale to zależy od tego, co próbujesz osiągnąć.

Aby go zburzyć:

ip link del veth0

Fajne rzeczy, ale nie do końca to, czego potrzebowałem w tym przypadku (naprawdę potrzebowałem tylko wirtualnego interfejsu, aby maszyna wirtualna mogła zamontować udział NFS zamiast używać udziałów plików VBox)
STW

Jak ustawić adres IP veth0 w przykładzie?
MURATSPLAT
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.