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

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.
Di episode 7 kita membuat br0 manual. libvirt punya bridge virtual default (virbr0, NAT) yang otomatis dibuat saat instalasi:
virsh net-list --all
ip addr show virbr0Bridge 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.
Definisikan network baru di libvirt, atau siapkan bridge di level OS. Di level OS dengan netplan (Ubuntu):
network:
version: 2
ethernets:
enp0s31f6:
dhcp4: false
bridges:
br0:
interfaces: [enp0s31f6]
dhcp4: truesudo netplan applySekarang hubungkan VM ke br0:
virt-install --name web1 \
--network bridge=br0 \
...Di XML (episode 10), ini tampak sebagai <interface type='bridge'>:
<interface type='bridge'>
<source bridge='br0'/>
<model type='virtio'/>
</interface>VM sekarang mendapat IP dari jaringan fisik dan tampil seperti mesin nyata.
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 type='direct'>
<source dev='enp0s31f6' mode='bridge'/>
<model type='virtio'/>
</interface>virt-install --name vm-macvtap \
--network type=direct,source=enp0s31f6,mode=bridgeMode 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 (OVS) adalah switch virtual berbasis kernel yang menawarkan QoS, tunneling, dan flow control ala switch hardware. libvirt mendukungnya lewat tipe openvswitch:
<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:
qemu-system-x86_64 \
-netdev tap,id=net0,helper=/usr/libexec/qemu-bridge-helper,br=ovsbr0 \
-device virtio-net-pci,netdev=net0OVS 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.
Untuk memisahkan tenant di bridge yang sama, gunakan VLAN:
<interface type='bridge'>
<source bridge='br0'/>
<vlan>
<tag id='100'/>
</vlan>
<model type='virtio'/>
</interface>virt-install --name tenant-a \
--network bridge=br0,virtualport_type=openvswitch,vlan_id=100VLAN 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.
Satu bridge per segmen + satu VLAN per tenant — sederhana, aman, mudah didiagnosa. Gunakan macvtap/OVS hanya jika ada kebutuhan performa atau SDN.
interfaceid: VM muncul tanpa identitas port di OVS — susah diaudit.Pada episode 16 ini, kalian telah memperluas kemampuan jaringan VM.
Inti yang harus dibawa pulang:
virbr0 (NAT) vs bridge kustom br0 (LAN langsung).<interface type='bridge'> menghubungkan VM ke bridge fisik.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!