Mikrotik : Praktikum Uji Tunnel IPsec dan Diagnosa Kegagalan

Revision as of 16:01, 18 October 2026 by Maintenance script (talk | contribs) (Protected "Mikrotik : Praktikum Uji Tunnel IPsec dan Diagnosa Kegagalan": Proteksi editorial: edit/move sysop ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
(diff) ← Older revision | Latest revision (diff) | Newer revision β†’ (diff)

Tunnel IPsec yang berstatus *established* belum tentu sehat. Materi ini melanjutkan artikel konsep pagi ini dengan sudut yang berbeda: bukan memasang tunnel, tetapi **mengujinya secara sengaja** β€” merusak satu bagian, membaca gejalanya, lalu memperbaiki.

🎯 Tujuan

Setelah menyelesaikan praktikum ini, kamu diharapkan bisa:

  • Membaca status tunnel IPsec berlapis: fase 1, fase 2, jalur data, dan kesehatan jangka panjang.
  • Melakukan **fault injection** terkontrol pada PSK, proposal, policy, NAT, FastTrack, firewall, dan MTU.
  • Memetakan gejala ke bukti yang tepat, bukan menebak-nebak.
  • Mengukur waktu deteksi DPD dan mengamati rekey SA tanpa trafik putus.
  • Mengembalikan lab ke kondisi bersih dan mendokumentasikan hasil uji.

πŸ’‘ Tips: satu uji, satu perubahan. Kalau kamu mengubah dua hal sekaligus, kamu tidak akan tahu mana yang menyebabkan gejala.

πŸ“ Konteks nyata

Bayangkan kurir bersegel yang mengantar dokumen antar kantor. Ada empat pos pemeriksaan: kurirnya dikenal, segelnya utuh, alamat tujuannya benar, dan jalannya tidak banjir. Kalau paket hilang, kamu harus tahu pos mana yang gagal β€” bukan hanya bilang "kurirnya bermasalah".

IPsec juga begitu. Status `established` hanya berarti pos pertama dan kedua lulus. Data masih bisa mati di pos ketiga dan keempat.

πŸ”₯ Kasus nyata: sebuah SMK memakai IPsec untuk menghubungkan lab komputer di gedung B ke server CBT di gedung A. Pada hari ujian, siswa bisa login, tetapi tombol **kirim jawaban menggantung** dan sesi sering habis. Ping 5 paket kecil dari router mulus, tunnel `established`, dan tidak ada error di log β€” sehingga panitia menyimpulkan "jaringan normal". Setelah diperiksa: jalur uplink gedung B memakai modem 4G dengan MTU 1400, sementara tunnel memakai 1500; paket besar terfragmentasi lalu dibuang. Ditambah jam router meleset 11 menit setelah listrik padam, sehingga SA putus dan dibangun ulang berkala. Dua masalah berbeda, satu keluhan yang sama.

🧠 Konsep singkat

Uji tunnel IPsec sebaiknya berlapis, dari bawah ke atas. Jangan langsung ping.

| Lapis | Yang diperiksa | Perintah utama | Bukti sehat | |---|---|---|---| | 1 | Fase 1 (IKE SA) | `/ip ipsec active-peers print` | `state=established`, `uptime` bertambah | | 2 | Fase 2 (IPsec SA) | `/ip ipsec policy print` | flag `A`, `ph2-state=established`, `ph2-count` minimal 2 | | 3 | Jalur data | ping ber-`src-address`, counter NAT, raw/notrack | reply konsisten, counter bertambah | | 4 | Kesehatan jangka panjang | `installed-sa`, `expires-in`, `/system clock print` | rekey mulus, waktu sinkron |

πŸ“Š Angka penting: default RouterOS β€” profile `dpd-interval=8s`, `dpd-maximum-failures=4` (deteksi sekitar 32 detik), proposal `lifetime=30m`, dan `pfs-group=modp1024`. Nilai default bukan salah, tetapi harus cocok di kedua sisi.

πŸ”Ή Statistik adalah struk pembayaran

Menu `/ip ipsec statistics` mencatat error masuk dan keluar. Kalau kita reset dulu, lalu melakukan satu kesalahan saja, counter yang naik akan menunjuk lokasi masalah.

  • `in-no-policies` β€” SA masuk benar, tetapi tidak ada policy yang cocok.
  • `in-template-mismatches` β€” SA masuk benar, tetapi template policy tidak cocok.
  • `in-state-mismatches` β€” opsi SA tidak cocok, misalnya tipe UDP encapsulation.
  • `out-policy-blocked` β€” policy bertindak `discard` terhadap paket keluar.

πŸ§ͺ Uji cepat: selalu `/ip ipsec statistics reset` sebelum uji, lalu baca lagi setelah uji. Tanpa reset, angka lama akan menyesatkan.

πŸ”Ή Kenapa ping ke IP WAN bukan bukti

Dokumentasi MikroTik menyebut paket yang berasal dari router dengan UDP sumber `500` **tidak** diproses oleh SPD, begitu juga paket tujuan lokal ke UDP `500`. Artinya, ping ke IP WAN peer bisa berhasil walau tunnel sama sekali tidak membawa data.

Selain itu, fase 1 hanya di-rekey saat `lifetime` habis **jika DPD aktif**. Kalau DPD dimatikan, hanya fase 2 yang diperbarui β€” detail kecil yang sering membuat tunnel "hidup tapi aneh".

🧩 Istilah penting

  • **Fault injection** β€” sengaja merusak satu komponen untuk melihat gejalanya, dilakukan hanya di lab.
  • **Baseline** β€” rekaman kondisi normal sebelum uji, dipakai sebagai pembanding.
  • **ph2-total** β€” jumlah SA fase 2 yang aktif untuk satu peer. Nol berarti fase 2 belum jadi.
  • **ph2-state** β€” status fase 2 pada policy: `established`, `no-phase2`, atau `expired`.
  • **Mature** β€” status SA yang sudah siap dipakai; kebalikannya `dying` saat menuju kedaluwarsa.
  • **Soft/hard lifetime** β€” soft memicu pembuatan SA baru, hard menghapus SA lama.
  • **NAT-T** β€” pembungkusan ESP ke UDP `4500` agar bisa melewati NAT.
  • **MSS clamp** β€” menurunkan ukuran segmen TCP agar tidak perlu fragmentasi.
  • **Notrack** β€” melewati connection tracking; dipakai agar FastTrack tidak menyalip IPsec.
  • **Rekey** β€” penggantian kunci SA tanpa memutus trafik.

πŸ”§ Praktik: Uji Tunnel IPsec dan Diagnosa Kegagalan

Praktikum ini mengasumsikan tunnel dari artikel Mikrotik : VPN IPsec Dasar sudah berjalan. Alamat yang dipakai tetap sama:

| Perangkat | WAN | LAN | |---|---|---| | Kantor A | `192.0.2.10/24` | `10.1.203.0/24` | | Kantor B | `198.51.100.10/24` | `10.1.102.0/24` |

⚠️ Hati-hati: semua uji di bawah dilakukan di lab sendiri. Jangan pernah melakukan fault injection pada tunnel produksi yang sedang dipakai ujian atau transaksi.

πŸ”Ή Langkah 1: siapkan baseline bukti

Catat kondisi normal sebelum merusak apa pun. Di **Kantor A**:

/ip ipsec statistics reset
/ip ipsec active-peers print detail
/ip ipsec policy print stats
/ip ipsec installed-sa print detail
/ip firewall nat print stats
/ping 10.1.102.1 src-address=10.1.203.1 count=5

Simpan hasilnya sebagai baseline. Yang perlu dicatat: `ph2-total`, `ph2-state`, jumlah SA, dan apakah ping 0% loss.

πŸ’‘ Tips: tulis baseline di kertas atau file. Saat panik karena tunnel mati, ingatanmu tidak bisa dipercaya.

πŸ”Ή Langkah 2: Uji A β€” PSK salah (fase 1 gagal)

Di **Kantor B**, ubah secret menjadi berbeda:

/ip ipsec identity set [find peer=peer-ke-a] secret="KunciSalahUntukUji"

Di **Kantor A**, paksa negosiasi ulang:

/ip ipsec active-peers kill-connections
/ping 10.1.102.1 src-address=10.1.203.1 count=3

Gejala yang muncul: `active-peers` kosong, ping gagal, dan log menampilkan kegagalan fase 1. Perhatikan bahwa `policy` bisa tetap ada, tetapi tanpa flag `A`.

πŸ§ͺ Uji cepat: `/log print where topics~"ipsec"` β€” cari kata `phase1` atau `authentication`. Kalau fase 1 tidak pernah berdiri, jangan buang waktu memeriksa policy.

Kembalikan secret yang benar sebelum lanjut.

πŸ”Ή Langkah 3: Uji B β€” proposal fase 2 tidak cocok

Sekarang rusak fase 2 saja. Di **Kantor B**:

/ip ipsec proposal set [find name=prop-aes256] pfs-group=modp1536

Lalu di **Kantor A**:

/ip ipsec active-peers kill-connections
/ping 10.1.102.1 src-address=10.1.203.1 count=3

Gejala khasnya berbeda dari Uji A: peer **muncul** dengan `state=established`, tetapi `ph2-total=0` dan policy berstatus `no-phase2`. Log menyebut negosiasi fase 2 gagal.

πŸ“Š Angka penting: inilah pembeda paling berguna saat troubleshooting β€” peer kosong berarti fase 1, peer hidup dengan `ph2-total=0` berarti fase 2. Jangan tertukar.

Kembalikan `pfs-group=modp2048` di kedua sisi.

πŸ”Ή Langkah 4: Uji C β€” hanya satu arah policy

Hapus sementara policy arah balik di kedua router (di A hapus `B ke A`, di B hapus `A ke B`). Ingat: hapus hanya yang arah balik.

/ip ipsec policy print
/ip ipsec policy disable [find comment="B ke A"]

Sesuaikan nama comment dengan konfigurasimu. Lalu ping dari A:

/ping 10.1.102.1 src-address=10.1.203.1 count=5

Hasilnya: 100% loss, tetapi di **Kantor B** terlihat request masuk. Di A, `installed-sa` menunjukkan `tx-bytes` naik sementara `rx-bytes` hampir tidak bergerak. Ini ciri klasik policy satu arah β€” request keluar, balasan dibuang karena tidak ada selector yang cocok.

Aktifkan kembali policy tersebut dan pastikan ping kembali normal.

πŸ”Ή Langkah 5: Uji D β€” NAT dan FastTrack menyalip IPsec

Pindahkan rule bypass NAT ke bawah `masquerade`:

/ip firewall nat print
/ip firewall nat move 0 1
/ip firewall nat print stats

Ping lagi. Tunnel tetap `established`, tetapi trafik gagal karena alamat sumber sudah diubah sebelum dienkripsi. Counter `masquerade` naik, counter rule bypass tetap nol.

Kembalikan ke posisi teratas:

/ip firewall nat move 1 0

Sekarang uji FastTrack. Tambahkan rule di atas chain `forward`:

/ip firewall filter add chain=forward action=fasttrack-connection \
    connection-state=established,related place-before=0

Dokumentasi MikroTik menegaskan FastTrack membuat paket **melewati policy IPsec**. Solusinya bukan menghapus FastTrack, tetapi mengecualikan trafik tunnel lebih awal:

/ip firewall raw add action=notrack chain=prerouting \
    src-address=10.1.203.0/24 dst-address=10.1.102.0/24
/ip firewall raw add action=notrack chain=prerouting \
    src-address=10.1.102.0/24 dst-address=10.1.203.0/24

πŸ“Š Angka penting: dokumentasi menyebut bypass lewat raw `notrack` mengurangi beban CPU sekitar 30% dibanding menambah rule `accept` di filter untuk setiap tunnel.

πŸ”Ή Langkah 6: Uji E β€” IKE dibuka, ESP diblok

Ini simulasi firewall yang "hampir benar": UDP `500` diizinkan, tetapi protokol ESP tidak.

/ip firewall filter print
/ip firewall filter disable [find comment~"ESP"]
/ip ipsec active-peers kill-connections
/ping 10.1.102.1 src-address=10.1.203.1 count=3

Gejala: fase 1 bisa berdiri karena UDP `500` lolos, tetapi data tidak pernah sampai. Yang membuat bingung, sering **tidak ada error jelas di log** β€” karena paket ESP dibuang firewall sebelum sempat dilaporkan sebagai masalah IPsec.

πŸ’‘ Tips: kalau `active-peers` hidup, policy aktif, tetapi counter SA tidak bergerak, curigai firewall atau MTU sebelum menuduh PSK.

Aktifkan kembali rule ESP.

πŸ”Ή Langkah 7: Uji F β€” cari MTU dan pasang MSS clamp

Uji paket besar dengan larangan fragmentasi:

/ping 10.1.102.1 src-address=10.1.203.1 size=1400 do-not-fragment=yes count=3
/ping 10.1.102.1 src-address=10.1.203.1 size=1300 do-not-fragment=yes count=3

Kalau ukuran 1400 gagal dan 1300 berhasil, jalur tunnel tidak sanggup membawa paket penuh. Overhead ESP mode tunnel sekitar 50–73 byte, jadi MTU 1500 di kabel belum tentu jadi 1500 di dalam tunnel.

Pasang MSS clamp agar TCP tidak memaksa paket besar:

/ip firewall mangle add chain=forward action=change-mss new-mss=1360 \
    protocol=tcp tcp-flags=syn tcp-mss=1361-65535 passthrough=yes \
    comment="MSS clamp untuk tunnel IPsec"

πŸ”₯ Kasus nyata: di kasus SMK tadi, login CBT berhasil karena halaman login kecil. Yang menggantung justru unggahan jawaban berisi gambar. Setelah MSS diturunkan ke 1360, unggahan selesai normal tanpa mengubah bandwidth.

πŸ”Ή Langkah 8: Uji G β€” DPD, rekey, dan jam

Uji deteksi peer mati. Disable policy di **Kantor B**, lalu dari A jalankan ping terus-menerus sambil mengamati peer:

/ping 10.1.102.1 src-address=10.1.203.1 count=60
/ip ipsec active-peers print detail

Dengan `dpd-interval=8s` dan `dpd-maximum-failures=4`, peer biasanya dianggap mati setelah sekitar 30–40 detik, bukan seketika. Kolom `last-seen` terus bertambah sebelum peer hilang.

Uji rekey tanpa memutus trafik. Ubah lifetime proposal menjadi 5 menit di kedua sisi, lalu amati:

/ip ipsec installed-sa print detail

Perhatikan `expires-in` menghitung mundur dan `spi` berganti. Ping bersamaan seharusnya tetap 0% loss β€” kalau putus, ada masalah pada `pfs-group` atau waktu.

Terakhir, periksa jam:

/system clock print
/system ntp client print

Selisih waktu antar ujung adalah penyebab putus berkala yang paling sering terlewat.

πŸ”Ή Langkah 9: Uji H β€” policy duplikat dan flag invalid

Tambahkan policy dengan selector yang sama persis seperti policy yang sudah ada:

/ip ipsec policy add peer=peer-ke-b src-address=10.1.203.0/24 \
    dst-address=10.1.102.0/24 proposal=prop-aes256 tunnel=yes \
    action=encrypt level=require comment="duplikat uji"
/ip ipsec policy print

Policy baru akan tampil dengan flag `I` (invalid). Dokumentasi menyebut penyebabnya memang duplikat `src-address`/`dst-address`. Policy invalid tidak dipakai, dan membuat bingung karena konfigurasi "terlihat lengkap".

Hapus kembali:

/ip ipsec policy remove [find comment="duplikat uji"]

πŸ”Ή Langkah 10: bersih-bersih dan lembar hasil

/ip firewall mangle remove [find comment~"MSS clamp"]
/ip firewall raw remove [find action=notrack]
/ip firewall filter remove [find action=fasttrack-connection]
/ip ipsec active-peers kill-connections
/ip ipsec policy print
/ip ipsec active-peers print
/ping 10.1.102.1 src-address=10.1.203.1 count=5
/export file=lab-ipsec-setelah-uji

Isi lembar hasil berikut setelah praktik. Ini yang membedakan laporan praktikum dari sekadar daftar command.

| Uji | Gejala utama | Bukti kunci | Pelajaran | |---|---|---|---| | A | peer kosong, ping gagal | `active-peers` kosong, log fase 1 | PSK/proposal fase 1 | | B | peer hidup, data mati | `ph2-total=0`, `no-phase2` | bedakan fase 1 vs 2 | | C | request masuk, balasan hilang | `tx-bytes` naik, `rx-bytes` diam | policy satu arah | | D | SA aktif, trafik gagal | counter masquerade naik | NAT sebelum enkripsi | | D | trafik lolos tanpa enkripsi | FastTrack di atas policy | raw `notrack` | | E | IKE hidup, data mati | tidak ada error log | ESP diblok firewall | | F | login jalan, unggah macet | ping 1400 gagal, 1300 lolos | MTU dan MSS | | G | putus berkala | `last-seen`, jam meleset | DPD dan NTP | | H | policy tampak lengkap | flag `I` | duplikat selector |

🏭 Dipakai di dunia kerja

  • **Sekolah:** lab CBT di gedung terpisah terhubung ke server ujian; uji MTU wajib sebelum hari ujian, karena unggahan jawaban lebih besar dari halaman login.
  • **Kantor cabang:** aplikasi ERP dan penggajian lewat tunnel; tim IT memantau `ph2-total` agar tahu kapan cabang benar-benar terputus, bukan hanya "koneksi internet hidup".
  • **Koperasi dan bank:** jalur host-to-host antar kantor pusat dan cabang; perubahan policy satu arah bisa menghentikan setoran tanpa pesan error yang jelas.
  • **Industri:** data PLC dan sensor dikirim ke server monitoring pusat; MSS clamp dan MTU yang benar mencegah data produksi terpotong.
  • **ISP dan NOC:** tunnel pelanggan korporat dipantau lewat `last-seen` dan counter SA; deteksi dini mencegah komplain sebelum pelanggan menelepon.
  • **Klinik dan rumah sakit:** rekam medis antar cabang; jam yang sinkron penting agar sesi tidak putus saat sedang mengisi data pasien.

βœ… Verifikasi

Jalankan berurutan setelah semua uji selesai:

/ip ipsec active-peers print detail
/ip ipsec policy print stats
/ip ipsec installed-sa print detail
/ip ipsec statistics print
/ip firewall nat print stats
/ping 10.1.102.1 src-address=10.1.203.1 count=10

| Pemeriksaan | Hasil yang diharapkan | |---|---| | Fase 1 | `state=established`, `uptime` bertambah, `last-seen` kecil | | Fase 2 | `ph2-count` minimal 2, `ph2-state=established`, flag `A` | | SA | ada entri ESP `state=mature`, `expires-in` wajar | | Statistik | tidak ada kenaikan `in-no-policies` atau `in-template-mismatches` | | NAT | counter rule bypass bertambah, bukan counter masquerade | | Trafik | ping 10 paket, 0% loss, waktu stabil |

πŸ§ͺ Uji cepat: reset statistik, ping 10 paket, lalu baca statistik lagi. Kalau bersih, tunnel benar-benar sehat β€” bukan hanya "kelihatan hidup".

⚠️ Kesalahan umum & troubleshooting

| Gejala | Perintah pemeriksa | Penyebab dan perbaikan | |---|---|---| | `active-peers` kosong | `/ip ipsec active-peers print` | PSK beda, DH group beda, atau UDP `500` diblok | | Peer hidup, `ph2-total=0` | `/ip ipsec policy print stats` | Proposal/PFS beda, `tunnel=no`, selector tidak cocok | | Ping satu arah timeout | `/ip ipsec installed-sa print detail` | Policy balik belum ada atau dinonaktifkan | | SA aktif, trafik nol | `/ip firewall nat print stats` | `masquerade` mendahului bypass, atau FastTrack menyalip | | IKE hidup, ESP hilang | `/ip firewall filter print stats` | Protokol ESP tidak diizinkan | | Login jalan, unggah macet | `/ping ... size=1400 do-not-fragment=yes` | MTU terlalu besar, MSS belum di-clamp | | Putus tiap beberapa jam | `/system clock print`, `/system ntp client print` | Jam tidak sinkron, SA harus dibangun ulang | | `in-no-policies` naik | `/ip ipsec statistics print` | SA masuk tanpa policy yang cocok | | `in-template-mismatches` naik | `/ip ipsec policy print` | Template policy tidak cocok, biasanya mode-config | | Policy berflag `I` | `/ip ipsec policy print` | Ada dua policy dengan selector sama | | Rekey memutus trafik | `/ip ipsec installed-sa print detail` | `pfs-group` beda atau waktu tidak sinkron |

⚠️ Hati-hati: jangan menambah policy baru di atas policy yang bermasalah. Perbaiki penyebabnya dulu, karena policy dibaca berurutan dari atas ke bawah.

πŸ” Catatan keamanan & etika

  • **Fault injection hanya untuk lab.** Merusak tunnel produksi bisa menghentikan ujian, absensi, atau transaksi.
  • **PSK tetap lemah.** Dokumentasi MikroTik menyatakan serangan *offline* terhadap PSK mungkin terjadi bahkan pada mode `main` dan `ikev2`. Untuk produksi, gunakan sertifikat.
  • **Batasi sumber IKE.** Jangan buka UDP `500/4500` untuk seluruh internet; batasi ke IP peer.
  • **Hati-hati saat logging.** Log IPsec bisa memuat alamat, identitas, dan informasi negosiasi. Aktifkan debug hanya selama uji, lalu matikan.
  • **Uji tidak menghapus enkripsi.** Menurunkan MSS atau menambah `notrack` tidak melemahkan IPsec; keduanya hanya mengatur jalur paket.
  • **Etika praktik.** Semua pengujian dilakukan pada perangkat sendiri atau yang kamu punya izin tertulis.

πŸ“Œ Kesimpulan

Tunnel IPsec yang sehat punya empat lapis bukti: peer berdiri, SA fase 2 terbentuk, jalur data bersih, dan waktu sinkron. Kalau satu lapis gagal, gejala dan perintah pemeriksanya berbeda.

Tiga kebiasaan yang paling menolong:

  • **Baseline dulu, reset statistik, satu perubahan per uji.**
  • **Bedakan peer kosong (fase 1) dari `ph2-total=0` (fase 2).**
  • **Curigai NAT, FastTrack, firewall, dan MTU sebelum menuduh kunci.**

Langkah berikutnya: ulangi Uji A sampai Uji H tanpa melihat panduan, lalu tulis sendiri gejalanya. Kemampuan mendiagnosis inilah yang dipakai di dunia kerja, bukan hafalan command.

πŸ”— Materi terkait

πŸ“š Referensi