Kembali

Cara Setting MikroTik Load Balancing dengan 3 ISP

Load balancing atau routing multi-ISP memungkinkan sebuah jaringan mengoptimalkan penggunaan bandwidth dari tiga penyedia layanan internet (Internet Service Provider) sekaligus. MikroTik RouterOS merupakan platform yang populer dalam mengimplementasikan teknik ini berkat fleksibilitas konfigurasinya.

Artikel ini akan membahas step-by-step proses konfigurasi load balancing pada MikroTik RouterOS menggunakan tiga koneksi ISP (ISP‑A, ISP‑B, ISP‑C). Penjelasan meliputi skema IP, pengaturan interface, NAT, firewall mangle, policy routing, dan pemeriksaan trafik. Semua konfigurasi disajikan dalam format RouterOS CLI sehingga dapat langsung disalin dan di-paste di terminal MikroTik.

Pastikan Anda memiliki akses administratif pada router MikroTik yang akan dikerjakan. Pada contoh ini, kami akan menggunakan versi RouterOS 7.x, namun sebagian besar perintah tetap kompatibel dengan versi 6.x dengan beberapa penyesuaian minor.

1. Persiapan Awal

Untuk melakukan konfigurasi load balancing, Anda membutuhkan informasi berikut dari masing-masing ISP:

Berikut contoh data yang akan kita gunakan:

ISP Interface Alamat IP (statis) Subnet Gateway
ISP‑A ether3 203.0.113.10 203.0.113.0/24 203.0.113.1
ISP‑B ether4 198.51.100.10 198.51.100.0/24 198.51.100.1
ISP‑C ether5 192.0.2.10 192.0.2.0/24 192.0.2.1

Di sisi internal jaringan lokal, kita miliki subnet 172.16.0.0/24 untuk LAN yang terhubung ke router melalui interface ether1.

2. Konfigurasi Interface dan Alamat IP

Langkah pertama adalah menambahkan IP static pada masing-masing interface WAN.

/ip address add address=203.0.113.10/24 interface=ether3 comment="ISP-A"
/ip address add address=198.51.100.10/24 interface=ether4 comment="ISP-B"
/ip address add address=192.0.2.10/24 interface=ether5 comment="ISP-C"

Selanjutnya konfigurasi IP LAN.

/ip address add address=172.16.0.1/24 interface=ether1 comment="LAN"

3. Menyiapkan NAT (masquerade)

Semua trafik LAN akan melalui NAT ketika mencapai internet. Tambahkan aturan NAT berikut bagi setiap interface WAN.

/ip firewall nat add chain=srcnat out-interface=ether3 action=masquerade
/ip firewall nat add chain=srcnat out-interface=ether4 action=masquerade
/ip firewall nat add chain=srcnat out-interface=ether5 action=masquerade

Perhatikan bahwa out-interface diatur ke masing-masing blok WAN sehingga NAT hanya berlaku ketika keluar melalui interface tersebut.

4. Menentukan Default Route dengan Prioritas

Pada sistem routing multipath, RouterOS pilih rute default berdasarkan tabel routing. Kita harus menambahkan rute default untuk setiap ISP.

Untuk rute default, atribut distance berguna menandai prioritas. Rute dengan distance paling kecil akan dipilih terlebih dahulu jika tidak ada aturan lain.

/ip route add dst-address=0.0.0.0/0 gateway=203.0.113.1 scope=1 distance=10
/ip route add dst-address=0.0.0.0/0 gateway=198.51.100.1 scope=1 distance=20
/ip route add dst-address=0.0.0.0/0 gateway=192.0.2.1 scope=1 distance=30

Dengan konfigurasi ini, bila tidak diarahkan secara eksplisit melalui policy routing, lalu lintas akan melewati ISP‑A terlebih dahulu, kemudian ISP‑B, lalu ISP‑C.

5. Memasang Mangle untuk Menandai Paket

Panggung utama load balancing terletak pada penggunaan Mangle di firewall. Hadapatnya operasi matching lalu lintas lalu meng-generate mark-routing dengan nilai yang unik untuk masing-masing rute.

Konfigurasi berikut membagi trafik asal LAN ke dalam 3 grup. Contoh di sini menggunakan metode pct (persentase) untuk menyeimbangkan beban 50 % pada ISP‑A, 30 % pada ISP‑B, dan 20 % pada ISP‑C.

/ip firewall mangle add chain=prerouting src-address=172.16.0.0/24 action=mark-routing new-routing-mark=ISP-A per-instance=100 host-portrange=80-443 protocol=tcp comment="Bandir 50% ISP-A"
/ip firewall mangle add chain=prerouting src-address=172.16.0.0/24 action=mark-routing new-routing-mark=ISP-B per-instance=100 pct=30 comment="Bandir 30% ISP-B"
/ip firewall mangle add chain=prerouting src-address=172.16.0.0/24 action=mark-routing new-routing-mark=ISP-C per-instance=100 pct=20 comment="Bandir 20% ISP-C"

Penjelasan:

Jika anda menyukai pembagian berdasarkan port tertentu atau filter lainnya, tinggal menyesuaikan protocol dan port sendinya.

6. Membuat Rute Berdasarkan Mark Routing

Setelah menandai paket, Anda perlu membuat rute khusus agar setiap paket dikelola melalui gateway yang sesuai. Tambahkan rute berikut:

/ip route add dst-address=0.0.0.0/0 gateway=203.0.113.1 routing-mark=ISP-A
/ip route add dst-address=0.0.0.0/0 gateway=198.51.100.1 routing-mark=ISP-B
/ip route add dst-address=0.0.0.0/0 gateway=192.0.2.1 routing-mark=ISP-C

Keunikan routing-mark di sini memungkinkan RouterOS mengaitkan paket berlabel ISP-A, ISP-B, atau ISP-C ke rute default masing‑masing.

7. Menambahkan Firewall Filter untuk Melindungi Rute (Opsional)

Untuk mencegah paket luar tiba di rute yang tidak lazim atau mencemari rute load balance, penggunaan filter kontrol dapat membantu:

/ip firewall filter add chain=forward src-address=172.16.0.0/24 dst-address=0.0.0.0/0 in-interface=ether1 action=accept comment="Allow LAN traffic"
/ip firewall filter add chain=forward src-address=172.16.0.0/24 dst-address=0.0.0.0/0 out-interface=ether3 action=accept comment="Accept outgoing via ISP-A"
/ip firewall filter add chain=forward src-address=172.16.0.0/24 dst-address=0.0.0.0/0 out-interface=ether4 action=accept comment="Accept outgoing via ISP-B"
/ip firewall filter add chain=forward src-address=172.16.0.0/24 dst-address=0.0.0.0/0 out-interface=ether5 action=accept comment="Accept outgoing via ISP-C"
/ip firewall filter add chain=forward action=drop comment="Drop all other traffic"

Aturan ini menjamin bahwa lalu lintas keluar hanya lewat interface yang sudah ditentukan.

8. Quick Check: Melacak Rute Aktif

Gunakan perintah ping dan traceroute dari MikroTik untuk memverifikasi rute. Contoh:

/ping 8.8.8.8 routing-mark=ISP-A
/traceroute 8.8.8.8 routing-mark=ISP-B

Jika trace menunjukkan perubahan rute, konfigurasi berfungsi.

9. Menyesuaikan Load Balancing dengan PCC (Per Connection Classifier)

Metode pct di atas sederhana namun dapat mengalami pergeseran beban secara tidak seimbang dalam jangka panjang. Untuk pendekatan yang lebih stabil, gunakan PCC.

/ip firewall mangle add chain=prerouting protocol=tcp dst-port=80,443 action=mark-routing new-routing-mark=ISP-A per-instance=1 classifier=src-as-pool:poolA dst-as-pool:poolA \
    comment="PCC for HTTP/HTTPS over ISP-A"
/ip firewall mangle add chain=prerouting protocol=tcp dst-port=80,443 action=mark-routing new-routing-mark=ISP-B per-instance=1 classifier=src-as-pool:poolB dst-as-pool:poolB \
    comment="PCC for HTTP/HTTPS over ISP-B"
/ip firewall mangle add chain=prerouting protocol=tcp dst-port=80,443 action=mark-routing new-routing-mark=ISP-C per-instance=1 classifier=src-as-pool:poolC dst-as-pool:poolC \
    comment="PCC for HTTP/HTTPS over ISP-C"

Anda perlu membuat as-pool terlebih dahulu:

/ip firewall address-pool add name=poolA ranges=172.16.0.1-172.16.0.30
/ip firewall address-pool add name=poolB ranges=172.16.0.31-172.16.0.60
/ip firewall address-pool add name=poolC ranges=172.16.0.61-172.16.0.90

Dengan PCC, setiap koneksi baru divendor ke ISP tertentu berbasis rule berikut, sehingga aliran data dalam satu koneksi akan tetap melewati jalur yang sama.

10. Menyederhanakan Monitoring

Untuk memonitor trafik, gunakan Torch atau IP Traffic Flow. Berikut contoh perintah Torch:

/tool torch interface=ether3
/tool torch interface=ether4
/tool torch interface=ether5

Ada lebih banyak statistik yang dapat dikelola dengan /ip traffic-flow namun sebuah contoh sederhana:

/ip traffic-flow export file=traffic.csv

File CSV dapat diimpor ke spreadsheet untuk analisis tren bulanan.

11. Diagnostik Masalah Umum

  1. DNS Tidak Berfungsi – Pastikan DNS server bisa dihubungi melalui salah satu ISP. Konfigurasi DNS di MikroTik bisa diatur di /ip dns set servers=8.8.8.8,8.8.4.4 atau gunakan DNS lokal.
  2. Konflik Alamat IP – Pastikan IP publik kredensial tidak tumpang tindih. Di RouterOS, gunakan /ip address print untuk meninjau semua IP.
  3. Masalah Routing – Cek log:
    /log print where message~"route"
    
  4. Trafik Tidak Balancing – Periksa mangle lama:
    /ip firewall mangle print
    
    Pastikan per-instance dan pct berfungsi.
  5. Latency Tinggi – Jika satu ISP dalam keadaan overload, pertimbangkan Barrier di mangle untuk mencegah paket gagal mengalir melalui jalur bermasalah.

12. Menangani Failover (Redundansi)

Pada skenario 3 ISP, biasanya Anda tetap menginginkan redundansi. Salah satu cara sederhana adalah menambahkan Routing Mark yang sesuai dengan kondisi health check. Anda dapat menggunakan Firewall User-List untuk menandai liveness.\n

/ip firewall user-list add list=ISP-A-Alive address=203.0.113.10
/ip firewall user-list add list=ISP-B-Alive address=198.51.100.10
/ip firewall user-list add list=ISP-C-Alive address=192.0.2.10

Selanjutnya, buat mangle yang menyesuaikan routing-mark hanya bila user-list berisi alamat. Contohnya:

/ip firewall mangle add chain=prerouting src-address=172.16.0.0/24 user-list=ISP-A-Alive action=mark-routing new-routing-mark=ISP-A comment="Mark if ISP-A alive"
/ip firewall mangle add chain=prerouting src-address=172.16.0.0/24 user-list=ISP-B-Alive action=mark-routing new-routing-mark=ISP-B comment="Mark if ISP-B alive"
/ip firewall mangle add chain=prerouting src-address=172.16.0.0/24 user-list=ISP-C-Alive action=mark-routing new-routing-mark=ISP-C comment="Mark if ISP-C alive"

Jika salah satu gateway tidak merespon, user‑list tidak akan memiliki alamat dan mangle tidak memberi mark‑routing tersebut. Upload ke script health‑check eksternal atau gunakan IP SLA di MikroTik untuk memantau respons waktu.

13. Menyesuaikan Load Balancing Berdasarkan Traffic Type

Beberapa organisasi menginginkan bandwidth 90‑10‑0 dengan 90 % trafik HTTP, 10 % FTP, dan 0 % FTP/SSH. Berikut contoh praktik:

/ip firewall mangle add chain=prerouting protocol=tcp dst-port=80,443 action=mark-routing new-routing-mark=ISP-A per-instance=1 comment="HTTP/HTTPS via ISP-A"
/ip firewall mangle add chain=prerouting protocol=tcp dst-port=21,22,23,25 action=mark-routing new-routing-mark=ISP-B per-instance=1 comment="FTP/SSH via ISP-B"
/ip firewall mangle add chain=prerouting protocol=all action=mark-routing new-routing-mark=ISP-C per-instance=1 comment="All other traffic via ISP-C"

Dengan metode ini, setiap jenis trafik dialihkan ke gateway yang optimal.

14. Mengoptimalkan QoS Bersamaan dengan Load Balancing

Setelah paket Anda melebihi jalur yang ditandai, anda dapat terus menerapkan Queue Class di RouterOS:

/queue simple add name="Upload-ISP-A" target=0.0.0.0/0 max-limit=10M/5M
/queue simple add name="Upload-ISP-B" target=0.0.0.0/0 max-limit=5M/2M
/queue simple add name="Upload-ISP-C" target=0.0.0.0/0 max-limit=2M/1M

Atur priority, panjang buffer, dan backlog sesuai tujuan. Dengan kombinasi mangle dan queue, trafik dapat di‑prioritaskan dengan akurat.

15. Mengatur Skrip Otomatis untuk Reset dan Pembaruan

Stakeholder jaringan memerlukan skrip yang dapat dijalankan secara terjadwal. Berikut contoh skrip sederhana yang dapat menyimpan konfigurasi ke file di jaringan.

/system scheduler add name="Backup-RouterConfig" interval=24h on-event="/system backup save name=router_config_$(/system clock get time stamp=1)\.tar.gz"
/system scheduler add name="Health-Check" interval=5m on-event="/tool snmp walk name=router_isp_a .1.3.6.1.2.1.1.3.0"
/system scheduler add name="Rest-Interface" interval=1h on-event="/interface reset-statistics interface=ether3,ether4,ether5"
/system scheduler add name="Check-Connectivity" interval=2m on-event="/ping 8.8.8.8 count=1 interval=1s"
/system scheduler add name="Clean-OldBackups" interval=48h on-event="/file remove [file find name~\"router_config_...\"]"

Jangan lupa menyesuaikan jalur backup ke FTP atau SMB share untuk keperluan pemulihan.

16. Contoh Konfigurasi Akhir (keseluruhan)

Di bawah ini terdapat contoh skrip lengkap yang dapat Anda paste satu per satu di terminal MikroTik. Skrip ini menyertakan interface, IP, NAT, perutean, mangle, firewall, dan jadwal.

# Konfigurasi Interface dan IP
/ip address add address=203.0.113.10/24 interface=ether3 comment="ISP-A"
/ip address add address=198.51.100.10/24 interface=ether4 comment="ISP-B"
/ip address add address=192.0.2.10/24 interface=ether5 comment="ISP-C"
/ip address add address=172.16.0.1/24 interface=ether1 comment="LAN"

# NAT
/ip firewall nat add chain=srcnat out-interface=ether3 action=masquerade
/ip firewall nat add chain=srcnat out-interface=ether4 action=masquerade
/ip firewall nat add chain=srcnat out-interface=ether5 action=masquerade

# Default Route
/ip route add dst-address=0.0.0.0/0 gateway=203.0.113.1 scope=1 distance=10
/ip route add dst-address=0.0.0.0/0 gateway=198.51.100.1 scope=1 distance=20
/ip route add dst-address=0.0.0.0/0 gateway=192.0.2.1 scope=1 distance=30

# Mangle
/ip firewall mangle add chain=prerouting src-address=172.16.0.0/24 action=mark-routing new-routing-mark=ISP-A per-instance=100 pct=50 comment="50% ISP-A"
/ip firewall mangle add chain=prerouting src-address=172.16.0.0/24 action=mark-routing new-routing-mark=ISP-B per-instance=100 pct=30 comment="30% ISP-B"
/ip firewall mangle add chain=prerouting src-address=172.16.0.0/24 action=mark-routing new-routing-mark=ISP-C per-instance=100 pct=20 comment="20% ISP-C"

# Routing Mark Rute
/ip route add dst-address=0.0.0.0/0 gateway=203.0.113.1 routing-mark=ISP-A
/ip route add dst-address=0.0.0.0/0 gateway=198.51.100.1 routing-mark=ISP-B
/ip route add dst-address=0.0.0.0/0 gateway=192.0.2.1 routing-mark=ISP-C

# Filter Firewall
/ip firewall filter add chain=forward src-address=172.16.0.0/24 action=accept comment="LAN to internet"
/ip firewall filter add chain=forward src-address=172.16.0.0/24 dst-address=0.0.0.0/0 in-interface=ether1 action=accept comment="LAN inbound"
/ip firewall filter add chain=forward src-address=172.16.0.0/24 dst-address=0.0.0.0/0 out-interface=ether3 action=accept comment="WAN A"
/ip firewall filter add chain=forward src-address=172.16.0.0/24 dst-address=0.0.0.0/0 out-interface=ether4 action=accept comment="WAN B"
/ip firewall filter add chain=forward src-address=172.16.0.0/24 dst-address=0.0.0.0/0 out-interface=ether5 action=accept comment="WAN C"
/ip firewall filter add chain=forward action=drop comment="Drop other"

# Scheduler
/system scheduler add name="Backup-Config" interval=24h on-event="/system backup save name=router_config_$(/system clock get time stamp=1)\.tar.gz"

17. FAQ (Frequently Asked Questions)

  1. Bagaimana jika satu ISP keluar dari keadaan normal lewat SSL‑Inspection? Pada kasus ini, router akan tetap mengirimkan paket lewat gateway yang dialokasikan sebelum mengidentifikasi kegagalan. Gunakan IP SLA untuk deteksi lebih cepat.
  2. Apakah load balancing dapat dilakukan tanpa mangle? Tidak, karena mangle diperlukan untuk menandai paket agar routing provider dapat menggunakan routing-mark. Tanpa mangle, semua paket akan diputuskan hanya berdasarkan default routing.
  3. Bisakah saya menggunakan percabangan berdasarkan source port? Ya, gunakan src-port di mangle untuk menyesuaikan beban.
  4. Bagaimana menyesuaikan kapasitas upload secara real‑time? Integrasikan Queue Priority dengan monitoring bandwidth per ISP.

18. Kesimpulan

Load balancing dengan tiga ISP pada MikroTikRouterOS melibatkan beberapa komponen penting:

Dengan mengikuti panduan ini, Anda dapat meningkatkan ketersediaan, manajemen bandwidth, dan toleransi kesalahan jaringan. Selalu lakukan uji coba di lingkungan staging sebelum merilis ke produksi, dan dokumentasikan setiap perubahan konfigurasi untuk referensi di masa depan.

Semoga artikel ini membantu Anda dalam menyiapkan MikroTik load balancing dengan tiga ISP secara optimal.

Kembali