sshuttle to'liq VPN ga qarshi: uning usuli aslida nimani qamrab oladi
sshuttle faqat o'tkazish usuli qo'llab-quvvatlaydigan narsani tashiydi: avval TCP, DNS va UDP qamrovini, kerakli mahalliy huquqni va masofaviy yordamchini tekshiring.
sshuttle SSH allaqachon ishlayotgani va kriptografiya tanish ko'rinishi uchun tanlanadi, ammo bu mulohaza mosligini hal qiladigan yagona savolni chetlab o'tadi. Qaysi paketlar mashinadan chiqadi, ularni narigi tomonda qaysi hisob tashiydi va vosita qancha mahalliy huquq talab qiladi. Bu uch javob o'tkazish usuliga qarab farq qiladi, shuning uchun bir ilova uchun ishlaydigan sozlama keyingisida indamay ishlamay qolishi mumkin. Quyidagi tahlil ilovaga aslida kerak bo'lgan protokoldan boshlanadi.
Ilovaga kerak bo'lgan protokoldan boshlang
sshuttle 2.0 da protokol qo'llab-quvvatlashi siz tanlagan usulga bog'liq. Linuxdagi NAT va nft usullari TCP va DNS bilan ishlaydi, TPROXY esa umumiy UDP qo'shadi. Har bir platforma va usulning o'z chegaralari bor, macOS esa butunlay boshqa mexanizm bilan ushlab qoladi. Biror narsa tanlashdan oldin o'rnatilgan versiyani, tanlangan usulni va ilovaga kerak bo'lgan protokollarni yozib qo'ying.
Shuning uchun ishlaydigan TCP so'rovi UDP ilovasi yoki har bir DNS qidiruvi haqida juda kam narsani isbotlaydi. sshuttle TCP ni butun IP paketlarini tunnelga solish o'rniga oqimlar deb qaraydi, shuning uchun oddiy VPN dan olingan o'tkazuvchanlik xulosasi bu yerga ko'chmaydi. Aslida ishga tushiradigan mexanizmini aslida mavjud bo'lgan yuk bilan solishtiring.
| Approach | What it carries | What it needs locally |
|---|---|---|
| SSH local forward | One explicitly named TCP destination | Nothing beyond the SSH client |
| sshuttle, nft or nat method | TCP and DNS to the routed prefixes | Root or sudo for firewall rules |
| sshuttle, tproxy method | TCP, DNS and general UDP | Root or sudo, and kernel support |
| IP VPN | Routed IP traffic in a tunnel | A client with the required privileges |
Mijozga mahalliy ravishda nima kerak
Hujjatlashtirilgan mijoz tuzilmasi root yoki sudo talab qiladi, chunki u tunnel interfeysi yaratish o'rniga mahalliy ushlab qolish qoidalarini o'rnatadi. Shu bitta fakt xavfsizlik hikoyasini o'zgartiradi: bunday huquqqa ega jarayon bir ilovaning emas, butun mashinaning trafigini boshqa yo'lga burishi mumkin. Huquqqa o'rnatish tafsiloti sifatida emas, dizaynning bir qismi sifatida qarang.
Vosita qaysi qoidalarni o'rnatganini va ular chiqishda yo'qolishini tasdiqlang. Qulab tushgan sessiya ushlab qolish qoidalarini qoldirsa, operator aloqa ketdi deb o'ylaganidan ancha keyin ham trafikni qora tuynukka yuborishi mumkin, va alomat qolgan qoida emas, tarmoq nosozligi kabi ko'rinadi.
sudo sshuttle --method nft --dns 172.19.4.0/24
nft list ruleset | grep -i sshuttle
ip route
Birinchi buyruq oddiy chaqiruvning shakli, aslida kerak bo'lgan prefiks bilan. Ikkinchisi vosita nima o'rnatganini ko'rsatadi, uchinchisi esa tunnel interfeysi paydo bo'lmaganini tasdiqlaydi, bu ushbu dizayn uchun kutilgan natija.
Masofaviy tomon nima ishga tushiradi
Masofaviy tomon — ruxsat berilgan SSH hisobi va mos keladigan Python yordamchi muhiti. Cheklangan qobiq ostida muvaffaqiyatli kirish o'sha yordamchini ishga tushirishga avtomatik ruxsat bermaydi, yordamchini ishga tushira oladigan hisob esa har bir maqsadli xizmatga avtomatik yetib bormaydi. Ikkala fakt ham muammolarni hal qilish yozuvlariga emas, kirish so'roviga tegishli.
Xost shaxsini tekshirish va hisob autentifikatsiyasini himoya qiling. Birinchi aloqa ishlashi uchun noma'lum xost kalitini qabul qilish masofaviy tomon siz ko'zlagan mashina ekanini tekshirishni olib tashlaydi, va bu bu yerda bir maqsadli o'tkazishdan ko'ra muhimroq.
Masofaviy hisobni ish oqimiga kerak bo'lgan xizmatlar bilan cheklang va bu qamrovni xostni boshqaradiganlar bilan kelishing. Ular ishonch munosabatining bir qismi, va mijoz tomonidagi hech qanday sozlama buni o'zgartirmaydi.
Ishonch chegarasi qayerda
Xususiy API aloqasini SSH orqali o'tkazish har bir API amaliga ruxsat bermaydi. Ilovaning TLS i va ilovaga kirish hali ham amal qiladi, vosita esa autentifikatsiyasiz xizmatni xavfsiz qila olmaydi. Masofaviy xostdan keyingi sakrash ham avtomatik ravishda SSH kanali bilan bir xil himoyalangan segment emas, chunki bu ikkinchi aloqa masofaviy xostda qanday siyosat bo'lsa, shunga bo'ysunadi.
Chegarani bitta gap bilan yozing: bu prefikslarga trafik o'sha xostdagi bu hisob orqali chiqadi. Agar gap istisnolar paragrafini talab qilsa, dizayn hujjatlarida da'vo qilinganidan ko'proq ish qilmoqda va ishlab chiqarishga yetishdan oldin ikkinchi nazarga loyiq.
Har bir protokol bo'yicha isbotlang, keyin asbobni tanlang
Har bir kerakli protokolni zararsiz so'rov bilan sinab ko'ring, hal qiluvchining yo'li va ilova ishlatadigan manzil oilalarini ham qo'shib. Sinovga uzilishni ham kiriting, shunda ilovaning ruxsat etilgan nosozlik xatti-harakati hodisa vaqtida kutilmagan holat emas, ma'lum natija bo'ladi. Ishlab turganda to'g'ri o'tkazgan sessiya yiqilgandan keyin nima bo'lishi haqida hech narsa aytmaydi.
Aniq nomlangan bir necha xizmat uchun oddiy mahalliy o'tkazish egalik va audit uchun osonroq. O'z usuliga mos keladigan ilova trafigi uchun sshuttle qonuniy o'rta yo'lni taklif qiladi. Talab keng IP aloqa bo'lsa, VPN dizayni halol javobdir, va tanlov shifrlash algoritmlari reytingini emas, qamrov va operatsion mas'uliyatni kuzatadi.