Bagaimana saya bisa membuat antarmuka ethernet virtual pada mesin tanpa adaptor fisik?

68

Saya memiliki ultrabook Dell XPS 13 yang memiliki nic wifi, tetapi tidak ada nic ethernet fisik (wlan0, tetapi tidak ada eth0). Saya perlu membuat adaptor virtual untuk menggunakan Vagrant dengan NFS, tetapi saya menemukan bahwa tipikal ifup eth0:1...gagal ignoring unknown interface eth0:1=eth0:1. Saya juga mencoba membuat antarmuka virtual melawan wlan0, tetapi menerima hasil yang sama.

Bagaimana saya bisa membuat antarmuka virtual pada mesin ini tanpa antarmuka fisik?

STW
sumber
Pertama, pastikan driver Anda yang digunakan oleh wlan0 mendukung aliasing. Itulah nama lain yang digunakan oleh antarmuka virtual. Lihat caranya melalui A saya ke T ini: unix.stackexchange.com/questions/108396/… . BTW Anda tidak dapat membuat alias terhadap eth0 jika Anda tidak memiliki perangkat fisik itu.
slm
Anda juga dapat menambahkan IP tambahan menggunakan ipperintah juga: xmodulo.com/2013/02/...
slm

Jawaban:

103

Menyiapkan antarmuka dummy

Jika Anda ingin membuat antarmuka jaringan, tetapi tidak memiliki NIC fisik untuk mendukungnya, Anda dapat menggunakan jenis tautan dummy. Anda dapat membaca lebih lanjut tentang mereka di sini: halaman Wikipedia iproute2 .

Menciptakan eth10

Untuk membuat antarmuka ini, pertama-tama Anda harus memastikan bahwa Anda telah memuat modul dummy kernel. Anda dapat melakukan ini seperti ini:

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

Dengan driver yang dimuat sekarang, Anda dapat membuat antarmuka jaringan dummy seperti apa yang Anda suka:

$ sudo ip link set name eth10 dev dummy0

Dan konfirmasikan:

$ 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

Mengubah MAC

Anda kemudian dapat mengubah alamat MAC jika Anda suka:

$ 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

Membuat alias

Anda kemudian dapat membuat alias di atas eth10.

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

Dan konfirmasikan seperti itu:

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

Atau menggunakan 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

Menghapus semua ini?

Jika Anda ingin melepas semua ini, Anda dapat menjalankan perintah ini untuk melakukannya:

$ 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

Referensi

slm
sumber
4
Perintah ini tidak bekerja untuk saya: sudo ip link set name eth10 dev dummy0. Saya telah menggunakan ip link add dummy0 type dummydan menggunakan antarmuka dummy0 dalam mengikuti perintah. Perintah lain bekerja dengan baik. Terima kasih!
Ikrom
1
luar biasa, ini persis apa yang saya butuhkan untuk lmgrd lama yang tidak dapat membaca alamat MAC dari nama perangkat RHEL 7 baru (emX bukan ethX)
Thesane
26

Anda dapat membuat antarmuka virtual menggunakan toolkit iproute2 .

ip link add veth0 type veth peer name veth1

Ini akan membuat 2 antarmuka, veth0dan veth1. Anggap mereka sebagai 2 ujung pipa. Lalu lintas yang dikirim veth0akan keluar veth1dan sebaliknya.

Jika Anda ingin lalu lintas dialihkan, Anda dapat melakukan:

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

Ini akan memberi tahu kernel untuk meneruskan lalu lintas yang berasal veth0(jadi gunakan veth1untuk titik akhir yang digunakan).

Pilihan lain adalah mengatur jembatan dengan veth0dan antarmuka lain. Maka lalu lintas apa pun yang datang melalui antarmuka virtual akan dialihkan ke jaringan seolah-olah mesin Anda hanya bertindak sebagai saklar.

Ada banyak hal lain yang dapat Anda lakukan dengan lalu lintas ini (menyamarkannya, mengalihkannya, DNAT itu, dll), tetapi itu tergantung pada apa yang Anda coba capai.

Untuk meruntuhkannya:

ip link del veth0
Patrick
sumber
Hal-hal keren, tetapi tidak cukup dengan apa yang saya butuhkan dalam kasus ini (saya benar-benar hanya membutuhkan antarmuka virtual sehingga VM dapat me-mount berbagi NFS daripada menggunakan berbagi file VBox)
STW
Bagaimana cara mengatur alamat IP veth0 dalam contoh?
MURATSPLAT