Saya ingin mengatur tiga antarmuka jaringan virtual ( veth
) yang dapat berkomunikasi satu sama lain. Untuk mensimulasikan tiga simpul cluster, setiap program kemudian mengikat ke satu veth
antarmuka. Saya ingin melakukannya tanpa LXC jika memungkinkan.
Saya mencoba menggunakan:
- Dibuat tiga
veth
pasang:sudo ip link add type veth
- Membuat jembatan
sudo brctl addbr br0
- Menambahkan satu dari setiap pasangan ke jembatan:
sudo brctl addif br0 veth1
sudo brctl addif br0 veth3
sudo brctl addif br0 veth5
- Konfigurasi antarmuka:
sudo ifconfig veth0 10.0.0.201 netmask 255.255.255.0 up
sudo ifconfig veth2 10.0.0.202 netmask 255.255.255.0 up
sudo ifconfig veth4 10.0.0.203 netmask 255.255.255.0 up
Kemudian saya memverifikasi apakah berfungsi menggunakan: ping -I veth0 10.0.0.202
tetapi tidak :(
Saya menambahkan alamat IP ke veth1
, veth3
, veth5
dan br0
antarmuka di kisaran 10.0.1.x / 24. Tapi itu tidak membantu.
Ada ide? atau panduan, semua saya temukan dalam cara menggunakannya dengan LXC. Atau apakah saya mencoba sesuatu yang tidak mungkin?
linux
networking
Reinder
sumber
sumber
br0
itu sendiri?Jawaban:
Agar veth berfungsi, satu ujung terowongan harus dijembatani dengan antarmuka lain. Karena Anda ingin menyimpan ini semua virtual, Anda dapat menjembatani ujung vm1 terowongan (vm2 adalah ujung lain dari terowongan) dengan antarmuka virtual tipe-ketukan, di jembatan yang disebut brm. Sekarang Anda memberikan alamat IP ke brm dan vm2 (masing-masing 10.0.0.1 dan 10.0.0.2), aktifkan penerusan IPv4 melalui
tingkatkan semua antarmuka, dan tambahkan rute yang memerintahkan kernel cara mencapai alamat IP 10.0.0.0/24. Itu saja.
Jika Anda ingin membuat lebih banyak pasangan, ulangi langkah-langkah di bawah ini dengan subnet yang berbeda, misalnya 10.0.1.0/24, 10.0.2.0/24, dan seterusnya. Karena Anda mengaktifkan penerusan IPv4 dan menambahkan rute yang sesuai ke tabel routing kernel, mereka akan dapat berbicara satu sama lain segera.
Juga, ingat bahwa sebagian besar perintah yang Anda gunakan (brctl, ifconfig, ...) sudah usang: suite iproute2 memiliki perintah untuk melakukan semua ini, lihat di bawah ini saya menggunakan perintah ip .
Ini adalah urutan perintah yang benar untuk penggunaan antarmuka tipe veth :
pertama buat semua antarmuka yang diperlukan,
Perhatikan kami tidak memunculkan brm dan vm2 karena kami harus menetapkannya alamat IP, tetapi kami memunculkan tapm dan vm1, yang perlu untuk memasukkannya ke dalam brm jembatan. Sekarang memperbudak antarmuka tapm dan vm1 ke jembatan brm,
sekarang berikan alamat ke bridge dan ke antarmuka veth2 veth yang tersisa,
sekarang bawa vm2 dan brm ke atas,
Tidak perlu menambahkan rute ke subnet 10.0.0.0/24 secara eksplisit, itu dihasilkan secara otomatis, Anda dapat memeriksa dengan ip route show . Ini menghasilkan
Anda juga dapat melakukannya mundur, yaitu dari vm2 kembali ke brm:
Aplikasi NIC yang paling berguna dari jenis Veth adalah namespace jaringan , yang digunakan dalam wadah Linux (LXC). Anda memulai satu yang disebut nnsm sebagai berikut
maka kami mentransfer vm2 ke sana,
kami memberkati namespace jaringan baru dengan antarmuka lo (benar-benar diperlukan),
kami mengizinkan NATting di mesin utama,
(jika Anda terhubung ke Internet melalui eth0 , jika tidak ubah sesuai), mulai shell di namespace jaringan baru,
dan sekarang, jika Anda mulai mengetik xterm baru, Anda akan menemukan Anda berada di mesin virtual yang terpisah dengan alamat IP 10.0.0.2, tetapi Anda dapat menjangkau Internet. Keuntungan dari ini adalah bahwa namespace jaringan baru memiliki tumpukan sendiri, yang berarti, misalnya, Anda dapat memulai VPN di dalamnya sementara sisa komputer Anda tidak di VPN. Ini adalah alat yang mendasari LXC.
EDIT:
Saya membuat kesalahan, membawa antarmuka vm2 membawanya turun dan membersihkan alamatnya. Jadi, Anda perlu menambahkan perintah-perintah ini, dari dalam xterm:
dan sekarang Anda dapat menavigasi dari dalam xterm.
The
ip
perintah juga dapat dilakukan sebelum xterm dengansumber
Berikut ini adalah pengaturan jembatan 5 simpul yang saya gunakan yang berfungsi. Anda harus dapat menggunakan ifconfig untuk menetapkan alamat ke antarmuka NodeX
dan untuk membersihkan
sumber