Brauzer ishlaydigan, ammo har bir tunnel o'ladigan kampus yoki mehmonxona tarmog'i bitta muammo emas, to'rtta qatlam. Yo'l faqat TCP 443 ga ruxsat berishi, autentifikatsiyalangan proksi talab qilishi, qo'l siqishni tekshirishi yoki siyosat bilan masofaviy kirishni shunchaki taqiqlashi mumkin. Ularni tartib bilan hal qilish tarmoq qoidasini tuzatish uchun yangi klient sotib olishdan saqlaydi. Quyidagi qo'llanma taxminan o'n daqiqa oladi va qaysi qatlam sizni rad etgani haqida yozma javob bilan tugaydi.

Qaysi qatlam ulanishni rad etishini isbotlang

VPN klientidan boshlamang. Xuddi shu xostga oddiy HTTPS so'rovi bilan boshlang va vaqt fazalarini o'qing, chunki muvaffaqiyatsiz faza qaysi qurilma javobgar ekanini aytadi:

curl -sS -o /dev/null -w 'connect=%{time_connect} tls=%{time_appconnect} code=%{http_code}\n' \
  --max-time 8 https://vpn.example.net/

Javob yo'q va connect vaqt yo'q bo'lsa, TCP hech qachon tugamagan, demak o'yinda xavfsizlik devori, proksi talabi yoki noto'g'ri manzil bor. connect vaqt bor, lekin tls vaqt yo'q bo'lsa, o'rtadagi narsa ulanishni qabul qilib, keyin qo'l siqishni to'xtatgan; tekshiruvchi proksi klient tomondan aynan shunday ko'rinadi.

Endi haqiqatda oladigan sertifikatni ko'ring. Bu server bilan yoki sessiyani qayta imzolagan oraliq quti bilan gaplashayotganingizni bilishning eng tez yo'li:

openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -brief </dev/null

Chiqaruvchi satrini o'qing. O'z CA'ngiz xizmatga yetganingizni bildiradi; korporativ yoki qurilma chiqaruvchisi filtr ulanishni tugatib, keyin nima bo'lishini hal qilayotganini bildiradi. Ikki natijani ham vaqt belgisi bilan yozib oling, chunki bir soatdan keyin mehmon tarmog'idagi o'sha sinov boshqa javob berishi mumkin.

Proksini biladigan klient birinchi paketni o'zgartiradi, siyosatni emas

Agar tarmoq autentifikatsiyalangan proksi orqali CONNECT talab qilsa, VPN klientiga aytish kerak, aks holda u marshrutlay olmaydigan manzilga soket ochishga urinadi. Proksini klientdan alohida sinang, muvaffaqiyatsizlikning bitta izohi bo'lishi uchun:

https_proxy=http://proxy.example.edu:3128 curl -v -o /dev/null https://vpn.example.net/
sudo openvpn --config /etc/openvpn/corp.conf --proto tcp-client \
  --remote vpn.example.net 443 --verb 4

Birinchi buyruq proksi manzilni olib o'tishini isbotlaydi. Ikkinchisi klientdan 443 da TCP ishlatishni so'raydi, bu ko'pchilik faqat-veb yo'llar umuman o'tkazadigan yagona transport. Birinchisi muvaffaqiyatli bo'lib, ikkinchisi baribir muvaffaqiyatsiz bo'lsa, proksi to'siq emas.

Ba'zi klientlar qayta belgilash o'rniga operatsion tizim proksisini o'qiydi, ba'zilari ikkalasini ham o'qimaydi. Tizim miqyosidagi sozlama amal qiladi deb o'ylashdan oldin ilovaning o'z hujjatlarini tekshiring. Proksi xizmat ko'rsatmaydigan hal qiluvchi orqali oxirgi nuqtani hal qiladigan klient ham shu yerda muvaffaqiyatsiz bo'ladi, shuning uchun DNS o'zgarishi faqat aylanma yo'l bo'lsa ham tuzatishdek ko'rinishi mumkin.

Yo'naltirish naqshiga ham e'tibor bering. Filtrlangan tarmoq sotuvchining aniqlash xost nomiga o'zining biror narsasi bilan javob berishi mumkin, bu esa klient qaysi proksi profilini tanlashini o'zgartiradi. Bu g'alatilik atrofida jarayon qurmang. U joyga qarab farq qiladi, ogohlantirishsiz o'zgaradi va buni boshqa birov uchun qo'llab-quvvatlay olmaysiz.

443 porti yetib boriladi, ruxsat etilgan emas

443 da tunnellni TLS ga o'rash yetib borishni hal qiladi, boshqa hech narsani emas. Portni tekshiruvchi filtr o'tkazadi; qo'l siqishning barmoq izini oluvchi filtr o'tkazmaydi, shifrlangan klient salomi server nomini faqat ikki tomon qo'llab-quvvatlaganda yashiradi. Sinovni ishga tushiring va umid qilish o'rniga qanday filtr orqasida ekaningizni biling.

Odamlar keyinroq kashf qiladigan unumdorlik narxi ham bor. Ishonchli transport ichidagi ishonchli transport yo'qotishni kuchaytiradi, chunki ichki stek tashqi stek allaqachon qayta yuborgan segmentlarni qayta yuboradi. Toza liniyada hech kim sezmaydi. Gavjum kampus simsiz tarmog'ida tunnel aynan kerak bo'lgan paytda yaroqsiz bo'lib qoladi va grafik ataylab hech narsa tashlanmasa ham paket yo'qotishiga o'xshaydi.

UDP odatda birinchi qurbon, va buni taxmin qilishdan ko'ra tasdiqlash kerak. Agar TCP 443 ishlayotganda WireGuard yoki standart OpenVPN hech qachon qo'l siqishni tugatmasa, tarmoq UDP ni tashlayapti va kalitlarni qayta yaratish buni o'zgartirmaydi:

sudo wg show
dig +short vpn.example.net
dig +short vpn.example.net @1.1.1.1

Kecha ishlagan hamkor yonidagi bo'sh qo'l siqish vaqt belgisi UDP ning javobi. Ikki DNS so'rovi boshqa savolga javob beradi: agar mahalliy hal qiluvchi va ommaviy hal qiluvchi oxirgi nuqta manzili bo'yicha kelishmasa, siz yo'naltirilyapsiz va transport dalili noto'g'ri.

Mashinadan haqiqatda nima chiqqanini tekshiring

Klient jurnallari klient nimaga ishonishini tasvirlaydi. Qayd tarmoq nimani ko'rganini tasvirlaydi, va bu ikkisining farqi aynan shu holatlarning ko'pchiligi hal bo'ladigan joy:

sudo tcpdump -ni any -c 20 'tcp port 443 and host 203.0.113.10'
sudo ss -tunp | grep -E ':(443|1194|51820)\b'

SYN paketlarni ko'rib, SYN-ACK bo'lmasa, blok yuqorida va klient begunoh. Serverning bo'lmagan manzilga tugallangan qo'l siqishni ko'rsangiz, proksi yoki ushlovchi bilan gaplashyapsiz. Hech narsa ko'rmasangiz, xulosa qilishdan oldin to'g'ri interfeysda yozib olganingizni tekshiring.

Soket ro'yxati nozikroq holatni ushlaydi: standart marshrutni allaqachon ushlab turgan ikkinchi tunnel. Marshrutlash jadvali uchun kurashayotgan ikki klient bloklangan tarmoqqa aynan o'xshaydigan uzilishli nosozliklar keltiradi, va qayd kutmagan interfeysingizdan chiqayotgan trafikni ko'rsatadi.

Orqaga qaytarish va saqlashga arziydigan eslatma

O'zgarishlarni qilgan teskari tartibda bekor qiling. Proksi o'zgaruvchilarini olib tashlang, qo'lda ishga tushirgan klientni to'xtating va qo'shgan har qanday marshrut yoki hal qiluvchi qayta belgilashini olib tashlang:

unset https_proxy http_proxy
sudo systemctl stop openvpn-client@corp
sudo ip route show default

Qo'lda ishga tushirilgan klientni ishlab turishiga qoldirish noutbukning keyingi ofis tashrifida buzilgan tarmoq bilan qolish yo'lidir. Shell profilida qoldirilgan proksi o'zgaruvchilari haftalar o'tib aloqasiz asboblarni buzadi va ularni tuzatayotgan odam ikki voqeani bog'lamaydi.

Keyin to'rt satr yozing: tarmoq, vaqt belgisi, muvaffaqiyatsiz faza va ko'rgan chiqaruvchi. Bir kampusda ishlab, keyingisida muvaffaqiyatsiz bo'ladigan yo'l odatiy, va keyingi odam farq proksi, hal qiluvchi yoki filtr ekanini bilishi kerak. Agar javob tarmoq masofaviy kirishni taqiqlaydi degan bo'lsa, o'sha yerda to'xtang va administratordan qo'llab-quvvatlanadigan yo'lni so'rang, o'qilmagan siyosatga aylanma yo'lni olib bormang.

O'xshash maqolalar