Siyosat bo'yicha marshrutlash va SOCKS: trafikni aslida qaysi qatlam proksilaydi
SOCKS portiga boradigan marshrut SOCKS seansi emas. Ilova darajasidagi proksi sozlamalarini, IP-dan-proksiga adapterini va marshrutlangan shlyuzni o'zgartirishni bajaradigan qatlam bo'yicha solishtiring.
Siz VPN mijozi trafigini 1080 portida SOCKS tinglovchisi ishlaydigan xostga yuboradigan siyosat marshrutini qo'shdingiz. Paketlar keladi, tinglovchi hech narsani qayd etmaydi va ulanish osilib qoladi. Marshrutda hech qanday xato yo'q: keyingi sakrash paket qayerga ketishini tanlaydi, SOCKS esa mijoz boshlashi kerak bo'lgan suhbatdir. Odamlar trafikni proksi orqali yuborish deganda odatda tushunadigan uchta arxitekturani solishtiring, va sozlamangizda qaysi qism yetishmayotgani ayon bo'ladi.
Marshrutlash, DNAT va SOCKS turli narsalarni o'zgartiradi
Siyosat marshruti 3-qatlam qarorini qayta yozadi. Bitta mijoz trafigini tanlangan keyingi sakrashga yuborish uchun ikki qator yetarli:
ip route add default via 10.50.0.2 table 101
ip rule add from 10.77.0.2 lookup 101Shundan so'ng yadro paketni 10.50.0.2 ga topshiradi, asl manzil esa hanuz IP sarlavhasida qoladi. Agar 10.50.0.2 marshrutizator bo'lsa, paketni uzatadi. Agar u 1080 da SOCKS demoni bo'lgan xost bo'lsa, paket uni qabul qila oladigan hech narsaga manzillanmagan, va 1080 portiga DNAT ham yordam bermaydi, chunki o'zgartirilgan paket hanuz SOCKS salomlashuvi o'rniga ilovaning asl yukini tashiydi.
SOCKS5 versiya bayti, usullar ro'yxati, autentifikatsiya almashinuvi va manzilni nomlaydigan so'rov bilan boshlanadi. Bu ilova ma'lumotlari. Hech bir marshrutlash yozuvi va hech bir netfilter nishoni uni yaratmaydi, va bir qatordagi taqqoslash shu: marshrutlash yo'l tanlaydi, SOCKS serverdan ikkinchi ulanish yaratishni so'raydi.
Birinchi holat: ilovaning o'zi SOCKS gapira oladi
Dasturda proksi sozlamasi bo'lsa, bu eng qisqa yo'l va u yadroda o'zgartirish talab qilmaydi. Uni tinglovchiga yo'naltiring, server so'rasa hisob ma'lumotlarini bering va nomlar mahalliy hal qilinishini yoki proksiga uzatilishini hal qiling. curl da bular turli bayroqlar, va manzil faqat proksi tomonidan hal qilinganda farq muhim:
curl --socks5 10.50.0.2:1080 https://docs.example.com
curl --socks5-hostname 10.50.0.2:1080 https://internal.example.comProksi muhit o'zgaruvchilarini e'tiborsiz qoldiradigan yoki xom soketlar ochadigan ilovalarga bu usulda yordam berib bo'lmaydi. Brauzerlar va aksariyat HTTP asboblari yaxshi; o'yin mijozi, pochta demoni yoki sotuvchining ixtiyoriy binar fayli odatda unday emas. Chegara har bir ilova va har bir protokol uchun, shuning uchun bu variant sinov uchun ajoyib va butun VPN uchun javob sifatida kuchsiz.
Ikkinchi holat: IP oqimlarini proksi seanslariga aylantiradigan adapter
SOCKS gapira olmaydigan dasturlar uchun o'zgartirish IP trafikni tugatadigan va ularning nomidan proksi seanslarini ochadigan narsada sodir bo'lishi kerak. Bu komponent tunnel interfeysiga ega, siyosat marshrutlashi tanlagan oqimlarni qabul qiladi, har biri uchun SOCKS qo'l berishini bajaradi va javoblarni qayta quradi. Marshrut trafikni unga yo'naltiradi; seansni yaratadigan narsa adapterdir.
Butun quyi tarmoqni unga ishonib topshirishdan oldin hujjatlarini o'qing. Ko'p adapterlar TCP ni yaxshi tashiydi va UDP ni faqat SOCKS5 UDP assotsiatsiyasi orqali boshqaradi, va ularning hech biri ICMP ni proksi trafigiga aylantirmaydi, shuning uchun muvaffaqiyatli ping proksi yo'li haqida hech narsa demaydi. DNS boshqa tuzoq: agar adapter nomlarni mahalliy hal qilsa, faqat ichki yozuvlar noto'g'ri javobga yoki umuman hech narsaga hal qilinadi.
Tsikllarning oldini olish — tishlaydigan operatsion tafsilot. Adapterning SOCKS serveriga o'z ulanishlari yana adapterga marshrutlanmasligi kerak, shuning uchun uning trafigiga qoidada istisno yoki alohida manba manzili kerak. Buni noto'g'ri qilsangiz, proksi seansi o'zini proksilashga urinadi.
Uchinchi holat: xost aslida marshrutlangan shlyuzdir
Ba'zan ishlayotgan sozlamada SOCKS umuman bo'lmaydi. Uzoq xost paketlarni uzatadi yoki ularga NAT qiladi, manbaga asoslangan qoida esa uni shunchaki chiqish sifatida tanlaydi. Bu dizayn qonuniy, va nusxalangan konfiguratsiya bir tarmoqda ishlab, boshqasida nima uchun muvaffaqiyatsiz bo'lishini tushuntiradi: qoida bir xil, yetishmayotgan qism — narigi tomondagi uzatish xizmati.
Uch holat tez ajraladi. Aslida nima tinglayotganini tekshiring, so'ng xostga yetib boradigan birinchi baytlarni ko'ring:
ss -ltnp 'sport = :1080'
tcpdump -ni eth0 -X 'tcp port 1080'Haqiqiy SOCKS mijozining birinchi yuk bayti — 0x05, salomlashuvdagi versiya. Agar yozib olish uning o'rniga ilovaning asl ma'lumotlarini ko'rsatsa, hech bir SOCKS demoni javob bermaydi, chunki muzokaralar hech qachon boshlanmagan. Agar 1080 da hech narsa tinglamasa, xost — shlyuz, va savol u uzatadimi va qaytish yo'li bormi degan masalaga aylanadi.
Qatlamni to'rt savol bilan tanlang
Dasturda proksi sozlamasi bormi? Undan foydalaning va shu yerda to'xtang. Trafikda omon qolishi kerak bo'lgan UDP yoki ICMP bormi? ICMP ni faqat marshrutlangan yoki NAT shlyuzi tashiydi, UDP esa ikki tomon qo'llab-quvvatlaydigan SOCKS5 assotsiatsiyasini talab qiladi. Mashinadagi har bir jarayon, sozlay olmaydiganlaringiz ham qamrab olinishi kerakmi? Unda interfeysga ega bo'lgan va oqimlarni tugatadigan adapter kerak. Uning marshrutlashi, DNS va tsikllarning oldini olish istisnolarini ham o'z zimmangizga ola olasizmi? Agar yo'q bo'lsa, oddiy shlyuzni ishlatish arzonroq bo'ladi.
Bitta farqni aniq saqlashga arziydi. VPN mijozining o'z socks-proxy opsiyasi tashqi tunnel ulanishining o'z serveriga qanday yetib borishini tasvirlaydi va ichki mijoz oqimlarini o'zgartirish haqida hech narsa demaydi. Ikkalasi bir xil chiptada doimo aralashtiriladi. Marshrutga tegishdan oldin qanday munosabat kerakligini hal qiling.