Faqat SOCKS gapiradigan ilovaning oddiy VPN da gaplashadigan narsasi yo'q, chunki tunnel paketlarni tashiydi, ilova esa proksi yakuniy nuqtasini xohlaydi. Kirish egasi ruxsat berganida OpenSSH shu nuqtani bera oladi, chunki dinamik yo'naltirish bitta SSH sessiyasini mahalliy proksiga aylantiradi. Keyin ikkita sakrashni alohida saqlash kerak: SSH xostiga yetib boradigan tunnel va shu xost keyin ochadigan ulanish. Ularni ajratish bu tartib nima uchun ishlashini va u hech qachon nima qilmasligini tushuntiradi.

SSH tinglovchi nima bo'ladi va nima bo'lmaydi

Dinamik yo'naltirish SSH mijozini mahalliy tinglashga va ulanadigan hamma narsa bilan SOCKS4 yoki SOCKS5 gaplashishga majbur qiladi. Har bir so'rov manzilni nomlaydi va SSH server keyingi ulanishni ochadi, shuning uchun manzil qidiruvi uzoq tomonda bo'lishi mumkin. Bu ilova darajasidagi TCP yo'naltirish, butun qurilma uchun VPN emas. U hech qanday UDP birlashmasi, ICMP va proksi sozlamalarini butunlay e'tiborsiz qoldiradigan ilovalar uchun hech narsa tashimaydi. SSH serverdan ilovagacha sakrash ham tunnelingiz ichida emas, bu manzil faqat ma'lum tarmoqlardan trafik qabul qilganda muhim.

Old shartlar haqiqiy: SSH xostiga marshrut, ruxsat berilgan hisob, tekshirilgan server xost kaliti va yo'naltirishga ruxsat. Ularning hech birini proksi yaratmaydi, oxirgisi odatda birinchi yetishmaydi. Boshqa narsani sozlashdan oldin to'rttasini ham tasdiqlang, chunki mijoz tomondan xatolik bir xil ko'rinadi, qaysi biri yetishmasa ham.

Uni loopback da aniq port bilan ishga tushiring

Ishlatilmagan mahalliy portni tanlang va manzilni qoldirmasdan uni aniq loopback ga bog'lang. Quyidagi uchta variantning har biri bitta sabab bilan mavjud.

ssh -D 127.0.0.1:1080 -NT -o ControlPath=none -o ExitOnForwardFailure=yes \
  [email protected]

-N uzoq buyruqni o'tkazib yuboradi, -T psevdotseminalni o'tkazib yuboradi, shuning uchun sessiya faqat yo'naltirish uchun mavjud. ExitOnForwardFailure tinglovchini yaratib bo'lmaganda mijozni chiqishga majbur qiladi, siz so'ragan yo'naltirishsiz ishlash o'rniga. ControlPath=none sessiyani o'z yo'naltirishlarini qo'shishi mumkin bo'lgan mavjud multipleks ulanishdan tashqarida saqlaydi. Loopback tinglovchini LAN dan tashqarida saqlaydi, lekin umumiy mashinada bu ruxsat chegarasi emas, chunki boshqa mahalliy jarayonlar ham unga yeta oladi. OpenSSH mijozi ma'lumotnomasi bu bayroqlarning barchasini hujjatlashtiradi, loopback haqidagi ogohlantirish esa tinglayotgan soket nima ekanidan kelib chiqadi.

Nomlarni proksi ichidan yuboring, uning atrofidan emas

SOCKS5 mijozi manzilni o'zi hal qilishi yoki proksidan buni so'rashi mumkin, va bu tanlov qaysi hal qiluvchi javob berishini belgilaydi. socks5h bilan curl xost nomini proksi ichidan yuboradi, shuning uchun qidiruv SSH serverda bo'ladi. Oddiy socks5 bilan noutbuk avval o'zi hal qiladi va faqat ulanish yo'lga chiqadi, bu nom ichki bo'lganda maqsadni jimgina yo'qqa chiqaradi. Quyidagi so'rov proksisiz ro'yxatni ham tozalaydi, shuning uchun meros qolgan NO_PROXY qiymati uni proksi atrofidan olib o'ta olmaydi.

curl -sS --noproxy '' --proxy socks5h://127.0.0.1:1080 https://app.corp.example/health

Sertifikat tekshiruvi va ilovaning o'z kirishi hali ham amal qiladi, chunki proksi hech birini almashtirmaydi. Ikki qidiruv qoladi: noutbuk ruxsat etilgan VPN va DNS yo'li orqali SSH xostiga yetishi kerak, SSH server esa ilova nomini o'zi hal qilishi kerak. Ikkinchisini har qanday trafik proksidan o'tishidan oldin alohida sinab ko'rish mumkin.

ssh [email protected] getent hosts app.corp.example

Bitta ruxsat etilgan manzilni isbotlang, keyin sessiyani yoping

Siyosat ruxsat beradigan manzilni va u rad etishi kerak bo'lgan manzilni sinab ko'ring, chunki ishlayotgan yo'naltirish faqat tinglovchi ishlayotganini isbotlaydi, ortiq emas. Ilova SSH server tanlaydigan manba manzilini ko'radi, va bu sizning noutbukingiz tunnel manzili emas. Uzoq tomon ulanishlarni manba bo'yicha qayd qilsa, so'rov rad etilganda birinchi tekshiriladigan narsa shu farqdir.

Sessiyani unga egalik qiluvchi jarayon orqali to'xtating, aloqasiz shellni o'ldirish orqali emas. Keyin tinglovchi ketganini tasdiqlang, chunki hali javob beradigan port bu siz haqiqatan yopmagan sessiya. Faqat shu mashq olib kelgan proksi sozlamasini olib tashlang, ilova konfiguratsiyasining qolganini tegmasdan qoldiring. Yo'naltirish qoidasini ushlab turgan nazoratsiz terminal xizmat emas, va doimiy proksiga tasdiqlangan hayot sikli kerak, unutilgan oyna emas.

ss -ltn | grep 1080

Bu tartib tuzata olmaydigan nosozliklar

Ba'zi belgilar to'g'ridan-to'g'ri yuqoridagi chegaralarga ishora qiladi, ularni erta tanib olish proksi sozlashning bir tushdan keyin vaqtini tejaydi. Jadval ko'rganingizni odatda nimani anglatishi bilan bog'laydi. Oxirgi ustundagi har qanday narsa konfiguratsiya xatosi emas, dizayn savoli.

What you seeWhat it usually meansWhere to look
The app connects and nothing followsIt ignores proxy settings entirelyIts own network settings, not the SSH session
A name resolution error for the destinationThe SSH server cannot resolve itServer resolver and search domains
A UDP-only application failsDynamic forwarding carries TCP onlyThis arrangement cannot serve it
curl works, the browser does notThe browser is not using the socks5h endpointBrowser proxy configuration
The listener answers after the session endedAnother process owns port 1080The ss output, then the owning process

Birinchi uchta qator odamlar noto'g'ri tashxis qo'yadigan qatorlardir, chunki har biri proksi haqidagi xato o'rniga ulanish urinishini keltirib chiqaradi. Noutbukda hal qilinadigan nom serverning hal qiluvchisi haqida hech narsa aytmaydi, xatolik esa uning o'rniga sertifikat yoki vaqt chegarasi muammosi sifatida o'qiladi. Faqat UDP bilan ishlaydigan ilovalar dizayn ichida buzilmagan, uning tashqarisida turadi, va hech qanday qo'shimcha ssh varianti buni o'zgartirmaydi. Brauzer qatori proksi sozlamalari har bir ilova uchun alohida ekanini eslatadi. Oxirgi qator yopish tekshiruvi nima uchun borligini ko'rsatadi: hali tinglayotgan port endi unga boshqa narsa egalik qilayotganini bildiradi.

O'xshash maqolalar