Mau akses NVR CCTV, web server, atau game server dari luar rumah/kantor lewat MikroTik? Itu namanya DST-NAT (Destination NAT) — sering disebut "port forwarding". Bisa disetting lewat WinBox (klik-klik), tapi kalau paham script-nya, kamu bisa lebih cepat, bisa backup/restore konfigurasi, dan lebih gampang debug kalau ada yang salah.

Sebelum mulai: Artikel ini fokus ke script terminal RouterOS untuk skenario DST-NAT spesifik. Kalau kamu baru belajar konsep dasar NAT (apa itu masquerade, kenapa perlu NAT sama sekali), mulai dari Modul 03 NAT & Routing — Cekademi dulu.

DST-NAT vs SRC-NAT — Arahnya Kebalikan

Dua jenis NAT ini sering ketuker karena sama-sama "NAT", padahal arahnya berlawanan:

SRC-NAT (Masquerade) DST-NAT (Port Forwarding)
Arah traffic LAN → Internet (keluar) Internet → LAN (masuk)
Contoh kasus HP di rumah browsing internet Orang luar akses NVR CCTV kamu
Yang diubah IP source (jadi IP publik) IP destination (jadi IP lokal)
Chain di script srcnat dstnat
Cara gampang inget: SRC-NAT mengubah pengirim (source) — dipakai supaya banyak perangkat LAN bisa "pinjam" 1 IP publik buat keluar. DST-NAT mengubah tujuan (destination) — dipakai supaya orang dari luar bisa "nembus" ke 1 perangkat spesifik di dalam.

Script Dasar — Forward 1 Port

Skenario: kamu punya web server di 192.168.88.10 port 80, mau bisa diakses dari internet lewat IP publik router (interface ether1).

Forward port 80 ke server internal
/ip firewall nat
add chain=dstnat action=dst-nat \
    in-interface=ether1 protocol=tcp dst-port=80 \
    to-addresses=192.168.88.10 to-ports=80 \
    comment="Forward web server"
Ganti ether1 dengan interface yang menghadap internet (WAN) di router kamu, dan 192.168.88.10 dengan IP server tujuan. Pastikan server itu sudah IP statis / DHCP reservation — kalau IP-nya berubah, rule ini jadi salah sasaran.
Rule ini SAJA belum tentu cukup. Kalau firewall filter kamu punya policy default "drop" di chain forward, traffic yang sudah di-DST-NAT bisa tetap keblokir. Lihat bagian Troubleshooting di bawah.

Skenario Umum Lainnya

Translasi Port (Port Luar Beda dengan Port Dalam)

Kadang kamu tidak mau expose port default (misal port 80 web) langsung — pakai port "tersamar" di luar (misal 8080), tapi tetap diarahkan ke port 80 di dalam:

Port luar 8080 → port dalam 80
add chain=dstnat action=dst-nat \
    in-interface=ether1 protocol=tcp dst-port=8080 \
    to-addresses=192.168.88.10 to-ports=80 \
    comment="Web server via port tersamar"

Beberapa Service Sekaligus (IP Publik Sama)

Kalau cuma punya 1 IP publik tapi mau forward ke beberapa server, kuncinya: port luar harus beda-beda (karena IP publik cuma satu), baru diarahkan ke port dalam masing-masing server.

Web server + NVR CCTV, 1 IP publik
/ip firewall nat
add chain=dstnat action=dst-nat protocol=tcp dst-port=8080 \
    to-addresses=192.168.88.10 to-ports=80 comment="Web server"
add chain=dstnat action=dst-nat protocol=tcp dst-port=8000 \
    to-addresses=192.168.88.20 to-ports=80 comment="NVR CCTV"

Range Port (Aplikasi yang Butuh Banyak Port)

Beberapa aplikasi (misal software CCTV tertentu, game server) butuh rentang port, bukan cuma satu. RouterOS bisa forward sekaligus pakai range, asal jumlah port di kedua sisi (luar & dalam) sama:

Forward range port 5000-5010
add chain=dstnat action=dst-nat protocol=tcp \
    dst-port=5000-5010 to-addresses=192.168.88.10 \
    to-ports=5000-5010 comment="Range port aplikasi"

Protokol UDP (Bukan Cuma TCP)

Beberapa aplikasi pakai UDP, bukan TCP (misal VoIP, beberapa game, VPN). Cukup ganti protocol=tcp jadi protocol=udp — atau buat dua rule terpisah kalau butuh keduanya:

Forward UDP
add chain=dstnat action=dst-nat protocol=udp \
    dst-port=51820 to-addresses=192.168.88.10 \
    to-ports=51820 comment="WireGuard UDP"
Contoh di atas untuk WireGuard (port default 51820/UDP) — detail setup WireGuard MikroTik lengkap ada di artikel terpisah.

Hairpin NAT — Akses Servis Sendiri dari Dalam LAN

Kasus klasik yang bikin bingung: DST-NAT sudah benar, orang dari INTERNET bisa akses server kamu pakai IP publik — tapi perangkat LAIN di LAN yang sama (rumah/kantor) malah GAGAL akses pakai IP publik itu juga. Ini disebut masalah hairpin NAT / NAT loopback, dan butuh rule tambahan:

Fix hairpin NAT
/ip firewall nat
add chain=srcnat action=masquerade \
    src-address=192.168.88.0/24 \
    dst-address=192.168.88.10 protocol=tcp dst-port=80 \
    comment="Hairpin NAT web server"
Ganti 192.168.88.0/24 dengan subnet LAN kamu. Rule ini membuat traffic dari LAN yang menuju IP server LAN sendiri (lewat proses DST-NAT) tetap ter-masquerade dengan benar — tanpa ini, biasanya koneksi timeout atau balik ke request awal (asymmetric routing).
Alternatif tanpa hairpin NAT: Kalau cuma butuh akses dari dalam LAN, lebih simpel pakai DNS lokal / hosts file yang mengarahkan nama domain langsung ke IP lokal server, tanpa lewat proses NAT sama sekali. Hairpin NAT tetap perlu kalau kamu mau IP publik/domain yang SAMA berfungsi baik dari luar maupun dalam.

Troubleshooting — Kenapa Port Masih Tertutup

Urutan cek paling efisien kalau DST-NAT sudah disetting tapi masih tidak bisa diakses dari luar:

CEK 1
Firewall Filter — Chain Forward — Jalankan /ip firewall filter print. Kalau ada rule chain=forward action=drop di atas, traffic yang sudah lolos DST-NAT bisa tetap keblokir di sini. Tambahkan rule accept untuk traffic tujuan server kamu, DI ATAS rule drop tersebut (urutan rule penting di RouterOS).
CEK 2
Cek IP Publik Asli, Bukan CGNAT — Buka Cek IP Saya dari browser di jaringan itu. Kalau IP yang muncul BEDA dari IP di interface WAN router kamu (cek /ip address print), berarti ISP kasih kamu CGNAT — DST-NAT di router sendiri sudah benar tapi ISP tidak meneruskan port dari internet ke rumahmu sama sekali.
CEK 3
Verifikasi dari Luar Jaringan — Test dari luar LAN (pakai data seluler, atau Port Checker cekipsaya.com) — jangan test dari dalam LAN yang sama, karena itu kena masalah hairpin NAT (beda akar masalah, lihat bagian sebelumnya).
CEK 4
Cek Urutan Rule NAT — RouterOS mengeksekusi rule NAT dari atas ke bawah, berhenti di rule PERTAMA yang cocok. Kalau ada rule dst-nat lain di atas yang juga match kriteria traffic ini (misal rule generik yang terlalu luas), rule kamu tidak akan pernah kena giliran. Cek urutan dengan /ip firewall nat print.
CEK 5
Test Port dari Perangkat Server Langsung — Pastikan service di server benar-benar listening di port itu (misal netstat di server), dan tidak ada firewall LOKAL di server itu sendiri (Windows Firewall, ufw di Linux, dll) yang memblokir koneksi masuk.

Keamanan — Jangan Asal Buka Port

DST-NAT membuka pintu dari internet langsung ke perangkatmu — ini nyaman tapi juga risiko kalau tidak hati-hati.

Ringkasan: DST-NAT = arahkan traffic masuk ke perangkat spesifik. Tiga jebakan paling umum: firewall filter yang masih drop, lupa hairpin NAT untuk akses dari LAN sendiri, dan CGNAT dari ISP yang bikin DST-NAT lokal sia-sia. Selalu cek dari LUAR jaringan buat verifikasi hasil sebenarnya.

FAQ — Pertanyaan yang Sering Ditanyakan

dst-nat mengarahkan traffic ke IP tujuan lain (bisa perangkat berbeda di jaringan). redirect adalah kasus khusus dst-nat yang mengarahkan traffic ke router itu sendiri (misal untuk transparent proxy) — tanpa perlu menyebutkan to-addresses karena tujuannya otomatis router sendiri.
RouterOS mengevaluasi rule dari atas ke bawah dan berhenti di rule pertama yang cocok dengan kriteria traffic (mekanisme first-match-wins). Kalau ada rule yang lebih umum/luas diletakkan di atas rule yang lebih spesifik, rule spesifik itu tidak akan pernah dieksekusi karena traffic sudah keburu ditangani rule di atasnya.
Bisa, kalau router punya lebih dari satu IP publik (multiple public IP dari ISP). Tambahkan parameter dst-address di rule dst-nat untuk menentukan IP publik mana yang dipakai untuk forward ke server tertentu, sehingga tiap IP publik bisa mengarah ke server internal yang berbeda tanpa perlu translasi port.
Kemungkinan besar terkena CGNAT dari operator seluler kamu — HP dengan data seluler biasanya juga di belakang CGNAT (bukan cuma jaringan rumah/kantor yang di-tes), sehingga hasil test-nya sama-sama tak bisa dipercaya untuk memverifikasi port forwarding yang benar-benar terbuka ke internet publik. Test dari layanan pihak ketiga (seperti Port Checker) yang benar-benar berjalan dari server publik lebih dapat diandalkan.
Tidak perlu. Rule NAT di RouterOS langsung aktif begitu ditambahkan (via terminal maupun WinBox), tanpa perlu restart. Kalau setelah menambah rule masih belum jalan, kemungkinan penyebabnya bukan soal restart, tapi salah satu dari poin-poin di bagian Troubleshooting.
Jalankan <code>/ip firewall nat print</code> untuk melihat daftar rule beserta nomornya, lalu <code>/ip firewall nat remove [nomor]</code> untuk menghapus rule spesifik berdasarkan nomor urutnya. Selalu print dulu sebelum remove untuk memastikan nomor yang dihapus benar — nomor urut bisa berubah setiap kali ada rule yang ditambah/dihapus.

Kesimpulan

DST-NAT itu soal mengarahkan traffic dari luar ke perangkat tertentu di dalam — kebalikan dari SRC-NAT/masquerade yang mengarahkan traffic LAN keluar ke internet (dibahas di Modul 03 NAT & Routing Cekademi). Script dasarnya cuma satu baris add chain=dstnat action=dst-nat, tapi tiga hal sering bikin orang stuck: lupa buka firewall filter (NAT rule ada, tapi filter forward masih drop), lupa hairpin NAT (perangkat sendiri di LAN tak bisa akses IP publiknya sendiri), dan CGNAT dari ISP (DST-NAT di router sendiri sudah benar, tapi ISP tak kasih IP publik asli). Cek dulu IP publikmu di Cek IP Saya, lalu verifikasi port yang sudah di-forward pakai Port Checker cekipsaya.com.

COBA SEKARANG
Port Checker — Verifikasi Port Terbuka
→ Port Checker — Verifikasi Port Terbuka
// ARTIKEL INI MEMBANTU?

Share ke teman yang butuh info ini: