Belajar FreeBSD - FreeBSD as Router, Firewall & Network Appliance
Episode 19 of 23

Belajar FreeBSD - FreeBSD as Router, Firewall & Network Appliance

Menerapkan FreeBSD sebagai perangkat jaringan: router, firewall, dan NAT appliance, serta mengenal OPNsense sebagai firewall distro berbasis FreeBSD dan NAS dengan ZFS. Kalian juga akan menjalankan stack web Nginx, MySQL, PostgreSQL, dan Redis untuk produksi yang andal.

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

Pendahuluan

Di episode 18 sebelumnya kalian sudah melakukan performance tuning. Sekarang kita gabungkan semuanya ke dalam skenario nyata: menjalankan FreeBSD sebagai router, firewall, dan perangkat jaringan — salah satu use case paling mapan dari FreeBSD.

Dari home router hingga appliance kelas enterprise, FreeBSD adalah fondasi banyak produk jaringan terkenal. Episode ini membahas peran-peran tersebut, termasuk OPNsense dan NAS, lalu beralih ke layanan aplikasi: menjalankan stack web Nginx, MySQL, PostgreSQL, dan Redis untuk produksi.

FreeBSD sebagai Router dan Firewall

Menyusun Perangkat Jaringan

Kalian sudah merakit dasar router di episode 11. Sekarang kita sempurnakan dengan praktik terbaik: interface terpisah untuk WAN dan LAN, forwarding aktif, NAT, dan DHCP:

Konfigurasi router lengkap
sysrc ifconfig_em0="inet 203.0.113.1/24"
sysrc ifconfig_em1="inet 192.168.1.1/24"
sysrc gateway_enable="YES"
sysrc pf_enable="YES"
sysrc dhcpd_enable="YES"

Hardening Ruleset

Ruleset pf untuk perangkat jaringan harus minimal dan ketat — hanya buka port yang dibutuhkan:

Ruleset pf untuk appliance
ext_if = "em0"
lan_if = "em1"
table <admin> { 192.168.1.0/24 }
 
set skip on lo0
scrub in all
nat on $ext_if from $lan_if:network to any -> ($ext_if)
block all
pass in on $lan_if from <admin> to any keep state
pass in on $ext_if proto tcp to port 22 from <admin> keep state
pass out all keep state

Danger

Untuk perangkat jaringan produksi, jangan pernah membuka SSH ke WAN tanpa pembatasan alamat. Aturan di atas hanya mengizinkan SSH dari jaringan admin — pola yang harus kalian tiru.

OPNsense: Firewall Distro Berbasis FreeBSD

OPNsense adalah distribusi firewall yang dibangun di atas FreeBSD — bukti nyata kemampuan FreeBSD sebagai appliance. Dengan UI web untuk firewall, VPN, IDS/IPS, dan monitoring, OPNsense menyembunyikan kompleksitas di balik antarmuka yang ramah.

Bagi kalian yang menyukai CLI, menjalankan FreeBSD langsung sebagai router adalah pilihan yang murni. Bagi yang menginginkan manajemen tim dan UI, OPNsense adalah produk jadi yang matang.

FreeBSD sebagai NAS dengan ZFS

ZFS menjadikan FreeBSD pilihan utama untuk network attached storage (NAS):

Menyiapkan pool untuk NAS
zpool create nas mirror /dev/ada1 /dev/ada2
zfs create nas/share
zfs set compression=lz4 nas/share
zfs set sharenfs="on" nas/share

Layanan file sharing di FreeBSD bisa menggunakan NFS (seperti di atas), Samba untuk interoperabilitas Windows, atau produk jadi seperti TrueNAS yang berbasis FreeBSD.

Success

Kombinasi ZFS pool + snapshot terjadwal + replikasi syncoid (episode 9) menjadikan FreeBSD NAS yang tangguh: data aman dengan checksum, berversi dengan snapshot, dan terlindungi dengan replikasi offsite.

Menjalankan Stack Web di FreeBSD

Nginx sebagai Web Server

Nginx adalah web server populer di FreeBSD:

Menginstal dan menjalankan nginx
pkg install nginx
sysrc nginx_enable="YES"
service nginx start
service nginx status

Konfigurasi server block di /usr/local/etc/nginx/nginx.conf atau file terpisah di conf.d. Untuk TLS, arahkan ke sertifikat yang kalian buat di episode 14.

Database: MySQL, PostgreSQL, dan Redis

FreeBSD menjalankan database kelas produksi dengan baik:

Menginstal database
pkg install mysql84-server
pkg install postgresql16-server
pkg install redis

Aktifkan masing-masing:

Mengaktifkan database
sysrc mysql_enable="YES"
service mysql-server start
sysrc postgresql_enable="YES"
service postgresql start
sysrc redis_enable="YES"
service redis start

Info

Untuk PostgreSQL, jalankan inisialisasi database pertama kali: service postgresql initdb (versi paket tertentu), lalu buat user dan database dengan createuser dan createdb sebagai user postgres.

Merakit Stack Lengkap

Pola produksi yang umum: Nginx di depan sebagai reverse proxy dan static file, aplikasi di belakang, database di lapisan terakhir. Letakkan seluruh service di atas ZFS dataset untuk snapshot:

Menyiapkan dataset untuk aplikasi
zfs create tank/data/www
zfs create tank/data/db

Deployment Web Server Produksi

Beberapa praktik yang menjaga web server tetap sehat:

  • Batasi akses database hanya untuk aplikasi, bukan publik.
  • Gunakan reverse proxy Nginx untuk TLS termination.
  • Aktifkan log rotasi (episode 20).
  • Snapshot dataset sebelum upgrade aplikasi.
Rutinitas deployment aman
bectl create sebelum-deploy
pkg upgrade
service nginx reload
service mysql-server restart

Pemantauan Dasar

Perangkat jaringan dan web server perlu dipantau terus-menerus — bukan hanya saat ada masalah:

Memantau layanan inti
service -e
pfctl -s info
systat -ifstat 1
tail -f /var/log/messages

Penutup

Di episode 19 ini kalian sudah menerapkan FreeBSD sebagai perangkat jaringan: router dan firewall dengan ruleset ketat, pengenalan OPNsense dan TrueNAS sebagai produk berbasis FreeBSD, serta menjalankan stack web Nginx, MySQL, PostgreSQL, dan Redis untuk produksi yang andal.

Inti yang harus dibawa pulang:

  • Router FreeBSD = forwarding + pf NAT + DHCP dengan interface WAN/LAN terpisah.
  • OPNsense adalah firewall distro FreeBSD; TrueNAS adalah NAS berbasis FreeBSD.
  • ZFS membuat NAS FreeBSD tangguh: checksum, snapshot, dan replikasi.
  • Nginx + database + Redis berjalan stabil di FreeBSD dengan rc system.
  • Selalu snapshot dan boot environment sebelum deployment besar.

Di episode 20 selanjutnya kita akan membahas high availability & monitoring — failover dengan CARP, load balancing, dan pemantauan dengan netdata, Prometheus, node_exporter, serta rotasi log dengan newsyslog.

Belajar FreeBSD - FreeBSD as Router, Firewall & Network Appliance | Belajar FreeBSD