Halaman dimuatkan, ping berjaya, dan salinan fail tersekat pada titik yang sama setiap kali. Corak itu menunjuk kepada saiz paket, bukan lebar jalur atau kelayakan. Pembungkusan menambah bait pada setiap paket, jadi muatan yang muat pada laluan asal boleh melebihi had selepas melalui terowong. Dalam perbualan ini tiga nombor berbeza dipanggil MTU, dan mengelirukannya membawa kepada tetapan yang membaiki satu aplikasi dan merosakkan yang lain.

Tiga nombor yang orang panggil MTU

MTU antara muka ialah had yang dikonfigurasikan untuk paket pada pautan itu. MTU laluan ialah had terkecil di sepanjang laluan, dan ia ditemui bukan dikonfigurasikan. TCP MSS ialah saiz muatan yang diisytiharkan rakan sebaya boleh diterima, dan ia diperoleh daripada dua yang lain, bukan had fizikal berasingan.

Terowong mempunyai pandangan dalam dan pandangan luar. Paket luar membawa paket yang dibungkus serta pengepala yang diperlukan protokol, jadi saiz dalam yang boleh digunakan lebih kecil daripada yang dibenarkan laluan luar. Laluan ke pelayan VPN juga berbeza daripada laluan pelayan ke destinasi.

Penemuan MTU laluan membolehkan penghantar mengetahui saiz yang berfungsi, tetapi ia bergantung pada maklum balas sampai. Apabila peranti perantaraan menapis mesej ICMP yang berkaitan, penghantar terus menghantar paket yang tidak pernah selesai, dan itulah lubang hitam klasik. Gejalanya jelas apabila anda mengenalnya: jabat tangan berjaya, muatan saiz penuh pertama hilang, dan sambungan akhirnya ditetapkan semula atau tersekat. Tiada apa-apa dalam log aplikasi kelihatan seperti masalah rangkaian.

Uji laluan dengan muatan yang anda kawal

Ujian ialah bukti tentang satu laluan dan satu saiz, bukan tetapan yang disyorkan. Gunakan hos yang menjawab, dan ubah hanya saiz muatan.

ping -M do -s 1372 -c 2 203.0.113.20
ping -4 -f -l 1372 vpn.example

Perintah pertama menghantar ujian Linux dengan pemecahan dimatikan dan muatan 1372 bait, dan yang kedua melakukan perkara sama pada Windows di mana muatan ditetapkan dengan -l. Balasan bermakna saiz itu bertahan melalui laluan. Mesej bahawa pemecahan diperlukan adalah bermaklumat, manakala tamat masa adalah samar kerana hos atau peranti perantaraan mungkin hanya membuang ICMP.

Turunkan saiz dalam beberapa langkah dan bukan carian binari sehingga bait. Anda cuba memastikan sama ada siling saiz wujud, bukan menerbitkan nombor untuk setiap rangkaian. Nombor yang anda temui terpakai untuk laluan ini, protokol ini dan keluarga alamat ini.

IPv4 dan IPv6 memecah secara berbeza, jadi hasil ujian satu keluarga tidak mengatakan apa-apa tentang yang lain. Uji keluarga yang benar-benar digunakan aplikasi.

Pengapitan MSS hanya membantu TCP

Dalam TCP muatan berkesan dirundingkan semasa jabat tangan, dan penghala di laluan boleh menulis semula nilai itu ke bawah supaya kedua-dua hujung menghantar segmen lebih kecil. Itulah yang dilakukan pengapitan MSS, dan ia berfungsi tanpa menyentuh klien sama sekali.

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ip link show tun0

Peraturan pertama mengapit MSS yang diumumkan kepada MTU laluan untuk jabat tangan TCP yang diteruskan, dan yang kedua menunjukkan MTU antara muka terowong itu sendiri supaya anda boleh membandingkannya dengan apa yang dibenarkan laluan. Pengapitan ialah pembaikan paling kurang invasif untuk aplikasi TCP yang tersekat selepas jabat tangan.

Untuk UDP ia tidak melakukan apa-apa. Klien suara atau permainan yang menghantar datagram besar akan mengabaikan tetapan MSS sepenuhnya, kerana tiada jabat tangan untuk ditulis semula. Jika aplikasi yang gagal itu UDP, lihat sebaliknya pilihan saiz paket klien itu sendiri. Kedua-dua protokol gagal dengan cara berbeza dan dibaiki dengan alat berbeza, sebab itulah protokol tergolong dalam ayat pertama tiket.

OpenVPN mendedahkan pilihan seperti tun-mtu, mssfix dan tetapan berkaitan pemecahan, dan tingkah lakunya bergantung pada versi dan sama ada saluran data itu AEAD. Baca manual untuk versi yang digunakan, dan ubah satu pilihan pada satu masa.

Ubah satu tetapan yang disokong dan ulangi kedua-dua percubaan

Simpan profil asal, ubah satu nilai yang disokong, dan ulangi kedua-dua permintaan kecil yang berjaya dan pemindahan besar yang gagal. Jika hanya yang besar berubah, anda mengejar saiz. Jika kedua-duanya berubah, sesuatu yang lain bergerak bersamanya.

Nilai lebih rendah boleh mengurangkan gejala sambil menambah beban, jadi nombor terkecil yang mungkin bukan matlamatnya. Matlamatnya ialah saiz yang dibawa laluan dengan boleh dipercayai dan pembaziran paling sedikit. Catat nilai, laluan dan versi klien dalam tiket, kerana nombor yang sama digunakan di tempat lain ialah tekaan.

Jika profil yang sama berfungsi dari rangkaian dipercayai yang lain, kekalkan perbezaan itu dalam diagnosis dan bukan mengisytiharkan klien sudah dibaiki. Pemboleh ubah yang berubah ialah laluan, dan laluan itulah yang diukur oleh ujian.

Artikel berkaitan