Script MikroTik DST-NAT — Port Forwarding Lewat Terminal
Belajar script dst-nat MikroTik dari terminal — port forwarding, translasi port, multi-service, hairpin NAT, sampai troubleshoot kenapa port tetap tertutup.
· ⏱ ~6 menit baca
✍ Tim Network Intelligence cekipsaya.com — Praktisi jaringan & operator tools diagnostic Indonesia, fokus edukasi networking, troubleshooting koneksi, dan diagnostik jaringan untuk pengguna umum dan sysadmin lapangan.
SHARE
⌕
Populer:
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.
Ilustrasi: Script MikroTik DSTNAT — Port Forwarding via Terminal
ℹ
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.
Cara Port Forwarding MikroTik — Script Dasar
Begini cara port forwarding di MikroTik lewat terminal (bukan WinBox klik-klik). Skenario: kamu punya web server di 192.168.88.10 port 80, mau bisa diakses dari internet lewat IP publik router (interface ether1).
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.
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:
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:
Contoh di atas untuk WireGuard (port default 51820/UDP) — detail setup WireGuard MikroTik lengkap ada di artikel terpisah.
Satu IP Publik, Tiga Layanan — Cara Kerja DST-NAT (Arahkan Kursor Tiap Jalur)
Tiga skenario di atas (web port disamarkan, NVR CCTV port beda, WireGuard UDP) jalan bersamaan lewat 1 IP publik. Arahkan kursor ke tiap jalur untuk lihat alamat tujuan SEBELUM dan SESUDAH NAT — perhatikan: yang berubah cuma bagian tujuan, bukan sumbernya.
Gratis untuk keperluan pendidikan — Lisensi CC-BY-SA 4.0. Cantumkan cekipsaya.com sebagai sumber.
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:
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.
Jangan forward port admin panel router/NVR/NAS langsung ke internet — kalau butuh akses remote, pertimbangkan VPN (WireGuard/OpenVPN) dulu, baru akses panel admin lewat tunnel itu
Batasi source IP kalau memungkinkan — parameter src-address di rule DST-NAT bisa membatasi siapa saja yang boleh mengakses, bukan seluruh internet
Ganti port default untuk mengurangi noise dari bot scanning otomatis (bukan proteksi sejati, tapi mengurangi log spam)
Pastikan service di dalam sudah update & password kuat — DST-NAT cuma soal routing, keamanan aplikasi di baliknya tetap tanggung jawab terpisah
💡
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.
Quiz Mini — Cek Pemahamanmu
Tiga soal cepat sebelum kamu tutup tab. Lulus = kamu paham arah DST-NAT, urutan eksekusi rule, dan kapan butuh hairpin NAT.
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.