Bagaimana kita bisa membuat banyak antarmuka tiruan di Linux?

11

Untuk Membuat Antarmuka Dummy Ethernet Palsu Di Linux, pertama-tama kita menginisialisasi driver antarmuka dummy menggunakan perintah di bawah ini: / sbin / modprobe dummy .
Kemudian kita Tetapkan Antarmuka Ethernet alias Untuk Driver Dummy yang baru saja kita inisialisasi di atas.

Tapi itu memberikan kesalahan Fatal sebagai berikut: FATAL: Modul dummy tidak ditemukan.

Juga, di path cd / sys / devices / virtual / net # , kita dapat melihat bahwa ada antarmuka virtual yang hadir dengan nama-nama berikut:
dummy0 / lo / sit0 / tunl0 /

ifconfig -a

dummy0:   Link encap:Ethernet  HWaddr aa:3a:a6:cd:91:2b    
          BROADCAST NOARP  MTU:1500  Metric:1  
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0   
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo:     Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0  
          inet6 addr: ::1/128 Scope:Host  
          UP LOOPBACK RUNNING  MTU:16436  Metric:1  
          RX packets:111 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:111 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0   
          RX bytes:8303 (8.1 KiB)  TX bytes:8303 (8.1 KiB)

sit0:      Link encap:UNSPEC  HWaddr 00-00-00-00-FF-00-00-00-00-00-00-00-00-00-00-00    
          NOARP  MTU:1480  Metric:1  
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0   
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tunl0:  Link encap:IPIP Tunnel  HWaddr   
          NOARP  MTU:1480  Metric:1  
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0   
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  

Jadi, perintah modprobe tidak dapat memuat modul kernel.
Bagaimana kita bisa memuat modul kernel menggunakan modprobe atau insmod untuk menginisialisasi driver antarmuka dummy?
Bisakah kita membuat banyak antarmuka tiruan pada satu modul dimuat?

Kushal
sumber
Ketika Anda berbicara tentang antarmuka virtual Ethernet. Anda tidak perlu memuat modul dummy apa pun. Anda dapat membuatnya menggunakan perintah ifconfig seperti eth0: 1, eth0: 2, dll.
supriady
Anda dapat mengatur alamat IP, subnet, dan gateway yang berbeda pada antarmuka virtual Ethernet menggunakan perintah ifconfig. Cukup tambahkan di rc.local dan muat di boot. Anda tidak perlu membuat file konfigurasi antarmuka ethernet virtual.
supriady
1
@supriady Saya tidak bertanya tentang antarmuka virtual. Saya tahu kita dapat menetapkan ip virtual ke antarmuka menggunakan ifconfig seperti eth0: 1 & seterusnya tetapi di sini alamat Mac h / w akan sama untuk setiap antarmuka virtual yang dibuat. Pertanyaan saya adalah bagaimana membuat beberapa antarmuka dummy seperti dummy0 yang ditunjukkan di atas memiliki alamat Mac H / w yang berbeda dari antarmuka yang sebenarnya.
Kushal
Hanya untuk memastikan, Anda menyadari bahwa antarmuka ini tidak akan terlihat dari luar mesin, bukan?
Julie Pelletier
Silakan tambahkan ke pertanyaan output LENGKAP dari modprobekesalahan dan output dariuname -r
Rui F Ribeiro

Jawaban:

13

Cara biasa untuk menambahkan beberapa antarmuka tiruan adalah dengan menggunakan iproute2 :

# ip link add dummy0 type dummy
# ip link add dummy1 type dummy
# ip link list
...
5: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 22:4e:84:26:c5:98 brd ff:ff:ff:ff:ff:ff
6: dummy1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 9e:3e:48:b5:d5:1d brd ff:ff:ff:ff:ff:ff

Tetapi pesan kesalahan FATAL: Modul dummy tidak ditemukan menunjukkan bahwa Anda mungkin memiliki kernel di mana modul antarmuka dummy tidak diaktifkan, jadi pastikan untuk memeriksa konfigurasi kernel Anda, dan mengkompilasi ulang kernel jika perlu.

dirkt
sumber
"pesan kesalahan FATAL: Modul dummy tidak ditemukan menunjukkan bahwa Anda mungkin memiliki kernel di mana modul antarmuka dummy tidak diaktifkan" => Tidak, itu mungkin berarti driver dummy tidak dibangun sebagai modul, tetapi langsung ditambahkan ke kernel sebagai gantinya . Rupanya dummy0antarmuka ada di mesin OP. Selain itu, jawaban Anda baik-baik saja.
xhienne
1
@xhienne tergantung pada versi modprobe Anda, tetapi versi terbaru dari kmod, setidaknya, akan tahu tentang builtin. Cobalah. Misalnya modprobe unixdan modprobe -r unix.
sourcejedi
7

Untuk membuat antarmuka dummy saat boot, saya sarankan tambahkan ke /etc/modules

dummy

Hati-hati, modul ini dummyhanya mengizinkan dua antarmuka dummy secara default sebelum kernel 4.4.x (versi yang benar diverifikasi).

Jika Anda membutuhkan lebih banyak, Anda juga harus membuat /etc/modprobe.d/localatau /etc/modprobe.d/dummy.confmendefinisikan parameter numdummiesdengan jumlah antarmuka dummy yang Anda inginkan:

options dummy numdummies=4 

Sesuai komentar @Feuermurmel, di kernel yang lebih baru, Anda menambahkan lebih banyak antarmuka dummy, selain dua yang dibuat secara default, menggunakan perintah:

sudo ip link add dummyX type dummy
Rui F Ribeiro
sumber
Setidaknya dengan kernel 4.4.0, antarmuka dummy tambahan dapat ditambahkan ip link add dumdum type dummy.
Feuermurmel
@Feuermurmel Apakah Anda punya ide jika berhasil menambah lebih dari 2?
Rui F Ribeiro
Pasti begitu. Uji sendiri:for i in {0..100}; do ip link add blubb-$i type dummy; done
Feuermurmel
@Feuermurmel Kabar baik, terima kasih atas tipnya. Anda mungkin ingin menambahkannya sebagai jawaban tambahan. IMO keduanya relevan karena masih banyak perangkat IOT yang macet di versi kernel yang lebih rendah.
Rui F Ribeiro
Karena penasaran: Apakah perangkat ini, sekali dibuat, persisten di seluruh reboot, atau apakah Anda harus membuatnya kembali setelah setiap sistem dimulai?
Robidu