MTU atau MSS? Apa yang sebenarnya diperbaiki oleh perubahan VPN
MTU mengehadkan apa yang dibawa oleh pautan; MSS mengehadkan muatan TCP di dalamnya. Hadkan yang betul dan ketahui protokol mana yang tidak diliputi oleh kedua-duanya.
Ping berjaya, pemindahan besar tergantung, dan terowong melaporkan dirinya sihat. Seseorang menurunkan MTU antara muka, orang lain mengehadkan MSS, dan kadangkala masalah hilang atas sebab yang tiada siapa catat. Kedua-dua nombor itu menerangkan objek yang berbeza, jadi menukar yang salah menghasilkan pembaikan yang kelihatan seperti nasib. Inilah prosedurnya: kenal pasti lapisan, gunakan pelarasan yang sepadan, kemudian uji pada sambungan baharu.
Dua nombor, dua objek
MTU milik pautan atau antara muka: ia paket terbesar yang boleh diserahkan tanpa dipecahkan. MSS milik TCP: ia jumlah muatan TCP terbesar yang boleh dibawa oleh satu segmen, dan ia mengecualikan kedua-dua pengepala TCP dan IP. Pada pautan Ethernet biasa dengan IPv4, MTU 1500 bait menghasilkan MSS 1460 bait yang biasa dikenali. Nombor-nombor itu menerangkan lapisan berbeza dan ditukar melalui mekanisme berbeza. Mudah mengelirukan kerana kedua-duanya diukur dalam bait dan kedua-duanya hampir 1500.
Satu datang sebagai tetapan antara muka. Yang lain datang sebagai pilihan di dalam segmen SYN, dirunding antara hujung yang tidak pernah melihat antara muka anda.
Di mana lebihan luar mendarat
VPN meletakkan paket dalam ke dalam paket lain, dan paket luar mesti muat dalam laluan fizikal. Pengepala enkapsulasi, pengepala IP luar, pengepala pengangkutan dan sebarang tag pengesahan semuanya menggunakan bait yang tidak boleh digunakan oleh paket dalam. Biarkan antara muka terowong pada 1500 dan paket luar kerap melebihi apa yang laluan boleh bawa. Dengan bit 'jangan pecahkan' ditetapkan, penghala menolaknya dan sepatutnya menghantar balik ralat ICMP; jika ralat itu ditapis, penghantar tidak pernah tahu.
Itulah sebabnya kegagalan kelihatan terpilih. Permintaan kecil selesai dan apa sahaja yang memenuhi segmen terhenti, kerana hanya paket besar yang dibuang. Terowong yang meloloskan ping bukan terowong yang membawa data.
Mengehadkan MSS, dan di mana ia terpakai
Pengapitan MSS menulis semula nilai dalam segmen SYN semasa ia melintasi titik yang dipilih, menyebabkan kedua-dua hujung memilih muatan lebih kecil tanpa mengetahui mengapa. Pada Linux ia sasaran jadual mangle yang digunakan oleh peraturan eksplisit, dan ia perlu mengenai paket SYN ke arah yang anda mahu. Hadkan kepada antara muka terowong dan julat alamat, kerana peraturan luas mengubah tingkah laku trafik yang tidak pernah masuk ke terowong.
Kesannya hanya pada TCP. Aplikasi UDP, sesi QUIC dan mana-mana protokol yang membina datagram sendiri tidak terjejas.
Diagnosis dengan laluan tetap
Kekalkan satu pemboleh ubah pada satu masa. Uji dengan paket yang saiznya anda pilih sendiri, dan tetapkan bendera 'jangan pecahkan' supaya kernel melaporkan hasilnya dan bukannya menyembunyikannya.
Catat di mana kegagalan bermula: di dalam terowong, pada antara muka terowong, atau pada laluan fizikal selepas enkapsulasi. Kemudian tukar satu nombor dan ulangi ujian yang sama, bukan ujian lain. Sambungan sedia ada mengekalkan MSS yang dirundingkan, jadi perubahan dasar hanya kelihatan pada sambungan baharu, dan itulah sebabnya halaman yang dicache tidak membuktikan apa-apa ke mana-mana arah. Jika satu muat naik besar mula berfungsi, anda belajar tentang laluan itu dan bukan tentang setiap protokol di atasnya.
Apa yang tidak diperbaiki oleh setiap perubahan
Menurunkan MTU antara muka tidak mengubah MSS sesi yang sudah terbentuk. Mengehadkan MSS tidak membantu aliran UDP, dan tidak membaiki laluan di mana ralat ICMP ditapis hanya satu arah. Setiap perubahan membaiki satu kelas masalah dan membiarkan yang lain tepat seperti sebelumnya.
Catat pelarasan mana yang anda gunakan, di mana, dan ujian mana yang menunjukkan perbezaan, kerana jika tidak jurutera seterusnya menggunakan kedua-duanya dan kehilangan keupayaan untuk mengatakan mana yang penting. Jika kekangan itu nyata dan kekal, pilih MTU terowong yang mencerminkannya berbanding pengapitan yang menyembunyikannya. Jika anda perlu mengapit, biarkan peraturan itu sempit dan dikomentari, kerana peraturan mangle yang tidak dijelaskan menjadi kekal secara lalai.