Skip to content

emka.web.id

Menu
  • Home
  • Indeks Artikel
  • Tutorial
  • Tentang Kami
Menu

Cara Membuat dan Menggunakan Jaringan MacVLAN di Docker

Posted on February 01, 2022 by Syauqi Wiryahasana

In Docker, pertanyaan umum yang biasanya muncul adalah “Bagaimana cara mengekspos container saya langsung ke jaringan fisik lokal saya?” Hal ini terutama terjadi ketika Anda menjalankan aplikasi pemantauan yang mengumpulkan statistik jaringan dan ingin menghubungkan container ke aplikasi lama. Solusi yang mungkin untuk pertanyaan ini adalah membuat dan mengimplementasikan tipe jaringan macvlan.

Jaringan Macvlan adalah jaringan virtual khusus yang memungkinkan Anda membuat "klon" dari antarmuka jaringan fisik yang terpasang ke server Linux Anda dan melampirkan wadah langsung ke LAN Anda. Untuk memastikan hal ini terjadi, cukup tentukan antarmuka jaringan fisik di server Anda ke jaringan macvlan yang memiliki subnet dan gatewaynya sendiri.

Dalam panduan ini, kami akan mendemonstrasikan bagaimana Anda dapat membuat dan menggunakan jaringan mavlan di Docker. Namun sebelum Anda memulai, berikut adalah beberapa hal yang harus Anda ingat:

CATATAN:
Jaringan Macvlan biasanya diblokir oleh sebagian besar penyedia layanan Cloud. Oleh karena itu, Anda memerlukan akses fisik ke server Anda. Driver jaringan macvlan hanya berfungsi pada host Linux. Ini tidak didukung pada perangkat Windows atau mac. Anda harus menjalankan kernel Linux 4.0 dan yang lebih baru.
Dalam panduan ini, kami akan menggunakan Ubuntu 20.04 untuk mendemonstrasikan cara membuat dan menggunakan jaringan macvlan. Sebagai prasyarat, kami telah menginstal Docker. Kami memiliki panduan tentang cara menginstal Docker di Ubuntu 20.04.

Membuat jaringan macvlan

Jaringan macvlan dapat dibuat baik dalam mode bridge dan atau mode trunk 802.1q.

Dalam mode bridge, lalu lintas macvlan disalurkan melalui antarmuka fisik pada host Linux .

Dalam mode jembatan batang 802.1q, lalu lintas melewati sub-antarmuka 802.1q yang dibuat oleh Docker. Hal ini memungkinkan perutean dan pemfilteran terkontrol pada tingkat granular.

Dengan menyingkir, mari kita lihat bagaimana Anda dapat membuat setiap jaringan macvlan.
1)  Bridge mode
Dalam contoh kita, kita memiliki antarmuka jaringan fisik enp0s3 pada 192.168 .2.0/24 network dan default gateway 192.168.2.1.Default gateway adalah alamat IP dari router.



Sekarang, kita akan membuat jaringan macvlan bernama demo-macvlan-net dengan konfigurasi berikut.
$ docker network create - d macvlan     --subnet=192.168.2.0/24     --gateway=192.168.2.1      -o parent=enp0s3      demo-macvlan-net


CATATAN:
Nilai subnet & gateway harus cocok dengan antarmuka jaringan host Docker. Sederhananya, subnet dan gateway default untuk jaringan macvlan Anda harus mencerminkan host Docker Anda. Di sini, opsi –subnet= menentukan subnet dan opsi  –gateway menentukan gateway yang merupakan IP router. Ubah nilai-nilai ini untuk mengakomodasi lingkungan Anda. Opsi -d menentukan nama driver. Dalam kasus kami, opsi -d menentukan driver macvlan. Opsi induk -o menentukan antarmuka induk yang merupakan antarmuka NIC Anda. Dalam kasus kami, antarmuka induknya adalah enp0s3. Akhirnya, kami telah menentukan nama jaringan macvlan kami yaitu demo-macvlan-net.
Untuk mengonfirmasi bahwa jaringan macvlan yang baru ditambahkan ada, jalankan perintah:
$ docker network ls


Next, kita akan membuat image container dan melampirkannya ke jaringan macvlan menggunakan opsi –network. Opsi -itd memungkinkan Anda menjalankan penampung di latar belakang dan juga melampirkannya. Opsi –rm menghapus wadah setelah dihentikan. Kami juga telah menetapkan IP 192.168.2.110 ke wadah kami. Pastikan untuk menentukan IP yang tidak berada dalam rentang IP DHCP Anda untuk menghindari contoh konflik IP.
$ docker run --rm -itd --network=demo-macvlan-net --ip=192.168.2.110 alpine:latest   /bin/sh


Untuk memverifikasi bahwa container sedang berjalan, jalankan perintah:
$ docker ps


Selain itu, Anda dapat melihat detail yang lebih baik tentang container menggunakan perintah docker inspect sebagai berikut:
$ docker container inspect e9b71d094e48yy create a docker container inspect e9b71d094e48yy wadah kedua sebagai berikut. Dalam hal ini, penampung akan secara otomatis diberi IP oleh Docker.
$ docker run  --rm -itd --network=demo-macvlan-net   alpine:latest   /bin/sh


Sekali lagi, izinkan kami mengonfirmasi bahwa kami memiliki dua kontainer.
$ docker ps


Selanjutnya, kami akan mencoba dan menetapkan apakah kontainer dapat saling ping. Dalam hal ini, kami menguji konektivitas wadah pertama dari wadah kedua.

Anda dapat melakukannya menggunakan satu perintah sebagai berikut.
$ docker exec -it daa09a330b36 ping 192.168.2.110 -4
Atau, Anda dapat mengakses shell wadah dan jalankan perintah ping.
$ docker exec -it daa09a330b36 /bin/sh


Cobalah perintah yang sama dari wadah lain dan Anda akan mengetahui bahwa pada titik ini, wadah dapat berkomunikasi satu sama lain.

Namun, host Docker tidak dapat berkomunikasi dengan wadah dan sebaliknya. Jika Anda mencoba melakukan ping ke host dari container atau sebaliknya, Anda akan menemukan bahwa host dan container tersebut tidak dapat berkomunikasi satu sama lain.

Dari output yang ditampilkan, kami tidak dapat menjangkau salah satu container menggunakan perintah ping.
$ ping 192.168.2.110 -c 4


Demikian pula, kita juga tidak dapat membangun komunikasi dari container ke host.
$ docker exec -it e9b71d094e48 /bin/sh


Agar container dapat berkomunikasi dengan host, kita perlu membuat antarmuka macvlan di host Docker dan konfigurasikan rute ke antarmuka macvlan.
Buat antarmuka macvlan baru di host
Selanjutnya, kita akan membuat antarmuka macvlan menggunakan perintah ip. Dalam contoh ini, kita telah membuat antarmuka yang disebut mycool-net. Jangan ragu untuk memberikan nama apa pun yang Anda anggap cocok.
$ sudo ip link add mycool-net link enp0s3 ketik mode macvlan bridge
Kemudian tetapkan IP unik ke antarmuka. Pastikan untuk memesan IP ini di router Anda.
$ sudo ip addr add 192.168.2.50/32 dev mycool-net
Buka antarmuka macvlan.
$ sudo ip link set mycool-net up
Langkah terakhir adalah menginstruksikan host Docker kami untuk menggunakan antarmuka untuk berkomunikasi dengan wadah. Untuk ini, kami akan menambahkan rute ke macvlan network.
$ sudo ip route add 192.168.2.0/24 dev mycool-net
Sekarang, dengan rute di tempat, host dan wadah dapat berkomunikasi satu sama lain. Anda dapat memverifikasi rute menggunakan perintah ip route.
$ ip route


Dalam contoh di bawah, saya dapat melakukan ping ke host dari satu wadah.



Saya juga dapat melakukan ping ke host dari wadah kedua.



Saya juga dapat melakukan ping ke salah satu dari container dari host.



2) 802.1q Trunk bridge mode

Ketika membahas contoh trunk bridge 802.1q, lalu lintas mengalir melalui sub-interface enp0s3 yang disebut enp0s3.50 (Vlan tagged Interface). Docker akan merutekan lalu lintas ke wadah menggunakan alamat MAC-nya.

Dalam contoh ini, kami membuat jaringan macvlan trunk 802.1q yang disebut demo-macvlan50-net yang dilampirkan ke sub-antarmuka enp0s3.50. Pastikan untuk mengubah subnet, gateway, dan parameter induk agar sesuai dengan network.
$ docker network create Anda -d macvlan   --subnet=192.168.50.0/24   --gateway=192.168.50.1   -o parent=enp0s3. 50   demo-macvlan50-net


Anda dapat menjalankan jaringan buruh pelabuhan ls dan jaringan buruh pelabuhan memeriksa demo-macvlan50-net untuk mengonfirmasi bahwa jaringan ada
$ jaringan buruh pelabuhan ls

$ jaringan buruh pelabuhan memeriksa demo-macvlan50-net



ke trunk bridge network.
$ docker run --rm -itd --network=demo-macvlan50-net   alpine:latest   /bin/sh
Menghapus jaringan macvlan

Untuk menghapus jaringan macvlan, pertama hentikan dan hapus wadah yang menggunakan jaringan macvlan . Dalam contoh kami di atas, kami telah menggunakan opsi '–rm' saat meluncurkan wadah, jadi ketika kami menghentikannya maka mereka akan dihapus secara otomatis.
$ jaringan buruh pelabuhan rm demo-macvlan-net $ jaringan buruh pelabuhan rm demo-macvlan50-net

Kesimpulan
Dalam ini panduan, kami telah menunjukkan bagaimana Anda dapat membuat jaringan macvlan – khususnya mode macvlan bridge  dan trunk bridge.
802.1q
Seedbacklink

Recent Posts

TENTANG EMKA.WEB>ID

EMKA.WEB.ID adalah blog seputar teknologi informasi, edukasi dan ke-NU-an yang hadir sejak tahun 2011. Kontak: kontak@emka.web.id.

©2024 emka.web.id Proudly powered by wpStatically