Lompat ke konten utama

Ping Jalan tapi Situs Besar Menggantung? Masalahnya MTU

Ping lancar, situs kecil kebuka, situs gede menggantung terus timeout. Gejala itu hampir selalu MTU.

Gejalanya khas banget, dan sekali kenal nggak bakal salah lagi:

  • Ping jalan lancar
  • Situs kecil kebuka normal
  • Situs gede menggantung terus timeout
  • HTTPS lebih sering bermasalah daripada HTTP
  • Kejadiannya cuma buat perangkat yang lewat VPN atau PPPoE

Kalau kelimanya cocok, itu MTU.

Kenapa bisa gitu

Tiap tunnel nambahin bungkus di depan paket. PPPoE nambah 8 byte, WireGuard sekitar 60 byte, IPsec bisa lebih.

Kalau MTU-nya nggak disesuaiin, paket yang tadinya pas 1500 jadi kegedean setelah dibungkus. Router di tengah jalan harus mecah atau buang paket itu.

Masalahnya, banyak jaringan ngeblokir pesan ICMP yang seharusnya ngasih tahu "paketmu kegedean". Jadi pengirimnya nggak pernah dapat kabar, dan dia nunggu terus sampai timeout.

Ping paketnya kecil, jadi lolos. Halaman gede paketnya penuh, jadi nyangkut. Itu yang bikin gejalanya aneh.

Ngukurnya

Dari komputer yang bermasalah, kirim ping dengan bendera "jangan dipecah", terus turunin ukurannya sampai lolos.

Di Windows:

ping -f -l 1472 8.8.8.8

Di Linux atau Mac:

ping -M do -s 1472 8.8.8.8

Kalau jawabannya "Packet needs to be fragmented", turunin angkanya. Coba 1464, 1452, 1400.

Angka yang lolos itu ditambah 28 hasilnya MTU jalur Anda. Jadi kalau 1464 lolos, MTU-nya 1492, yang emang angka khas PPPoE.

Kalkulator MTU & MSS ngitung mundur dari tumpukan yang Anda pakai, jadi nggak perlu nebak satu-satu.

Benerinnya: MSS clamping

Jangan setel MTU di tiap perangkat client. Nggak praktis dan gampang kelewat.

Yang bener biarin router yang nyesuaiin otomatis:

/ip firewall mangle
add chain=forward protocol=tcp tcp-flags=syn action=change-mss \
    new-mss=clamp-to-pmtu out-interface=all-ppp

clamp-to-pmtu bikin router ngitung sendiri ukuran maksimum yang muat, buat tiap koneksi. Nggak perlu masukin angka.

Kalau RouterOS-nya lama dan belum dukung clamp-to-pmtu, isi manual: MTU dikurangi 40.

Kenapa ini nyerang HTTPS lebih sering

Jabat tangan TLS ngirim sertifikat, dan sertifikat itu gede. Jadi koneksi HTTPS nyentuh paket ukuran penuh jauh lebih awal daripada HTTP biasa.

Itu sebabnya gejalanya sering kebaca sebagai "sertifikatnya bermasalah", padahal sertifikatnya baik-baik aja.

Kalau pakai WireGuard

WireGuard nggak pakai TCP, jadi MSS clamping nggak ngefek ke traffic WireGuard-nya sendiri. Yang perlu disetel itu MTU di interface-nya:

/interface wireguard set [find] mtu=1420

1420 itu angka yang aman buat kebanyakan jalur. Kalau di atas PPPoE, turunin lagi ke 1412.

Baca juga

Semua artikel