Belajar FreeBSD - Jails (Containerisasi Native)
Episode 15 of 23

Belajar FreeBSD - Jails (Containerisasi Native)

Memahami jails FreeBSD: containerisasi OS-level yang mengisolasi proses, filesystem, dan jaringan. Kalian akan membuat jail dengan jail(8), mengonfigurasi /etc/jail.conf, memakai jexec dan jls, lalu menggunakan ezjail dan bastille untuk manajemen modern termasuk jaringan VNET per jail.

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

Pendahuluan

Di episode 14 sebelumnya kalian sudah mengamankan komunikasi dengan OpenSSL dan SSH. Sekarang kita masuk ke salah satu fitur paling khas FreeBSD: jails — containerisasi native yang mengisolasi proses, filesystem, dan jaringan pada level OS. Setiap jail punya root, user, dan jaringan sendiri namun berbagi kernel dengan host — cara FreeBSD menjalankan banyak "server virtual" tanpa overhead virtualisasi penuh.

Konsep Jails

Apa yang Diisolasi

Jail membatasi proses di dalamnya ke lingkungan yang sudah ditentukan:

  • Filesystem — root jail yang berbeda dari host.
  • Network — alamat IP khusus atau stack jaringan virtual.
  • Proses — hanya proses di dalam jail yang bisa saling melihat.
  • User — UID di dalam jail tidak sama dengan UID host.

Jail vs Container Linux

Info

Jails berbeda dengan Docker. Docker membungkus proses dalam namespace dan cgroups, sementara jail mengisolasi seluruh lingkungan sistem operasi dengan kernel yang sama. Jails lebih dekat dengan "VM ringan" daripada container ala Docker — stabil dan bisa di-boot seperti sistem kecil.

Membuat Jail dengan jail(8)

Struktur Dasar

Jail paling sederhana butuh root filesystem sendiri. Cara umum menyediakannya: menggunakan base system melalui bsdinstall atau template, atau berbagi read-only dengan mount:

Membuat direktori jail
mkdir -p /usr/jails/www
bsdinstall jail /usr/jails/www

bsdinstall jail menginstal base system baru ke direktori jail — mirip menginstal FreeBSD mini untuk jail tersebut.

Konfigurasi di /etc/jail.conf

Jail dikonfigurasi di /etc/jail.conf:

Contoh /etc/jail.conf
www {
  host.hostname = "www.example.local";
  ip4.addr = "192.168.1.20";
  path = "/usr/jails/www";
  exec.start = "/bin/sh /etc/rc";
  exec.consolelog = "/var/log/jail_www_console.log";
}

Menjalankan Jail

Dengan jail.conf siap, jalankan dan periksa:

Menjalankan dan memeriksa jail
service jail start www
jls
jexec www ps aux

jls menampilkan semua jail aktif beserta JID dan IP-nya. jexec menjalankan perintah di dalam jail — cara masuk "ke dalam" lingkungan tersebut.

Masuk ke Console Jail

Untuk masuk sebagai root di dalam jail:

Masuk ke jail
jexec www /bin/sh

Manajemen Jails Modern

ezjail: Manajemen Template

ezjail menyederhanakan pembuatan banyak jail dengan template:

Menginstal ezjail
pkg install ezjail
sysrc ezjail_enable="YES"
ezjail-admin install

Buat jail dari template:

Membuat jail dengan ezjail
ezjail-admin create web01 "192.168.1.21"
ezjail-admin start web01
ezjail-admin console web01

ezjail menangani pembuatan base jail, cloning, dan manajemen harian dengan perintah yang singkat.

Bastille: Manajemen Modern

Bastille adalah generasi terbaru — CLI modern, dukungan ZFS, template, dan networking yang fleksibel:

Menginstal bastille
pkg install bastille
sysrc bastille_enable="YES"
service bastille start

Download base system dan buat container:

Membuat container bastille
bastille bootstrap 15.1-RELEASE
bastille create web02 15.1-RELEASE 192.168.1.22
bastille start web02
bastille console web02

Success

Bastille membawa jails ke tingkat modern: snapshot ZFS otomatis, template untuk meng-rollout lingkungan yang seragam, dan networking VNET yang mudah. Untuk lab homelab maupun produksi, Bastille adalah titik awal yang sangat direkomendasikan.

Networking Jails

Shared Networking

Dengan mode default, jail berbagi stack jaringan host dan hanya punya IP sendiri pada interface host. Konfigurasi ip4.addr pada jail.conf adalah bentuk ini — sederhana dan cukup untuk sebagian besar kasus.

VNET: Virtual Network per Jail

VNET memberi setiap jail stack jaringan sendiri lengkap dengan interface virtualnya:

Jail dengan VNET
vnet;
vnet.interface = "epair0b";
exec.prestart = "ifconfig epair0a create";
exec.prestart += "ifconfig epair0a up";
exec.poststart = "ifconfig bridge0 addm epair0a";

Dengan VNET, jail bisa punya interface sendiri, routing sendiri, dan bahkan menjalankan firewall sendiri — isolasi jaringan yang benar-benar penuh.

Warning

VNET memberi kekuatan besar tapi juga kompleksitas: interface epair perlu dihubungkan ke bridge host, dan routing di dalam jail harus dikonfigurasi sendiri. Mulailah dari shared networking, lalu naik ke VNET saat kebutuhan isolasi meningkat.

Shared vs Dedicated Networking

ModeKelebihanKekurangan
Shared (IP di host)Sederhana, ringanIsolasi jaringan terbatas
VNETIsolasi penuh, firewall sendiriKonfigurasi lebih kompleks

Praktik Terbaik Jails

  • Satu jail untuk satu layanan — jangan menumpuk banyak service dalam satu jail.
  • Perbarui jail secara berkala; base jail bisa di-upgrade dari template.
  • Gunakan ZFS dataset per jail untuk snapshot dan backup mudah.
  • Batasi resource dengan rctl bila perlu.
  • Jangan menjalankan jail sebagai root dari host untuk kebutuhan yang tidak perlu.
Audit jail berjalan
jls
jexec www zfs list

Penutup

Di episode 15 ini kalian sudah memahami jails FreeBSD: konsep isolasi OS-level, pembuatan dengan jail(8), konfigurasi /etc/jail.conf, perintah jls dan jexec, serta manajemen modern dengan ezjail dan bastille termasuk networking shared dan VNET.

Inti yang harus dibawa pulang:

  • Jails mengisolasi filesystem, jaringan, dan proses pada level OS dengan kernel yang sama.
  • Konfigurasi jail terpusat di /etc/jail.conf; kelola dengan service jail.
  • jls memeriksa jail aktif; jexec masuk ke dalamnya.
  • ezjail memudahkan template; bastille modern dengan ZFS dan VNET.
  • Mulai dari shared networking, naik ke VNET saat butuh isolasi penuh.

Di episode 16 selanjutnya kita akan membahas bhyve & virtualization — hypervisor tipe-2 bawaan FreeBSD, penggunaan bhyve dan bhyvectl, frontend vm-bhyve, serta praktik menginstal VM Linux dan FreeBSD dengan UEFI, storage virtio, dan networking tap/bridge.

Belajar FreeBSD - Jails (Containerisasi Native) | Belajar FreeBSD