Туннель гэрийн шугамаас холбогдоод зочид буудал эсвэл оффисын сүлжээнд гацдаг, серверийг 443 порт руу зөөсөн нь юу ч өөрчлөөгүй. Энэ үр дүн хэлбэртэй байхаар хангалттай түгээмэл: порт нь хялбар хэсэг байсан, шийдвэрийн үлдсэн хэсэг нь клиент болон серверийн хооронд сууж буй бүхэнд хамаарна. Хоёр асуулт ихэнх тохиолдлыг шийддэг бөгөөд аль нь ч шифрийн тухай биш. Сүлжээ тэр хаяг руу TLS гар барилтыг хүлээж авах уу, туннель боссон үед клиент өөрийн бүрхүүл рүү чиглэлээ хадгалж байх уу?

Гар барилт дугаараас илүүг илчилнэ

TCP 443 дээрх төрөлх VPN сонсогч эхний пакетаас л өөрийн протоколоор ярьдаг. ClientHello нь хувилбарын талбар, санамсаргүй утга, өргөтгөлүүдийн жагсаалттай бөгөөд хэдэн зуун байт уншсан төхөөрөмж юу ч тайлахгүйгээр ялгааг мэдэрч чадна. Портын дугаарыг хангах хямд, шүүлтүүр бодитоор шалгадаг нь протоколын хэлбэр юм. Дүрмийг ихэвчлэн протокол тус бүрээр бичдэг тул TLS-ийг шалгадаг бодлого UDP-ийн талаар юу ч хэлдэггүй.

Хүчинтэй TLS сесс шаарддаг ил тод прокси холболтыг тохируулах үед таслана, ихэвчлэн TCP гар барилт дууссаны дараа. Энэ дэлгэрэнгүй нь дараа чухал, учир нь сокет үүссэний дараа клиентийн лог зогсдог гэсэн үг.

Урсгалыг бүрхэх нь хоёр эвдрэлийн цэг үүсгэдэг

stunnel зэрэг TLS бүрхүүл хүлээгдэж буй хэлбэрийг сэргээдэг: клиент локал сонсогчтой холбогдоно, бүрхүүл сервертэй 443 дээр жинхэнэ TLS сесс нээнэ, сервер дээрх хоёр дахь бүрхүүл тайлагдсан байтуудыг VPN демонд дамжуулна. Гадаад сесс одоо бусад ямар ч HTTPS холболт шиг харагдана. Сервер дээрх VPN демон зөвхөн loopback дээр сонсох ёстой, учир нь бүрхүүлийн гадна юу ч түүнд хүрэх шаардлагагүй.

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

Бүрхүүл рүү гарах зам бол урхи

Туннель босмогц өгөгдмөл чиглэл түүн рүү заана, гадаад TLS сесс өөрөө зөөж буй туннельд орохгүй зам хэрэгтэй. Энгийн VPN клиент өөрийн залгах хаягийг хамгаалдаг; бүрхүүлт клиент өөрийн loopback руу залгадаг тул бүрхүүлийн очих хаяг тэр хамгаалалтад үл үзэгдэнэ.

sudo ip route add 198.51.100.20 via 192.168.0.1
sudo openvpn --config client.ovpn
sudo ip route del 198.51.100.20

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

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

Ямар нэг зүйлийг өөрчлөхөөс өмнө цагийг уншина уу

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

Хоёр сүлжээнээс энгийн HTTPS сайтын гэрчилгээ олгогчийг харьцуулна уу. Хязгаарлагдмал сүлжээнд олгогч өөр байвал ямар нэг зүйл TLS-ийг дунд дуусгаж байна, ямар ч бүрхүүл тэр саадыг өөрчлөлтгүй давахгүй. Мөн тэр харьцуулалт хаалт таны серверийн нэр рүү эсвэл тэр хаяг дээрх бүх TLS сесс рүү чиглэсэн эсэхийг хэлнэ.

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

Нэг удаад нэг хувьсагчийг шалгана уу

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

Оролдлого бүрт нэг элементийг өөрчил. Шинэ порт, шинэ бүрхүүл, шинэ шифр нэг гүйлтэд байвал гурвын аль нь чухал байсныг хэлж чадахгүй.

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