Belajar KVM & QEMU - Networking Lanjut (Bridge, MacVTap, VLAN)
Episode 16 of 23

Belajar KVM & QEMU - Networking Lanjut (Bridge, MacVTap, VLAN)

Mendalami jaringan VM di produksi: Linux bridge kustom dengan --network bridge, macvtap untuk passthrough antarmuka langsung, integrasi Open vSwitch, dan VLAN tagging untuk isolasi antar tenant

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah episode 7 memperkenalkan user-mode dan tap dasar, episode 16 menaikkan taraf ke topologi jaringan produksi: bridge kustom, macvtap, Open vSwitch, dan VLAN. Di sinilah kalian mulai berpikir seperti network engineer — bukan sekadar "kasih IP ke VM", melainkan merancang segmentasi yang aman antar layanan.

Polanya berulang: setiap VM punya satu atau lebih NIC, tiap NIC terhubung ke jaringan tertentu, dan isolasi dijaga lewat bridge/VLAN yang benar. Kesalahan di lapisan ini = VM bisa saling menyerang atau aplikasi antar-tenant bisa bocor.

Linux Bridge: Default dan Kustom

Di episode 7 kita membuat br0 manual. libvirt punya bridge virtual default (virbr0, NAT) yang otomatis dibuat saat instalasi:

Cek bridge dan jaringan libvirt
virsh net-list --all
ip addr show virbr0

Bridge default memakai NAT — VM bisa keluar internet, tidak bisa diakses langsung dari LAN. Untuk VM yang harus tampil di LAN, buat bridge kustom dan isi dengan NIC fisik.

Membuat Bridge Kustom Persisten

Definisikan network baru di libvirt, atau siapkan bridge di level OS. Di level OS dengan netplan (Ubuntu):

/etc/netplan/50-bridge.yaml
network:
  version: 2
  ethernets:
    enp0s31f6:
      dhcp4: false
  bridges:
    br0:
      interfaces: [enp0s31f6]
      dhcp4: true
Terapkan netplan
sudo netplan apply

Sekarang hubungkan VM ke br0:

VM terhubung ke bridge kustom
virt-install --name web1 \
  --network bridge=br0 \
  ...

Di XML (episode 10), ini tampak sebagai <interface type='bridge'>:

Interface bridge (libvirt)
<interface type='bridge'>
  <source bridge='br0'/>
  <model type='virtio'/>
</interface>

VM sekarang mendapat IP dari jaringan fisik dan tampil seperti mesin nyata.

MacVTap: Direct Passthrough

macvtap memberi VM akses langsung ke NIC fisik tanpa bridge — packet VM menempel langsung ke interface host. Keuntungan: performa maksimal, tidak ada hop bridge. Kekurangannya: host tidak bisa komunikasi dengan VM-nya sendiri melalui macvtap (keterbatasan protokol).

Interface macvtap (libvirt)
<interface type='direct'>
  <source dev='enp0s31f6' mode='bridge'/>
  <model type='virtio'/>
</interface>
VM dengan macvtap
virt-install --name vm-macvtap \
  --network type=direct,source=enp0s31f6,mode=bridge

Mode bridge membuat MAC per-VM di NIC fisik (switching sederhana). Untuk performa I/O tinggi tanpa bridge software, macvtap adalah pilihan kuat — asalkan host tidak perlu akses langsung ke VM.

Open vSwitch Integration

Open vSwitch (OVS) adalah switch virtual berbasis kernel yang menawarkan QoS, tunneling, dan flow control ala switch hardware. libvirt mendukungnya lewat tipe openvswitch:

Interface Open vSwitch (libvirt)
<interface type='bridge'>
  <source bridge='ovsbr0'/>
  <virtualport type='openvswitch'>
    <parameters interfaceid='web1-1234'/>
  </virtualport>
  <model type='virtio'/>
</interface>

interfaceid unik per VM agar OVS mengenali port secara terprogram. Untuk passthrough OVS ke VM:

Hubungkan VM ke OVS via passthrough
qemu-system-x86_64 \
  -netdev tap,id=net0,helper=/usr/libexec/qemu-bridge-helper,br=ovsbr0 \
  -device virtio-net-pci,netdev=net0

OVS lebih berat untuk dikelola, tetapi wajib ketika infrastruktur kalian memakai tunneling VXLAN/Geneve atau ingin kontrol flow terpusat (misal dengan OpenFlow controller).

Note

Pilih sesuai skala: bridge Linux cukup untuk sebagian besar homelab & DC kecil; OVS untuk jaringan besar yang butuh QoS, VXLAN, atau SDN. Jangan menambah kompleksitas OVS tanpa kebutuhan nyata.

VLAN Tagging

Untuk memisahkan tenant di bridge yang sama, gunakan VLAN:

Interface dengan VLAN (libvirt)
<interface type='bridge'>
  <source bridge='br0'/>
  <vlan>
    <tag id='100'/>
  </vlan>
  <model type='virtio'/>
</interface>
VM di VLAN tertentu
virt-install --name tenant-a \
  --network bridge=br0,virtualport_type=openvswitch,vlan_id=100

VLAN bekerja di atas bridge fisik yang sama: port dikelompokkan per ID, dan traffic antar VLAN terisolasi. Kombinasikan dengan trunk port pada switch fisik agar VLAN VM menjangkau seluruh jaringan. Untuk sub-VLAN di bridge Linux, buat satu bridge per VLAN — pendekatan paling mudah dipahami.

Arsitektur Produksi Umum

100%

Satu bridge per segmen + satu VLAN per tenant — sederhana, aman, mudah didiagnosa. Gunakan macvtap/OVS hanya jika ada kebutuhan performa atau SDN.

Common Pitfalls

  • MacVTap tidak bisa komunikasi host↔VM: kalau butuh SSH dari host ke VM, jangan macvtap — pakai bridge.
  • Bridge kustom tanpa konfigurasi IP: host kehilangan koneksi LAN setelah NIC masuk bridge; pastikan IP dipindah ke bridge.
  • VLAN tidak tembus switch fisik: tanpa trunk port di switch, frame tagged dibuang — cek konfigurasi switch.
  • OVS tanpa interfaceid: VM muncul tanpa identitas port di OVS — susah diaudit.

Penutup

Pada episode 16 ini, kalian telah memperluas kemampuan jaringan VM.

Inti yang harus dibawa pulang:

  • Bridge default virbr0 (NAT) vs bridge kustom br0 (LAN langsung).
  • <interface type='bridge'> menghubungkan VM ke bridge fisik.
  • macvtap untuk passthrough langsung — performa tinggi, tapi host tak bisa akses VM.
  • Open vSwitch untuk kebutuhan SDN/QoS/VXLAN; jangan dipakai tanpa kebutuhan.
  • VLAN tagging mengisolasi tenant pada bridge yang sama — satu bridge per segmen.

Di episode 17 selanjutnya, kita akan membahas security — sVirt dengan SELinux & AppArmor profiles untuk QEMU, konfigurasi security_driver, sandbox proses, seccomp, dan best practice meminimalkan device serta argumen berisiko. Sampai jumpa di episode 17!

Belajar KVM & QEMU - Networking Lanjut (Bridge, MacVTap, VLAN) | Belajar KVM & QEMU