Mikrotik : VPN WireGuard Site-to-Site

Revision as of 07:01, 17 October 2026 by Maintenance script (talk | contribs) (Artikel baru (konsep inti): VPN WireGuard site-to-site antar RouterOS v7 β€” Gaya Editorial v2)
(diff) ← Older revision | Latest revision (diff) | Newer revision β†’ (diff)

Sekolah dan kantor sering punya lokasi lebih dari satu: gedung utama, gedung praktikum, koperasi di seberang jalan, atau cabang di kota lain. Selama jaringan kedua lokasi belum tersambung, semua akses harus lewat internet publik. Padahal tidak semua lokasi punya IP publik tetap.

Di sinilah **VPN site-to-site** berguna. Dengan **WireGuard** di RouterOS v7, dua router MikroTik bisa membuat "kabel virtual" yang terenkripsi, sehingga perangkat di lokasi A bisa mengakses server di lokasi B seolah berada di satu jaringan lokal.

🎯 Tujuan

Setelah membaca artikel ini, kamu diharapkan bisa:

  • Menjelaskan apa itu VPN site-to-site dan kapan dipakai alih-alih port forwarding.
  • Membuat interface WireGuard dan membaca **public key** di RouterOS v7.
  • Menukar public key dan mendaftarkan **peer** dengan `allowed-address` yang benar.
  • Menyiapkan **alamat terowongan**, **rute antar LAN**, dan **aturan firewall** agar terowongan hidup.
  • Memverifikasi terowongan lewat `last-handshake`, `rx`/`tx`, dan uji ping.
  • Mengenali gejala kegagalan umum: handshake `never`, terowongan hidup tapi LAN tidak bisa diakses, dan trafik lambat karena MTU.

πŸ“ Konteks nyata

Analogi paling mudah: VPN itu seperti **pipa bawah tanah pribadi** antara dua gedung. Orang di dalam gedung tetap lewat pintu masing-masing, tetapi perjalanan antar gedung dilakukan di dalam pipa, bukan menyeberang jalan raya yang bisa dilihat dan diganggu siapa saja.

Cara lama menyambungkan dua lokasi adalah **port forwarding**: server di gedung A dibuka ke internet, lalu pengguna gedung B mengakses IP publiknya. Cara ini bekerja, tetapi artinya pintu server berdiri di pinggir jalan umum. Siapa pun bisa mencoba mengetuk, dan lalu lintasnya tidak terlindungi end-to-end.

WireGuard menutup celah itu. Kedua router hanya berkomunikasi lewat satu port UDP yang disepakati, semua paket di dalamnya dienkripsi dan diautentikasi kunci, dan tidak ada layanan internal yang perlu dipamerkan ke internet.

πŸ”₯ Kasus nyata: Sebuah SMK punya dua gedung yang dipisahkan jalan raya. Server absensi dan ujian CBT berada di gedung A dan sudah dibuka lewat port forwarding. Siswa di lab TKJ gedung B terpaksa mengakses aplikasi itu lewat internet umum. Suatu hari halaman login server dibanjiri percobaan masuk dari luar, dan pihak sekolah tidak punya cara membedakan mana trafik siswa sendiri. Setelah kedua router disambungkan dengan WireGuard site-to-site, akses aplikasi hanya lewat terowongan, port forwarding ditutup, dan lalu lintas antar gedung otomatis terenkripsi.

🧠 Konsep singkat

πŸ”Ή Terowongan adalah kabel virtual

Interface WireGuard bukan perangkat fisik. Ia interface virtual yang bisa diberi alamat IP, bisa dipakai sebagai `gateway` pada rute, dan bisa dipasang aturan firewall seperti interface ether biasa.

Yang keluar dari router lewat interface itu adalah paket UDP biasa menuju IP publik peer. Isinya sendiri sudah dibungkus enkripsi, jadi penyedia internet hanya melihat dua router berbicara di port UDP yang sama.

πŸ”Ή Tiga benda wajib untuk satu terowongan

  1. **Interface WireGuard** di kedua router, masing-masing punya sepasang kunci.
  2. **Peer** di kedua router, berisi public key lawan.
  3. **Alamat dan rute** supaya router tahu paket ke subnet mana yang harus masuk terowongan.

Kalau salah satu belum ada, terowongan tidak akan pernah hidup atau hidup tetapi tidak mengalirkan trafik.

= πŸ”Ή allowed-address punya dua peran sekaligus

Ini bagian yang paling sering salah dipahami. `allowed-address` bukan sekadar daftar "boleh lewat", tetapi dipakai WireGuard untuk dua hal:

  • **Penyaring masuk** β€” paket yang datang dari peer itu hanya diterima kalau alamat sumbernya ada di daftar.
  • **Penunjuk arah keluar** β€” paket yang tujuannya ada di daftar akan dikirim ke peer tersebut.

πŸ“Š Angka penting: Satu subnet hanya boleh muncul di **satu peer** pada interface yang sama. Kalau dua peer sama-sama mengklaim `10.1.101.0/24`, RouterOS akan menolak atau rutenya bertabrakan.

πŸ”Ή Kenapa "seperti kabel", bukan "seperti jalan tol"

VPN site-to-site menghubungkan dua **jaringan**, bukan dua komputer. Setelah terowongan hidup, komputer di LAN A bisa ping komputer di LAN B memakai alamat lokalnya, tanpa aplikasi baru dan tanpa tahu bahwa di tengahnya ada VPN.

πŸ”Ή WireGuard versus VPN lain

Aspek WireGuard IPsec L2TP + IPsec
Kerumitan konfigurasi Rendah, cukup kunci dan peer Sedang sampai tinggi Sedang
Port bawaan UDP 13231 (bisa diganti) UDP 500/4500 UDP 1701
Kunci Otomatis dibuat per interface Perlu sertifikat/pre-shared key Perlu akun PPP
Cocok untuk Site-to-site dan road warrior modern Interoperabilitas vendor lama Klien bawaan lama

πŸ’‘ Tips: WireGuard tidak peduli siapa "server" dan siapa "client". Yang wajib hanya satu hal: minimal salah satu sisi mengetahui `endpoint-address` lawannya, karena kunci publik saja belum cukup untuk menemukan alamat IP.

🧩 Istilah penting

Istilah Arti sederhana
Interface WireGuard Kabel virtual yang diberi nama, misalnya `wg-kantor`, dan punya alamat IP sendiri.
Peer Lawan bicara terowongan. Didaftarkan dengan public key lawan, bukan kunci kita.
Private key Kunci rahasia milik router ini. Tidak pernah dikirim ke mana pun.
Public key Kunci turunan yang aman dibagikan. Ini yang dipakai lawan untuk mengenali kita.
allowed-address Daftar alamat yang boleh datang dari peer ini dan yang dikirim ke peer ini.
endpoint-address dan endpoint-port Alamat IP dan port UDP tempat peer bisa dihubungi.
persistent-keepalive Paket kecil berkala agar pemetaan NAT tidak tertutup dan terowongan tetap hidup.
handshake Proses saling mengenali antar peer. Kalau berhasil, tercatat `last-handshake` yang segar.
MTU Ukuran paket maksimum yang aman dilewatkan terowongan sebelum terpecah.

πŸ”§ Praktik: Menyambungkan Dua Kantor dengan WireGuard

Asumsi lab: dua router RouterOS v7 yang WAN-nya saling terhubung lewat sebuah "jaringan internet" simulasi. Kita pakai rentang dokumentasi RFC 5737 supaya aman.

  • **Kantor A** β€” LAN `10.1.202.0/24` (router `10.1.202.1`), WAN ether1 `192.0.2.10/24`.
  • **Kantor B** β€” LAN `10.1.101.0/24` (router `10.1.101.1`), WAN ether1 `198.51.100.10/24`.
  • **Terowongan** β€” `10.255.255.0/30`, sisi A `10.255.255.1`, sisi B `10.255.255.2`.
  • **Port tunnel** β€” UDP `13231` di kedua sisi.

πŸ§ͺ Uji cepat: Sebelum mulai, pastikan versinya memadai. Jalankan `/system resource print` dan lihat baris `version`. WireGuard baru ada di keluarga RouterOS v7, jadi router v6 lama tidak bisa ikut lab ini.

πŸ”Ή Langkah 1: buat interface di kedua router

Perintahnya sama di dua router. Kunci privat dan publik akan dibuat otomatis saat interface lahir.

/interface/wireguard
add name=wg-kantor listen-port=13231 comment="tunnel ke kantor lawan"

πŸ”Ή Langkah 2: tukar public key

Tampilkan kunci publik lalu kirimkan ke admin lokasi lawan. Ingat, **private key tidak pernah dikirim**.

/interface/wireguard print
:put [/interface/wireguard get [find name=wg-kantor] public-key]

⚠️ Hati-hati: Jangan pernah mengirim `private-key` lewat chat atau email. Siapa pun yang memegang private key kita bisa menyamar sebagai router kita di dalam terowongan.

πŸ”Ή Langkah 3: daftarkan peer

Di Kantor A, isi public key milik Kantor B. Di Kantor B, isi public key milik Kantor A. Perhatikan `allowed-address` memuat dua hal: subnet LAN lawan **dan** alamat ujung terowongan lawan.

/interface/wireguard/peers
add interface=wg-kantor \
    public-key="<public-key-Kantor-B>" \
    allowed-address=10.1.101.0/24,10.255.255.2/32 \
    endpoint-address=198.51.100.10 endpoint-port=13231 \
    persistent-keepalive=25s comment="peer Kantor B"

Di Kantor B, arahnya dibalik:

/interface/wireguard/peers
add interface=wg-kantor \
    public-key="<public-key-Kantor-A>" \
    allowed-address=10.1.202.0/24,10.255.255.1/32 \
    endpoint-address=192.0.2.10 endpoint-port=13231 \
    persistent-keepalive=25s comment="peer Kantor A"

πŸ’‘ Tips: Kalau salah satu lokasi punya IP publik tetap dan yang lain berada di belakang NAT dinamis, cukup sisi yang dinamis yang memakai `persistent-keepalive=25s`. Sisi tetap boleh memakai opsi `responder=yes` supaya tidak ikut terus-menerus mencoba menghubungi.

πŸ”Ή Langkah 4: beri alamat ujung terowongan

Pakai subnet kecil khusus terowongan, misalnya `/30` yang hanya berisi dua alamat.

/ip/address
add address=10.255.255.1/30 interface=wg-kantor comment="ujung tunnel Kantor A"

Di Kantor B:

/ip/address
add address=10.255.255.2/30 interface=wg-kantor comment="ujung tunnel Kantor B"

πŸ”Ή Langkah 5: tambahkan rute antar LAN

Router harus diberi tahu bahwa subnet lawan bisa dicapai lewat interface terowongan.

/ip/route
add dst-address=10.1.101.0/24 gateway=wg-kantor comment="LAN Kantor B"

Di Kantor B:

/ip/route
add dst-address=10.1.202.0/24 gateway=wg-kantor comment="LAN Kantor A"

πŸ”Ή Langkah 6: izinkan di firewall

Firewall bawaan RouterOS akan menahan terowongan. Buka port UDP-nya di `input`, lalu izinkan trafik antar subnet di `forward`.

/ip/firewall/filter
add chain=input action=accept protocol=udp dst-port=13231 \
    src-address=198.51.100.10 comment="terima WireGuard Kantor B" place-before=0
add chain=forward action=accept in-interface=wg-kantor comment="keluar dari tunnel"
add chain=forward action=accept out-interface=wg-kantor comment="masuk ke tunnel"

Di Kantor B, aturan `input` memakai `src-address=192.0.2.10`.

πŸ“Š Angka penting: `listen-port` bawaan WireGuard di RouterOS adalah `13231` dan `mtu` bawaan `1420`. Kalau router lawan memakai port lain, `endpoint-port` dan `listen-port` harus disesuaikan, karena keduanya harus sama.

πŸ”Ή Langkah 7: uji handshake dan ping

Tunggu beberapa detik, lalu lihat apakah kedua peer sudah saling mengenal.

/interface/wireguard/peers print detail
/ping 10.255.255.2 count=3
/ping 10.1.101.1 src-address=10.1.202.1 count=3

Yang dicari pada keluaran pertama adalah `last-handshake` dengan angka detik yang kecil, serta `rx` dan `tx` yang terus bertambah. Kalau `last-handshake` masih `never`, jangan lanjut ke uji LAN dulu; bereskan firewall dan penukaran kunci.

πŸ”Ή Langkah 8: versi Winbox

  1. Buka **Winbox** lalu masuk ke menu **WireGuard**.
  2. Klik **Add** untuk membuat interface, isi **Name** dan **Listen Port**, biarkan kunci dibuat otomatis.
  3. Klik tab **Peers**, tambahkan peer baru, tempel **Public Key** lawan.
  4. Isi **Allowed Address**, **Endpoint Address**, **Endpoint Port**, dan **Persistent Keepalive**.
  5. Setelah tersimpan, pindah ke menu **IP** lalu **Addresses** dan **Routes** untuk melengkapi alamat terowongan dan rutenya.

⚠️ Hati-hati: Saat mengedit peer tanpa endpoint lewat WebFig, pernah muncul kasus `endpoint-address` tersimpan sebagai teks kosong sehingga handshake langsung gagal. Kalau itu terjadi, hapus nilainya lewat CLI dengan `/interface/wireguard/peers unset 0 endpoint-address`.

πŸ”Ή Langkah 9: membersihkan lab

Setelah selesai mencatat hasil, rapikan konfigurasi agar router lab kembali bersih.

/ip/firewall/filter remove [find comment~"tunnel"]
/ip/route remove [find gateway=wg-kantor]
/ip/address remove [find interface=wg-kantor]
/interface/wireguard/peers remove [find interface=wg-kantor]
/interface/wireguard remove [find name=wg-kantor]

🏭 Dipakai di dunia kerja

  • **Sekolah:** dua gedung yang dipisahkan jalan umum perlu mengakses server absensi dan CBT yang sama, tanpa membuka server itu ke internet.
  • **Kantor cabang:** kasir cabang mengakses aplikasi penjualan di kantor pusat seolah satu jaringan, padahal ISP cabang memakai IP dinamis.
  • **ISP dan penyedia jasa:** tim network operations menghubungkan kantor pelanggan ke head office untuk monitoring dan manajemen perangkat pelanggan.
  • **Industri dan pabrik:** data dari PLC atau HMI di plant terpencil dikirim ke server monitoring pusat lewat terowongan terenkripsi.
  • **Vendor jasa IT:** teknisi mengakses jaringan pelanggan untuk maintenance tanpa meminta pelanggan menyebar port RDP atau Winbox ke internet.
  • **Koperasi dan BUMDes:** kios penjualan yang berada beberapa ratus meter dari kantor tetap bisa memakai satu aplikasi kasir terpusat.

βœ… Verifikasi

Jalankan pemeriksaan ini berurutan. Kalau ada yang belum sesuai, perbaiki dulu sebelum lanjut.

  • **Interface hidup:** `/interface/wireguard print` menampilkan flag `R` pada baris interface.
  • **Peer terdaftar benar:** `/interface/wireguard/peers print detail` menampilkan public key lawan dan `allowed-address` yang memuat LAN lawan.
  • **Terowongan hidup:** kolom `last-handshake` berisi angka detik kecil, dan `rx`/`tx` bertambah.
  • **Ujung terowongan bisa di-ping:** `/ping 10.255.255.2 count=3` tanpa kehilangan paket.
  • **Perutean antar LAN benar:** `/ip/route print where gateway=wg-kantor` menampilkan rute ke subnet lawan dengan status aktif.
  • **Trafik memang lewat tunnel:** `/interface wireguard print stats` memperlihatkan `rx-byte` dan `tx-byte` bertambah saat kamu menyalin file.
  • **Log bersih:** `/log print where topics~"wireguard"` tidak dihuni pesan gagal berulang.
  • **Dari sisi client:** dari PC di LAN A, jalankan `ping 10.1.101.1` dan buka layanan di Kantor B memakai alamat lokalnya.

πŸ§ͺ Uji cepat: Coba `ping 10.1.101.1 src-address=10.1.202.1 do-not-fragment size=1400`. Kalau gagal tetapi ping biasa berhasil, biasanya MTU terowongan yang perlu diturunkan.

⚠️ Kesalahan umum & troubleshooting

Gejala Yang diperiksa Penyebab dan perbaikan
`last-handshake` tetap `never` `/ip/firewall/filter print`, `/ping` ke IP publik lawan Port UDP 13231 tertahan firewall atau endpoint salah. Buka di chain `input` dan pastikan alamat lawan benar.
Handshake hidup tapi ping ujung terowongan gagal `/ip/address print` Alamat ujung terowongan salah atau bertumpuk. A harus `.1/30` dan B `.2/30` pada subnet `/30`.
Ujung terowongan bisa di-ping, LAN lawan tidak `allowed-address` dan `/ip/route print` Subnet LAN lawan belum masuk `allowed-address`, rute belum ada, atau chain `forward` masih menahan.
Terowongan sempat jalan lalu mati setelah beberapa menit tanpa trafik `/interface/wireguard/peers print detail` Pemetaan NAT di sisi dinamis tertutup. Pasang `persistent-keepalive=25s` di sisi yang berada di belakang NAT.
Handshake gagal padahal konfigurasi terlihat benar `/interface/wireguard/peers print detail` Public key tertukar atau masih memakai kunci router sendiri. Pastikan setiap peer memakai kunci lawan.
Handshake mati tepat setelah peer diedit dari WebFig cari `endpoint-address` berisi teks kosong Perilaku WebFig yang menyimpan string kosong. Bersihkan lewat CLI dengan `unset`.
Transfer file besar putus atau lambat `/ping size=1400 do-not-fragment` MTU 1420 terlalu besar untuk jalur itu. Turunkan perlahan, misalnya ke `1380`, lalu uji ulang.
Router bisa ping LAN lawan, client tidak `/ip/route print` di client dan aturan NAT sisi lawan Client belum memakai router sebagai gateway, atau NAT masquerade di sisi lawan menelan trafik terowongan.
Dua peer sama-sama mengklaim subnet yang sama `/interface/wireguard/peers print` Satu subnet hanya boleh terdaftar pada satu peer per interface. Pisahkan subnet atau buat interface lain.

πŸ” Catatan keamanan & etika

  • **Private key adalah rahasia paling berharga.** Perlakukan seperti password admin: jangan ditampilkan di layar bersama, jangan dikirim lewat chat, dan jangan ditempel di dokumentasi publik.
  • **Batasi sumber di firewall.** Aturan `input` yang mengizinkan UDP 13231 sebaiknya menyebut `src-address` IP publik lawan, bukan menerima dari semua alamat.
  • **Jangan asal meloloskan seluruh chain forward.** Aturan `in-interface=wg-kantor` yang menerima semua trafik berarti seluruh LAN lawan bebas menembus jaringan kita. Kalau hanya beberapa layanan yang diperlukan, batasi port dan tujuannya.
  • **Gunakan `preshared-key` bila butuh lapisan tambahan.** Opsi ini menambahkan kriptografi simetris di atas kunci publik dan dipakai untuk ketahanan terhadap ancaman komputasi kuantum. Nilainya juga rahasia.
  • **Rotasi kunci bila perangkat berpindah tangan.** Router yang hilang, dijual, atau dikembalikan ke vendor sebaiknya diganti `private-key`-nya, lalu semua peer diperbarui.
  • **Terowongan hanya ke jaringan yang kita kelola.** Menyambungkan diri ke jaringan orang lain tanpa izin tertulis melanggar aturan dan hukum yang berlaku, bukan sekadar pelanggaran etika.

πŸ“Œ Kesimpulan

WireGuard site-to-site membuat dua jaringan terpisah terasa seperti satu jaringan, dengan tiga bahan pokok: interface dan kunci, peer dengan `allowed-address` yang tepat, lalu alamat, rute, dan aturan firewall. Begitu `last-handshake` terisi dan ping antar LAN lolos, semua aplikasi di kedua lokasi bisa saling bicara tanpa membuka apa pun ke internet.

Langkah berikutnya yang paling nyambung: uji ketahanan terowonganmu dengan mengubah MTU dan membuat trafik lambat, lalu lanjut membandingkan pendekatan ini dengan **VPN IPsec** untuk kebutuhan interoperabilitas dengan perangkat vendor lain.

πŸ”— Materi terkait

  • `Mikrotik : Firewall Filter Dasar` β€” dasar aturan `input` dan `forward` yang dipakai membuka port terowongan.
  • `Mikrotik : Static Route Dasar` β€” dasar rute yang menjadi pondasi rute ke subnet lawan.
  • `Mikrotik : Tabel Routing dan Manajemen Rute di RouterOS v7` β€” cara RouterOS v7 memilih rute aktif, termasuk rute lewat interface terowongan.
  • `Mikrotik : NAT Masquerade agar Client Bisa Internet` β€” penting agar kamu tidak salah memasang masquerade yang menelan trafik terowongan.
  • `Mikrotik : Praktikum Mengamankan Layanan RouterOS` β€” kenapa layanan manajemen router tidak boleh dibuka ke internet.
  • `Mikrotik : Bridge LAN Dasar` β€” memastikan sisi LAN kedua kantor sudah rapi sebelum disambung.

πŸ“š Referensi