Apa Itu MTU dan Kenapa Koneksi Tunnel Putus-putus?
Penjelasan MTU dan MSS, kenapa tunnel VPN bisa tersambung tapi halaman macet atau transfer berhenti, cara mencari MTU yang tepat, dan cara memperbaikinya.
Jawaban singkat
MTU adalah ukuran paket terbesar yang bisa lewat sebuah jalur. Tunnel menambah header, sehingga paket penuh menjadi terlalu besar dan bisa hilang diam-diam bila pesan ICMP terblokir. Solusinya menurunkan MTU tunnel dan memasang MSS clamping.
Daftar isi
MTU (Maximum Transmission Unit) adalah ukuran paket IP terbesar, dalam byte, yang bisa dikirim lewat sebuah jalur jaringan tanpa dipecah. Pada Ethernet biasa nilainya 1500 byte. Masalah muncul saat ada tunnel: setiap paket dibungkus header tambahan, sehingga ruang untuk data berkurang.
Kenapa penting? Karena gejala masalah MTU sangat menyesatkan. Tunnel terlihat tersambung, ping berhasil, login SSH lancar, tapi halaman web berhenti di tengah, unduhan macet, atau aplikasi tertentu putus-putus. Banyak orang lalu mengganti router atau menyalahkan ISP, padahal yang perlu diubah hanya satu angka.
Apa hubungan MTU dan tunnel?
Bayangkan paket 1500 byte dari laptop kantor masuk ke tunnel WireGuard. WireGuard membungkusnya dengan header IP luar, header UDP, dan header WireGuard sendiri. Untuk jalur IPv4 tambahannya 60 byte, untuk IPv6 80 byte. Paket hasil bungkusan menjadi 1560 byte, lebih besar dari MTU jalur internet yang 1500.
Itulah sebabnya alat wg-quick bawaan WireGuard secara default memasang MTU 1420 di antarmuka tunnel: 1500 dikurangi 80 agar aman untuk IPv4 maupun IPv6. Protokol lain punya overhead berbeda. L2TP dengan IPsec, SSTP, GRE, dan PPPoE masing-masing menambah header sendiri. Koneksi PPPoE dari ISP saja sudah menurunkan MTU jalur menjadi 1492.
Ringkasan angka yang sering ditemui:
| Jalur atau protokol | MTU atau overhead yang umum | Catatan |
|---|---|---|
| Ethernet standar | MTU 1500 | Nilai dasar kebanyakan jaringan |
| PPPoE (internet fiber atau DSL) | MTU 1492 | Header PPPoE 8 byte |
| WireGuard di atas IPv4 | Overhead 60 byte | 20 IP + 8 UDP + 32 WireGuard |
| WireGuard di atas IPv6 | Overhead 80 byte | Header IPv6 40 byte |
| MTU bawaan wg-quick | 1420 | Aman untuk jalur 1500 |
| MSS TCP pada MTU 1500 | 1460 | MTU dikurangi 40 byte header IP dan TCP |
Kenapa paket besar hilang diam-diam?
Secara teori, internet punya mekanisme untuk menangani paket yang kebesaran. Bila paket ditandai "jangan dipecah" (Don't Fragment), router yang tidak bisa meneruskannya mengirim pesan ICMP "Fragmentation Needed" ke pengirim. Pengirim lalu memperkecil paketnya. Mekanisme ini disebut Path MTU Discovery dan dijelaskan di RFC 1191.
Masalahnya, banyak firewall memblokir semua ICMP karena dianggap berbahaya. Pesan itu tidak pernah sampai, pengirim terus mengirim paket besar, dan paket itu terus dibuang. Kondisi ini dikenal sebagai PMTUD black hole. Paket kecil (ping, jabat tangan TCP, ketikan SSH) lolos, paket besar (isi halaman web, berkas) tidak. Inilah sumber gejala "tersambung tapi macet".
Bagaimana cara mencari MTU yang tepat?
Kirim ping dengan ukuran tertentu dan larang pemecahan paket. Di Linux:
ping -M do -s 1472 -c 3 1.1.1.1
Angka 1472 adalah ukuran data. Ditambah 8 byte header ICMP dan 20 byte header IP, totalnya 1500. Bila muncul pesan "message too long" atau tidak ada balasan, turunkan angkanya bertahap (1462, 1452, dan seterusnya) sampai berhasil. MTU jalur sama dengan angka terbesar yang berhasil ditambah 28. Di Windows, perintah setaranya ping -f -l 1472 1.1.1.1.
Lakukan tes yang sama melalui tunnel, ke alamat IP di sisi lain tunnel, untuk mengetahui MTU efektif tunnel.
Cara memperbaikinya
Ada dua langkah yang saling melengkapi.
Turunkan MTU antarmuka tunnel. Untuk WireGuard, tambahkan MTU = 1420 (atau lebih kecil bila jalurnya PPPoE atau berlapis) di bagian [Interface] berkas konfigurasi. Untuk jalur PPPoE dengan WireGuard di atas IPv4, misalnya, 1492 dikurangi 60 memberi 1432, tapi angka 1420 tetap aman dan mudah diingat. Di MikroTik, MTU antarmuka WireGuard, L2TP, atau SSTP diatur di properti antarmuka masing-masing.
Pasang MSS clamping. MSS (Maximum Segment Size) adalah ukuran data TCP per paket yang disepakati saat jabat tangan. Router di ujung tunnel bisa menulis ulang nilai MSS agar sesuai MTU jalur, sehingga perangkat di belakangnya tidak pernah mengirim paket kebesaran, bahkan bila ICMP terblokir. Di Linux dengan iptables:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu
Di MikroTik, fungsi yang sama dipasang lewat aturan firewall mangle dengan aksi change-mss. Jangan juga memblokir semua ICMP di firewall. Izinkan setidaknya pesan "Fragmentation Needed" (IPv4) dan "Packet Too Big" (IPv6) agar Path MTU Discovery bisa bekerja.
Apakah MTU kecil membuat koneksi lambat?
Sedikit, dan biasanya tidak terasa. MTU lebih kecil berarti lebih banyak paket untuk data yang sama, sehingga porsi header sedikit naik. Selisihnya beberapa persen saja, jauh lebih kecil dibanding kerugian koneksi yang macet karena paket hilang. Yang perlu dihindari adalah menurunkan MTU terlalu jauh tanpa alasan, misalnya ke 1280, kecuali hasil tes memang menunjukkan perlu. Angka 1280 adalah MTU minimum yang wajib didukung IPv6, jadi nilai ini biasanya dipakai sebagai batas bawah terakhir, bukan titik awal. Setelah mengubah MTU, uji lagi dengan transfer berkas besar dan buka beberapa halaman web berat lewat tunnel untuk memastikan gejalanya benar-benar hilang.
Untuk memilih protokol tunnel yang sesuai perangkatmu, baca WireGuard vs L2TP vs SSTP. Bila sedang menyambungkan dua kantor, panduan menghubungkan kantor cabang dengan WireGuard memasukkan pengaturan MTU sejak awal.
Pertanyaan yang sering diajukan
Apakah MTU 1500 di router harus diubah?
Biasanya tidak. Yang diubah adalah MTU antarmuka tunnel dan MSS clamping di router ujung tunnel. MTU antarmuka WAN ikuti saja nilai dari ISP, misalnya 1492 untuk PPPoE.
Kenapa hanya aplikasi tertentu yang bermasalah?
Aplikasi yang mengirim paket kecil, seperti chat atau SSH, jarang kena. Aplikasi yang mengirim data besar dalam satu paket penuh, seperti halaman web berat, unggahan berkas, atau koneksi database, lebih dulu merasakan.
Apakah UDP juga terpengaruh MSS clamping?
Tidak. MSS hanya berlaku untuk TCP. Untuk aplikasi berbasis UDP, ukuran paket harus diatur di aplikasinya sendiri atau dengan memastikan MTU tunnel sudah benar.


