Dalam membangun koneksi VPN antar jaringan, ada beberapa pilihan seperti L2TP, PPTP, OpenVPN, hingga IPsec. Namun, untuk kebutuhan network-to-network maupun akses dari lokasi yang jauh, IPsec sering menjadi pilihan yang lebih praktis karena memiliki keamanan yang kuat, dukungan yang luas, serta terintegrasi dengan baik pada perangkat jaringan seperti MikroTik.
Sering kali VPN juga digunakan untuk menghubungkan jaringan yang berada di lokasi berbeda atau memberikan akses ke jaringan internal dari jarak jauh. Dibandingkan PPTP yang sudah tidak direkomendasikan, atau L2TP yang umumnya masih membutuhkan IPsec untuk keamanan, IPsec memberikan pendekatan yang lebih langsung untuk membangun koneksi yang aman dan stabil.
Kali ini kita akan melakukan setup IPsec VPN Server pada MikroTik menggunakan IKEv2/IPsec dengan Pre-Shared Key (PSK). Lab ini menggunakan MikroTik CHR versi 7.20.8.
1. Profile
Langkah pertama adalah membuat IPsec Profile. Profile ini berisi parameter keamanan yang nantinya akan digunakan oleh Peer dalam proses negosiasi koneksi VPN.
Hal yang perlu diperhatikan adalah kompatibilitas antara VPN Client dan VPN Server. Dalam lab ini, Android digunakan sebagai client, sehingga parameter IPsec yang dikonfigurasi pada MikroTik harus didukung oleh perangkat Android.
Sebagai contoh, kita dapat menggunakan Auth. Algorithm SHA-512 untuk mendapatkan tingkat keamanan yang lebih tinggi. Namun, tidak semua perangkat atau implementasi VPN client mendukung parameter tersebut. Jika terjadi ketidakcocokan, client dapat gagal melakukan koneksi atau berhasil membangun tunnel tetapi tidak dapat melakukan pertukaran data.
Karena itu, parameter pada IPsec Profile perlu disesuaikan dengan kemampuan client yang digunakan agar proses negosiasi dan pertukaran data dapat berjalan dengan baik.

untuk command terminal nya dibawah ini:
[ryan@CHRGW] > /ip ipsec profile
add enc-algorithm=aes-256,aes-128 hash-algorithm=sha256 name="IPSEC Server"
2. Peer
Setelah membuat IPsec Profile, langkah berikutnya adalah membuat Peer. Peer digunakan untuk menentukan bagaimana MikroTik akan menerima dan melakukan negosiasi koneksi IPsec dari client.
Pada bagian Address, kita menggunakan 0.0.0.0/0 atau ::/0. Konfigurasi ini memungkinkan Peer menerima request dari berbagai alamat IP, yang sesuai untuk client Android yang umumnya mendapatkan IP address dynamic dari provider.
Profile diisi dengan profile yang sebelumnya telah dibuat pada Profile.
Untuk Exchange Mode, kita menggunakan IKE2 (IKEv2). IKEv2 merupakan protokol yang digunakan untuk melakukan negosiasi dan pembentukan security association pada IPsec. Karena itu, konfigurasi VPN ini dikenal sebagai IKEv2/IPsec.
Terakhir, Passive diatur menjadi yes. Dengan konfigurasi ini, MikroTik akan berada pada posisi menunggu request koneksi dari client, bukan secara aktif melakukan koneksi ke client.

untuk command terminal nya dibawah ini:
[ryan@CHRGW] > /ip ipsec peer
add exchange-mode=ike2 name="IPSEC PEERS" passive=yes profile="IPSEC Server" \
send-initial-contact=no
3. Proposal
Pada bagian Proposal, kita menentukan algoritma enkripsi dan autentikasi yang akan digunakan dalam proses pertukaran data IPsec. Parameter yang dipilih juga perlu disesuaikan dengan kompatibilitas VPN Client.
Algoritma dengan tingkat keamanan yang lebih tinggi belum tentu didukung oleh semua perangkat Android. Karena itu, pemilihan algoritma harus mempertimbangkan keseimbangan antara keamanan dan kompatibilitas agar client dapat terhubung dan melakukan pertukaran data dengan baik.
Proposal yang dibuat pada tahap ini nantinya akan digunakan oleh Policy.

untuk command terminal nya dibawah ini:
[ryan@CHRGW] > /ip ipsec proposal
add auth-algorithms=sha256 enc-algorithms=aes-256-cbc,aes-128-cbc name=\
"IPSEC Server" pfs-group=ecp256
4. Policy
Pada menu Policy, secara default MikroTik sudah menyediakan beberapa rule yang dapat digunakan. Untuk konfigurasi kali ini, kita akan menggunakan rule default tersebut.
Yang perlu disesuaikan adalah bagian Proposal. Ganti Proposal bawaan dengan Proposal yang sebelumnya telah kita buat, sehingga parameter keamanan yang digunakan pada Policy sesuai dengan konfigurasi yang telah ditentukan.

untuk command terminal nya dibawah ini:
[ryan@CHRGW] > /ip ipsec policy set 0 proposal="IPSEC Server"
5. Pool Address
Selanjutnya kita membuat IP Pool, yaitu range IP Address yang akan diberikan oleh VPN Server kepada VPN Client. Konsepnya kurang lebih seperti PC yang mendapatkan IP Address secara otomatis dari DHCP Server.
Range IP yang digunakan dapat disesuaikan dengan kebutuhan. Jika VPN digunakan untuk mengakses jaringan LAN di belakang MikroTik, sebaiknya gunakan range yang sesuai dengan skema jaringan dan routing yang ada.
Namun, jika VPN hanya digunakan untuk akses internet melalui MikroTik, range IP dapat menggunakan subnet private yang sesuai dengan kebutuhan konfigurasi.

Dikarenakan kebutuhan IPSec dalam tutorial kali ini cukup banyak maka disesuaikan saja dengan kebutuhan teman” saat ini, semisal membutuhkan dengan CIDR /28 or /29 or /30 dll.
6. Mode-Config
Selanjutnya, IP Pool yang telah dibuat sebelumnya kita masukkan pada konfigurasi Mode-Config. IP Pool ini nantinya menjadi sumber alamat IP yang akan diberikan kepada VPN Client saat berhasil terhubung.
Pada bagian Address Prefix Length, kita set menjadi 32. Dengan demikian, setiap VPN Client akan mendapatkan satu IP Address dengan prefix /32, sehingga masing-masing client memiliki alamat IP individual untuk koneksi VPN-nya.

untuk command terminal nya dibawah ini:
[ryan@CHRGW] > /ip ipsec mode-config add address-pool="POOL ADDRESS" name="IPSec Config"
7. Identity
Pada bagian Identity, kita menentukan metode autentikasi yang akan digunakan oleh VPN Client. Karena konfigurasi VPN ini menggunakan PSK (Pre-Shared Key), maka pada Auth. Method kita pilih pre-shared key.
Bagian Secret diisi dengan Pre-Shared Key yang akan digunakan sebagai kredensial autentikasi. Gunakan kombinasi karakter yang kompleks agar tidak mudah ditebak atau diketahui oleh pihak yang tidak berwenang.
Mode Configuration diisi dengan Mode-Config yang telah kita buat sebelumnya.
Terakhir, Generate Policy kita ubah menjadi port strict. Dengan konfigurasi ini, Policy akan dibuat berdasarkan parameter koneksi yang telah ditentukan.

untuk command terminal nya dibawah ini:
[ryan@CHRGW] > /ip ipsec identity
add generate-policy=port-strict mode-config="IPSec Config" peer=\
"IPSEC PEERS" secret=Secret-Kalian
Sampai tahap ini, konfigurasi VPN sudah selesai dan seharusnya perangkat Android kita sudah dapat terhubung ke VPN Server. Namun, koneksi tersebut belum tentu dapat digunakan untuk mengakses internet.
Hal ini terjadi karena perangkat Android mendapatkan IP Address dari IP Pool yang kita buat sebelumnya, misalnya 10.10.20.2. IP tersebut merupakan IP private yang tidak dapat langsung digunakan untuk mengakses internet melalui WAN MikroTik yang menggunakan IP public.
Oleh karena itu, kita perlu melakukan NAT Masquerade pada NAT. NAT akan menerjemahkan IP private dari VPN Client menjadi IP yang digunakan oleh interface WAN MikroTik, sehingga trafik dari perangkat Android dapat diteruskan ke internet.
8. NAT
Untuk memungkinkan VPN Client mengakses internet, kita perlu menambahkan rule NAT Masquerade pada MikroTik:
[ryan@CHRGW] > ip/firewall/nat/add action=masquerade chain=srcnat comment="Global Masquerade" \
out-interface=ether1-UPLINK
Beberapa parameter pada rule tersebut:
action=masquerade→ Mengubah source IP Address dari trafik menjadi IP Address yang digunakan oleh interface keluar.chain=srcnat→ Rule ini bekerja pada trafik yang akan keluar dari router dan melakukan perubahan pada source address.comment="Global Masquerade"→ Hanya sebagai penanda agar rule lebih mudah dikenali.out-interface=ether1-UPLINK→ Menentukan interface yang digunakan sebagai jalur keluar menuju internet.
Dengan konfigurasi ini, trafik dari VPN Client yang keluar melalui ether1-UPLINK akan di-masquerade menggunakan IP pada interface tersebut. Dengan begitu, perangkat Android dapat mengakses internet melalui koneksi WAN MikroTik.
9. Konfigurasi di Android
Selanjutnya, kita akan melakukan konfigurasi VPN pada perangkat Android. Buka pengaturan VPN pada Android, kemudian tambahkan koneksi VPN baru dengan parameter berikut:
- Type → pilih IKEv2/IPSec PSK.
- Server address → isi dengan IP public (WAN) dari Router MikroTik atau CHR. Pada tutorial ini, penulis menggunakan IP public
11x.xx.xx.xx. - IPSec identifier → isi dengan nilai yang sama seperti Server address.
- IPSec pre-shared key → isi dengan Secret yang sebelumnya telah dibuat pada konfigurasi IPSec/Identity.
Setelah seluruh parameter diisi, simpan konfigurasi VPN dan coba lakukan koneksi dari perangkat Android.

Setelah selesai, silakan dicoba konek menggunakan VPN tersebut. Apabila berhasil, maka status VPN akan menunjukkan “Connected” atau “Terhubung”.

Penutup
Sampai di sini, konfigurasi IKEv2/IPsec PSK VPN Server pada MikroTik CHR sudah selesai. Kita telah membuat konfigurasi mulai dari IPsec Profile, Peer, Proposal, Policy, IP Pool, Mode-Config, Identity, hingga NAT Masquerade agar VPN Client dapat terhubung dan mengakses internet melalui MikroTik.
Setelah seluruh konfigurasi diterapkan, perangkat Android dapat terhubung ke VPN menggunakan IP public MikroTik dan Pre-Shared Key yang telah dibuat sebelumnya.
Konfigurasi ini tentunya masih dapat dikembangkan sesuai kebutuhan, misalnya untuk mengakses jaringan internal di belakang MikroTik atau menghubungkan jaringan dari lokasi yang berbeda.
Semoga tutorial ini dapat membantu dan memberikan gambaran mengenai implementasi IKEv2/IPsec PSK pada MikroTik.
Information
Instagram: @ryan_achmad78
GitHub: @ryanachmad12

I’m Ryan Achmad Juliansyah, a network and security engineer from Indonesia with a strong interest in networking, Linux, system administration, and cybersecurity.