Kegagalan DNS atau masalah MTU? Di mana permintaan sebenarnya berhenti
Nama yang tidak pernah ter-resolve gagal sebelum koneksi apa pun; kemacetan MTU dimulai setelah handshake. Temukan tahapnya dulu, lalu ubah satu lapisan dan uji ulang.
Dua kegagalan menghasilkan kalimat yang sama dari pengguna: situsnya tidak berfungsi. Keduanya terjadi pada lapisan berbeda, dan perbedaannya menentukan apa yang Anda ubah. Kegagalan resolusi nama berhenti sebelum koneksi apa pun ada. Kegagalan ukuran paket terjadi setelah nama ter-resolve dan setelah handshake selesai, itulah sebabnya halaman mulai memuat lalu menggantung. Temukan tahapnya sebelum menemukan pengaturannya.
Dua kegagalan pada lapisan berbeda
Resolusi mengubah nama menjadi alamat, dan tidak ada hal lain dalam koneksi yang bisa dimulai sampai itu berhasil. Masalah MTU jalur terjadi belakangan, ketika paket yang lebih besar dari batas suatu tautan dibuang dan pengirimnya tidak pernah diberi tahu. Yang satu pencarian; yang lain kegagalan pengiriman yang hanya muncul di atas ukuran tertentu.
Gejalanya berbeda dengan cara yang bisa Anda amati tanpa alat apa pun. Kegagalan DNS bersifat segera dan konsisten: peramban mengatakan server tidak dapat ditemukan. Kegagalan MTU bersifat sebagian: halaman dimulai, beberapa sumber daya tiba, dan respons besar atau unggahan macet.
Jika gejala Anda sebagian, berhentilah melihat DNS.
Tahap 1: apakah nama ter-resolve sama sekali
Gunakan alat pencarian platform dengan nama host persis yang dipakai aplikasi. Nama privat di kantor mungkin memerlukan resolver internal, dan DNS aman milik peramban bisa berperilaku berbeda dari resolver sistem operasi, sehingga keduanya bisa tidak sepakat soal nama yang sama.
Tanyakan kepada resolver yang akan dipakai sistem operasi, lalu bandingkan:
dig +short vpn.example.com
dig +short vpn.example.com @10.0.0.53
Jika resolusi gagal, masalahnya ada pada kebijakan itu dan keterjangkauannya. Jangan mengirim nama privat ke resolver publik sembarangan hanya untuk mendapat perbandingan, karena perbandingan itu sendiri membocorkan nama yang ingin Anda jaga tetap internal.
Tahap 2: di mana transfer berhenti
Jika nama ter-resolve dan koneksi dimulai, catat di mana operasi berhenti. Halaman yang tampil lalu macet pada satu sumber daya, unggahan yang mati di titik yang konsisten, atau unduhan besar yang tidak pernah selesai sementara permintaan kecil berfungsi semuanya gejala berbentuk ukuran. Respons yang tidak pernah mulai sama sekali punya bentuk lain.
Jaga titik akhir dan tujuan aplikasi tetap saat membandingkan, atau Anda mengukur dua variabel sekaligus. Penyebab lain masih mungkin pada tahap ini: kesalahan layanan, kehilangan paket, perilaku filter, dan penyambungan ulang tunnel semuanya menghasilkan kemacetan.
Satu kemacetan yang bisa diulang lebih berharga daripada sepuluh yang anekdotal.
Mengapa MTU hanya merugikan setelah handshake
Handshake TCP memakai paket kecil, jadi berhasil pada jalur yang tidak bisa membawa segmen berukuran penuh. Kegagalan muncul ketika pengirim mengirim paket besar dengan bit larangan fragmentasi, sebuah tautan membuangnya, dan pesan ICMP yang seharusnya melaporkan batas itu tidak pernah tiba karena dimakan filter. Pengirim lalu mencoba ukuran yang sama lagi dan transfer macet.
Karena itu gejalanya bergantung pada ukuran dan bisa diulang, bukan acak. Ini juga menjelaskan mengapa ping ke host tidak membuktikan apa pun, karena gema ICMP kecil bisa melewati jalur yang tidak akan membawa muatan berukuran penuh. Ukur ukurannya dari kedua ujung jalur jika bisa. Batas yang hanya muncul di satu arah adalah asimetri perutean, bukan MTU tunnel.
Ukur ukurannya secara eksplisit alih-alih menyimpulkannya:
ping -M do -s 1472 203.0.113.20
tracepath 203.0.113.20
Ubah satu lapisan, lalu buktikan
Untuk nama, ubah kebijakan resolver dan jalankan pencarian yang sama lagi. Untuk ukuran, gunakan prosedur MTU dengan nilai asli tercatat dan pengembalian siap, karena membatasi MSS tanpa mengetahui MTU sebenarnya dari tunnel menukar satu kemacetan dengan kemacetan lain.
Halaman yang memuat sekali setelah beberapa pengaturan diubah tidak menunjukkan perbaikan mana. Ubah satu hal, jalankan pengujian yang sama lagi, dan simpan hasilnya di samping tahap gagal pertama yang Anda catat.
Catatan itulah yang mencegah DNS, ukuran paket, dan autentikasi menjadi tumpukan jalan pintas permanen yang tidak bisa dijelaskan siapa pun. Menguji lewat IP mentah adalah contoh bagus dari jalan pintas yang mengubah identitas TLS, dan menonaktifkan verifikasi sertifikat agar perbandingan berhasil bukanlah diagnosis.