Ping VPN berfungsi tetapi situs macet: periksa ukurannya
Balasan gema kecil tidak menguji pendengar TCP atau transfer besar. Pisahkan kebijakan akses dari ukuran paket sebelum menurunkan MTU terowongan.
Balasan ping datang, desktop jarak jauh berfungsi, dan peramban duduk di halaman kosong sampai menyerah. Dua penjelasan cocok dengan pola itu, dan keduanya bukan variasi dari satu masalah: kebijakan yang tidak pernah mengizinkan layanan, atau paket yang berhenti muat begitu transfer bertambah besar. Balasan gema tidak menyingkirkan keduanya.
Mulailah dari pertanyaan terkecil ke yang terbesar, dan catat apa yang sebenarnya dibuktikan setiap langkah.
Balasan gema menjawab pertanyaan yang jauh lebih kecil
Balasan gema mengatakan bahwa tumpukan IP tujuan menjawab permintaan ICMP dari sumber Anda. Balasan itu tidak mengatakan apa pun tentang ada atau tidaknya pendengar TCP pada porta yang Anda butuhkan, apakah suatu kebijakan mengizinkan porta itu, atau apakah hos tujuan menyaring lalu lintas secara terpisah dari gerbang. Gerbang yang mengizinkan satu layanan dapat menjatuhkan layanan lain sementara kedua target menjawab ping. Bacalah balasan itu sebagai satu fakta tentang satu paket dan satu arah.
Pastikan tujuan dan porta layanan sebelum menafsirkan hal lain. Alamat yang Anda uji dan alamat yang dipakai aplikasi kadang merupakan catatan berbeda, dan nama yang mengarah ke dua alamat membuat hal itu mungkin.
Cari tahu apakah koneksi dimulai
Koneksi yang langsung ditolak adalah jawaban dari pendengar atau kebijakan: sesuatu menjawab dan berkata tidak. Koneksi yang terbuka lalu berhenti ketika data mulai bergerak menunjuk pada ukuran. Koneksi yang tidak pernah menyelesaikan jabat tangan biasanya soal kebijakan atau perutean, dan tampak seperti batas waktu, bukan penolakan.
curl -v --max-time 10 https://internal.example/ -o /dev/null
ss -tn state established '( dport = :443 )'
Catat mana dari ketiga hal itu yang Anda amati sebelum menyentuh pengaturan MTU. Mengubah ukuran terowongan untuk memperbaiki koneksi yang ditolak menyia-nyiakan perubahan itu dan menyembunyikan penyebab sebenarnya untuk sementara.
Ukur ukuran dengan angka yang dinyatakan
Ketika kemacetan muncul di bawah beban, uji satu ukuran paket dengan bit larangan Fragmentasi disetel dan nyatakan aritmetikanya agar hasilnya bermakna. Di Linux dengan iputils, muatan 1392 bita ditambah tajuk ICMP 8 bita dan tajuk IPv4 20 bita menghasilkan paket dalam sebesar tepat 1420 bita. Nyatakan aritmetika itu di tiket, karena ping telanjang yang mencapai gerbang tidak membuktikan apa pun tentang aplikasi.
ping -4 -M do -s 1392 10.44.0.10
ping -4 -M do -s 1372 10.44.0.10
Kedua pemeriksaan adalah titik ukur, bukan rekomendasi ukuran terowongan. Jika ICMP disaring di suatu tempat pada jalur, batas waktu tidak memberi tahu apa pun tentang ukuran, karena penyaringan dan paket yang terlalu besar tampak sama dari sisi klien. Keberhasilan juga tidak mengatakan apa pun tentang arah sebaliknya atau tentang tujuan lain.
Perhitungkan jalur luar
Enkapsulasi menambahkan tajuknya sendiri, sehingga paket di kabel lebih besar daripada paket yang Anda ukur di dalam terowongan. Selisih antara keduanya inilah yang memungkinkan permintaan kecil yang berfungsi dan permintaan besar yang gagal terjadi bersamaan.
Penemuan MTU jalur di IPv4 bergantung pada umpan balik tentang paket yang tidak dapat diteruskan tanpa fragmentasi, dan IPv6 memakai pesan Packet Too Big. Spesifikasi IPv4 menjelaskan mekanisme itu. Menyaring umpan balik merusak kemampuan pengirim untuk belajar dan membuatnya terus mengirim ulang paket yang tidak akan pernah muat. Itulah sebabnya permintaan kecil yang berfungsi dan permintaan besar yang gagal hidup berdampingan begitu nyaman.
Ubah satu angka dan uji ulang aplikasi
Turunkan MTU terowongan, atau batasi ukuran segmen maksimum untuk TCP, lalu ulangi uji aplikasi semula alih-alih pemeriksaan. Pemeriksaan yang berhasil setelah perubahan dan aplikasi yang masih macet adalah masalah berbeda dengan bentuk serupa, dan hanya uji aplikasi yang membedakannya.
Simpan aritmetika dalam catatan perubahan: ukuran yang diukur, biaya tambahan yang Anda asumsikan, dan nilai yang Anda setel. Siapa pun yang meninjaunya nanti dapat memeriksa asumsi itu alih-alih menurunkannya kembali dari tangkapan layar ping.
Jika aplikasi berfungsi pada setiap ukuran yang Anda coba, berhentilah menyesuaikan angka dan lihatlah kebijakan yang memisahkan layanan yang berfungsi dari yang gagal.