Tiga tetapan pada klien Linux semuanya berbunyi seperti «jadikan paket lebih kecil», dan ia bertindak pada lapisan berbeza. MTU antara muka mengehadkan setiap paket yang dihantar peranti. MTU laluan mengehadkan paket yang menggunakan laluan itu, yang selalunya itulah yang anda benar-benar mahu untuk satu destinasi VPN. Had TCP MSS mengubah apa yang dirundingkan kedua hujung, dan ia tidak melakukan apa-apa untuk UDP.

Tiga kawalan yang kelihatan seperti tombol yang sama

Letakkan mereka bersebelahan sebelum memilih, kerana memilih baris yang salah menjelaskan sebahagian besar nasihat yang tidak berkesan:

ControlScopeWhat it cannot fix
Interface MTUEvery packet the device sendsNothing, but it over-constrains unrelated traffic
Route MTUPackets using that routeA send that the lookup never routes there
MSS clampTCP handshake on that pathUDP payload sizes and ICMP

Menurunkan MTU Ethernet untuk seluruh mesin ialah versi kasar pembaikan ini. Ia berkesan, dan ia juga menghukum setiap aplikasi lain pada hos, termasuk yang laluannya baik. Nilai setiap laluan menyatakan niat yang sama tanpa kos sampingan.

Perbandingan hanya sah untuk trafik yang dijana oleh hos itu sendiri. Menghantar paket untuk klien lain melibatkan laluan klien itu sendiri dan belanjawan luar terowong, dan metrik laluan pada hos ini tidak melangkaui sempadan itu.

Ikat belanjawan pada laluan yang memenangi carian

Rekod laluan IPv4 contoh kelihatan seperti ini:

ip -4 route get 10.60.0.20
ip -4 route add 10.60.0.0/16 dev tun-office src 10.90.0.2 mtu 1380

Baca rekod itu sebagai huraian niat, bukan nilai untuk ditampal. Awalan, peranti dan sumber pilihan mesti sepadan dengan konfigurasi sebenar, dan nombor itu mesti datang daripada bukti tentang laluan berkapsul, bukan daripada catatan blog. MTU laluan mengehadkan paket IP dalaman, yang bukan sama dengan muatan TCP 1380 bait atau paket luar tersulit 1380 bait.

Lihat di mana carian benar-benar diselesaikan sebelum menambah apa-apa. Hos dengan peraturan dasar boleh menghalakan destinasi tertentu melalui jadual selain main, dan metrik yang wujud hanya dalam main tidak kelihatan kepada permintaan itu. Bandingkan ip -4 route show table all dengan jawapan daripada ip route get, termasuk konteks tanda atau ruang nama apabila peraturan menggunakannya. Jika kedua-duanya tidak sepadan, jadual yang menjawab itulah yang memerlukan metrik, bukan yang kelihatan lebih kemas.

mtu bukan mtu lock

Secara lalai kernel masih boleh mengemas kini MTU laluan daripada maklum balas ICMP, dan itulah tujuan penemuan MTU laluan. Menambah lock menghentikannya. Ia keputusan berbeza, bukan cara yang lebih kuat untuk menyimpan nombor yang sama, dan untuk IPv4 ia mengubah pengendalian terdokumen bit «jangan pecahkan».

Mengunci adalah wajar apabila anda telah mengukur laluan dan mahu nilai itu kekal, apa pun yang tiba. Ia lalai yang buruk apabila rangkaian menghantar maklum balas saiz yang sah, kerana kernel tidak lagi boleh menyesuaikan diri dan kegagalan berpindah ke gejala lain.

Jika ICMP ditapis di suatu tempat pada laluan, tiada tetapan laluan membaikinya. Pembaikan itu milik penapis, dan MTU yang lebih kecil ialah jalan pintas yang menyembunyikan kerosakan sebenar sehingga perubahan laluan seterusnya.

Perisian terowong menambah tombol saiznya sendiri

OpenVPN- mssfix melaraskan saiz segmen TCP untuk kes terowong UDP terdokumennya. Ia bertindak pada perbualan TCP, jadi ia bukan ejaan lain bagi MTU laluan sistem pengendalian, dan ia tidak dapat membantu perkhidmatan UDP yang mengabaikan rundingan.

Jangan longgokkan MTU laluan, perubahan MTU antara muka dan had MSS dalam satu tetingkap perubahan. Jika masalah hilang anda tidak akan tahu mana yang penting, dan yang anda kekalkan akan mengehadkan trafik bertahun-tahun tanpa sebab yang diingati sesiapa.

Jadikannya boleh diterbalikkan, kemudian buktikannya

Pemilik sebenar laluan menentukan sama ada perubahan itu kekal selepas sambungan semula. Klien VPN yang memasang laluan secara dinamik biasanya akan membinanya semula tanpa metrik anda, dan ip route add manual kemudian kelihatan seperti pembaikan yang gagal sehari kemudian. Letakkan nilai itu dalam konfigurasi pengurus, dan jika anda perlukan eksperimen sementara, catat laluan asal dahulu.

Uji dengan sambungan baharu yang melakukan operasi yang tersekat, kemudian sahkan laluan persendirian yang dimaksudkan masih menang dan destinasi tidak berkaitan tidak berubah. Sambung semula terowong dan baca laluan itu sekali lagi, kerana nilai yang hilang semasa sambungan semula bukan pembaikan.

Jika bukti tidak menyokong perubahan itu, buang pengatasan melalui pengurusnya dan pulihkan atribut laluan asal daripada memadam laluan. Kemudian catat apa yang anda ukur, pada laluan mana, supaya orang seterusnya dapat membezakan penambahbaikan sebenar daripada eksperimen yang dibiarkan berjalan.

Artikel berkaitan