Туннелийн дээгүүр ажиллах интерактив бүрхүүл файл хуулах үед хэдэн секунд хөлдөж, дараа нь юу ч болоогүй мэт үргэлжилдэг. Асуудал зөвхөн татахад байгаа ч бүрхүүл ч хүлээж, хоёулаа нэг мөчид сэргэдэг. Энэ хэв маяг нь олон яриаг зөөдөг нэг найдвартай урсгалын гарын үсэг бөгөөд хүмүүсийн хамгийн түрүүнд туршдаг бараг бүх тохиргоог даадаг.

Шинж тэмдгийг анхааралтай унших нь зүйтэй, учир нь энэ нь тохиргоо биш механизмыг заадаг: завсарлага нийтлэг тул шалтгаан ч нийтлэг, нийтлэг объект нь гадаад холболт. Энэ үед бүртгэлийн бусад хэсэг хэвийн харагдана.

Шинж тэмдэг: бүх зүйл зэрэг зогсдог

Хоёр дотоод холболт хамт гацах нь сэжүүр. Удаан татах ба удаан бүрхүүл нь тусдаа дарааллын дугаар, тусдаа гацлын төлөвтэй тусдаа TCP ярианууд тул нэг дэх эвдрэл нөгөөд хүрэх ёсгүй. Тэд нэг хэмнэлээр зогсох үед тэдний дээр ямар нэг зүйл байтуудыг эрэмбэлж байна.

Тэр зүйл бол туннелийн тээврийн давхарга. TCP горимд OpenVPN капсуллагдсан пакетуудыг түнш рүү нэг TCP холболтод бичдэг, TCP-ийн гэрээ бол нэг байтын урсгалыг дарааллаар хүргэх явдал. Дараагийн байтууд аль дотоод ярианд хамаарах нь үл хамааран дутуу байтуудаас өмнө програмад өгөгдөхгүй.

Шинж тэмдэг юу хэлэхгүй байгааг анзаараарай. Энэ нь зам эвдэрсэн, сервер хэт ачаалалтай, эсвэл шифрлэлт удаан гэж хэлэхгүй. Тэдгээр нь өөр хэлбэр үүсгэдэг: жигд доогуур дамжуулах чадвар, хугацаа дуусах, эсвэл зөвхөн нэг чиглэлд нөлөөлөх эвдрэл. Алдагдсан сегмент дахин илгээгдэхэд дуусдаг нийтлэг завсарлага нь яг эрэмбийн үр нөлөө.

Нэг гадаад байтын урсгал, олон дотоод яриа

Туннель нэгэн зэрэг татах ба бүрхүүлийг зөөж байгааг төсөөлөөрэй. Гадаад холболтын нэг сегмент алга болно. Дараагийн сегментүүд хүлээн авагч хост хүрч болох ба хүлээн авагч TCP стек тэдгээрийг баталгаажуулна, гэхдээ цоорхой дүүрэх хүртэл тэдгээрийг дээш өгч чадахгүй. Тиймээс OpenVPN-д бүрхүүлийн хувьд унших юу ч байхгүй, бүрхүүлийн өөрийн байтууд эрт ирсэн ч.

Энэ нь нэг холболтын доторх дарааллын толгойн бөглөө бөгөөд хоёр програмыг дотоод холболт хуваалцахыг шаарддаггүй. Тэд гадаад холболтыг хуваалцдаг, энэ нь хангалттай.

Хоёрдугаар зэрэглэлийн нөлөө үүнийг улам дордуулна. Баталгаажуулалт харж чадахгүй дотоод илгээгч гадаад давхарга аль хэдийн хүргэхийг оролдож буй өгөгдлийг дахин илгээж болно. Тэр дахин илгээлт сегмент алдаж болохоо дөнгөж нотолсон зам дээр нэмэлт туннелийн урсгал болж, сэргээх ажил чухал сэргээлттэй өрсөлддөг.

Эдгээрийн аль нь ч нуралтыг баталгаажуулахгүй. Богино очих-буцах хугацаа, өргөн дараалал бүхий цэвэр замд энэ зохион байгуулалт олон жилийн турш бүрэн ашиглагдах боломжтой. Эвдрэл алдагдал, саатал, дарааллын гүн зэрэг нийлэх үед гардаг, иймээс тайлангууд сайн тоноглосон оффисууд биш, гацсан дээд суваг, гар утасны холболтын эргэн тойронд бөөгнөрдөг.

Илүү урт дотоод таймер яагаад тусалж чадахгүй вэ

Зам дээр rto_min-ээр хамгийн бага дахин илгээх хугацааг нэмэгдүүлэх нь энэ замыг ашигладаг локал үүссэн TCP урсгалын таймерт суурилсан дахин илгээлтийг хойшлуулдаг. Энэ бол жинхэнэ нөлөөтэй жинхэнэ товч бөгөөд нэгдүгээр биш хоёрдугаар зэрэглэлийн асуудлыг шийддэг.

ip route show
ip route show cache 2>/dev/null | head
ss -tin dst 10.70.0.1

Хийж чадахгүй зүйл нь гадаад байтуудыг эрэмбээс гадуур гаргах, алга болсон сегментийг илүү хурдан сэргээх, эсвэл алсын програмын серверийг ижил таймер хэрэглэхэд хүргэх. Хүлээн авагч стек дарааллаар хүргэсээр байх ба алсын үзүүрийн илгээгч өөрийн очих-буцах хэмжилтийг ашигласaар байна.

Энэ нь бусад бүх алдагдлыг сэргээх механизмыг ч унтраахгүй. Жинхэнэ алдагдал таймерт суурилсан сэргээлт шаарддаг газар илүү том доод хэмжээ програмыг үйлдэл хийхээс өмнө илүү удаан хүлээхэд хүргэдэг, энэ нь сааталд мэдрэмтгий сессэд хэрэгтэй зүйлийн эсрэг юм.

Арван хоёр секундын тогтмол доод хязгаар энэ сэдэвчилсэн зөвлөгөөнд TCP туннель байгаа нь түүнийг шаарддаг мэт харагддаг. RFC 6298-д тодорхойлсон дахин илгээх таймер нь хэмжсэн очих-буцах хугацаанаас экспоненциал ухралттайгаар гардаг тул тогтмол доод хязгаар нь тодорхой замд зориулсан бодлогын сонголт бөгөөд протоколын шаардлага биш. Өргөн хэрэглэхэд энэ нь шинж тэмдгийг нууж, тэр замын хамардаг урсгал бүрийн сэргээлтийг өөрчилдөг.

tcp-nodelay юу хийдэг, юу хийдэггүй вэ

Тээврийн сокет дээр Nagle загварын буферлэлтийг унтраадаг туннелийн сонголт нь нарийн зорилготой: жижиг бичлэгүүдийг илгээхээс өмнө илүү их өгөгдөл хүлээхээс сэргийлдэг. Энэ нь интерактив урсгалыг бусад талаараа эрүүл замд нэмэлт сааталаас зайлсхийхэд тусалдаг.

Энэ нь тээврийг эрэмбэгүй болгодоггүй, алдагдсан сегментийн дараах сэргээлтийг богиносгодоггүй. Дахин илгээх хугацаа хүлээж зогсдог бүрхүүл тэр сонголт асаалттай байсан ч зогсоно, учир нь сонголт эрэмбэийн дүрэмд хэзээ ч хүрээгүй.

Хоёулыг андуурахад амар, учир нь хоёулаа саатал засвар гэж тодорхойлогддог. Нэг нь буферлэлтийн оруулсан хиймэл хүлээлтийг арилгадаг, нөгөө нь тээврийн баталгаажуулдаг зүйлийг өөрчлөхийг шаардана, үүнийг ямар ч сокет сонголт хийдэггүй.

Тээврийн давхаргыг шударгаар харьцуулах арга

Хэрэв оператор зөвшөөрч, хоёр үйлчилгээ байгаа бол ижил ажлын ачааллыг зөөдөг UDP үйлчилгээ ба TCP үйлчилгээг ижил сервер рүү ижил хандалтын замд харьцуул. Хоёр туршилтын хооронд улс, нийлүүлэгч эсвэл серверийн үеийг солих нь үр дүнд ноёрхох хувьсагч оруулдаг.

Дамжуулах чадварын тоо биш нийтлэг завсарлагыг ажигла. Гадаад алдагдалын үед хэд хэдэн дотоод програм хамт гацах нь дарааллын толгойн бөглөөг таних ажиглалт; хурдны туршилтын нэг доогуур тоо үүнийг хийдэггүй.

Туннелийн интерфейс ба физик интерфейс дээрх зөвшөөрөгдсөн барилтууд хоёр давхаргыг цэвэрхэн тусгаарладаг, учир нь дотоод ба гадаад дахин илгээлтүүд өөр эрэмбийн орон зайтай өөр холболтуудад хамаардаг. Гадаад урсгал цоорхой харуулж байхад дотоод дахин илгээлтүүдийг харах нь шууд нотолгоо.

UDP руу шилжих нь нэмэлт найдвартай урсгалыг арилгаж, дотоод TCP-д өөрийн сэргээлтийг хийх боломж олгоно. Энэ нь тэг алдагдал эсвэл бага саатлыг амлахгүй бөгөөд дүүрсэн дээд суваг, хэт том дараалал эсвэл MTU-ийн асуудал засагдах шаардлагатай хэвээр. Туннелийн гаднах урсгал туннелийн эрэмбийн цоорхойн ард хэзээ ч баригдахгүй, гэхдээ хоёр зам нэг гацсан холбоос хуваалцах үед энэ нь зовж болзошгүй, тэр хуваалцсан нарийсал нь энд нугалахаас илүүтэй өөрийн шинжилгээг хүртэх ёстой.

Холбоотой нийтлэлүүд