Kami memiliki lusinan perangkat tertanam yang dipasang di pelanggan, semuanya menelepon ke rumah ke layanan OpenVPN kami. Itu bekerja dengan baik secara umum, tetapi beberapa pelanggan kami memiliki masalah jalur MTU yang parah. Pengaruh kami pada pelanggan untuk memperbaiki jaringan mereka terbatas, jadi kami membutuhkan OpenVPN untuk menghadapinya. Singkatnya, pertanyaan saya adalah:
Bagaimana saya bisa mengurangi MTU jalur rendah dari beberapa klien pada basis per-klien, yang tanpa menggunakan pengaturan global mengakomodasi kasus terburuk untuk semua klien
Perhatikan bahwa kasus terburuk kami sangat buruk: jalur MTU 576, menjatuhkan semua fragmen, tidak memecah fragmen itu sendiri, tidak menghormati DF-bit. Anda mengerti mengapa saya memilih untuk tidak memecahkan masalah ini secara global.
The OpenVPN manualnya menawarkan sejumlah MTU terkait pilihan, terutama --link-mtu, --tun-mtu, --fragment and --mssfix
. Tetapi dikatakan juga
--link-mtu [...] Lebih baik tidak mengatur parameter ini kecuali Anda tahu apa yang Anda lakukan.
--tun-mtu [...] Yang terbaik adalah menggunakan opsi --fragment dan / atau --mssfix untuk menangani masalah ukuran MTU.
Jadi saya mulai bereksperimen dengan --fragment
dan --mssfix
tetapi segera harus menyadari bahwa setidaknya yang pertama harus ditetapkan tidak hanya sisi klien, tetapi juga sisi server . Saya kemudian melihat ke konfigurasi server-side per-client melalui --client-config-dir
tetapi katanya
Opsi berikut ini legal dalam konteks spesifik klien: --push, --push-reset, --iroute, --ifconfig-push, dan --config.
Tidak disebutkan opsi MTU!
Jadi, inilah pertanyaan saya yang lebih spesifik:
- Mengapa sebenarnya
link-mtu
dantun-mtu
kecil hati? Apa potensi masalah dengan opsi ini? Perhatikan bahwa saya cukup nyaman dengan munging header IP tingkat rendah. - Manakah dari opsi yang
link-mtu tun-mtu fragment mssfix
harus dicerminkan di sisi server agar dapat berfungsi? - Opsi mana yang
link-mtu tun-mtu fragment mssfix
bisa digunakanclient-config-dir
? - Jika keempat opsi harus dicerminkan sisi server, dan tidak dapat digunakan di dalam
client-config-dir
: Apakah ada alternatif untuk memerangi MTU jalur rendah per klien?
Catatan:
- Sebagian dari pertanyaan saya sudah ditanyakan 5 tahun yang lalu di sini , tetapi belum benar-benar dijawab saat itu, maka saya berani menggandakannya.
- Server OpenVPN saat ini 2.2.1 di Ubuntu 12.04. Kami sedang mempersiapkan peningkatan ke 2.3.2 pada Ubuntu 14.04
- Klien OpenVPN 2.2.1 pada Debian 7.6
- Saya senang menentukan jalur pelanggan-MTU sendiri secara manual
- Saat ini kami tidak dapat menguji banyak sisi server. Tapi kami sedang membangun test bed terpisah yang lengkap, harus siap segera.
Saya berterima kasih atas saran yang membantu.
sumber
iptables
aturan untuk mengurangi MSS pada semua paket SYN ke atau dari alamat IP klien itu.Jawaban:
Saya memecahkan masalah di sisi klien dengan menambahkan opsi
mssfix 1300
ke file konfigurasi.Dari halaman manual openvpn:
Ide orisinal untuk solusi saya berasal dari personalvpn.org
sumber
mssfix
dapatkah mengatur sisi klien saja? Yah, setidaknya itu sesuatu. Itu tidak membantu dengan paket-paket UDP (itulah sebabnya saya tertarik pada opsi-opsi lain, tetapi setidaknya yang direkomendasikanfragment
harus diatur juga pada sisi-server)Mengingat kurangnya jawaban, saya memposting sekarang solusi yang tidak terlalu elegan, tetapi sederhana: Jalankan contoh OpenVPN lain pada TCP untuk "klien buruk"
dan turunkan TCP MSS pada klien, mis
Keuntungan dari solusi ini adalah bahwa setiap klien dapat mengatur masing-masing MSS.
Ini memang diakui TCP-over-TCP, tetapi itu harus berkinerja cukup baik di banyak skenario .
Perhatikan bahwa saya masih merupakan solusi yang sangat menarik yang tidak memerlukan
proto tcp
, dan saya akan menandainya sebagai jawaban yang valid jika kurang lebih memenuhi persyaratan yang saya uraikan.sumber