Ko'k rangdan tashqarida sarguzashtlar

Ko'k rangdan tashqarida sarguzashtlar

Qanday qilib Spotify sizga demonlar, RFClarni, tarmoqlarni o'rganishga va ochiq manbalarni targ'ib qilishga yordam beradi. Yoki to'lay olmasangiz nima bo'ladi, lekin siz haqiqatan ham yuqori sifatli narsalarni xohlaysiz.

start

Uchinchi kuni, Spotify IP-manzil mamlakatiga asoslangan reklamalarni ko'rsatayotgani aniqlandi. Shuningdek, ayrim mamlakatlarda reklama umuman import qilinmagani qayd etildi. Masalan, Belarus Respublikasida. Va keyin premium bo'lmagan akkauntda reklamani o'chirish uchun "yorqin" reja ishlab chiqildi.

Spotify haqida bir oz

Umuman olganda, Spotify g'alati siyosatga ega. Bizning birodarimiz premium sotib olish uchun juda burishishi kerak: o'z profilidagi manzilni chet elga o'zgartiring, faqat PayPal bilan to'lanishi mumkin bo'lgan mos sovg'a kartasini qidiring, bu oxirgi paytlarda g'alati bo'lib qolgan va bir nechta hujjatlarni talab qiladi. Umuman olganda, bu ham bir sarguzasht, lekin boshqa tartibda. Garchi ko'pchilik buni mobil versiya uchun qilishsa ham, men bunga qiziqmayman. Shuning uchun, quyida keltirilgan hamma narsa faqat ish stoli versiyasida yordam beradi. Bundan tashqari, funktsiyalarning kengayishi bo'lmaydi. Faqat ba'zi qo'shimchalarni kesib tashlang.

Nega bunchalik murakkab?

Spotify konfiguratsiyasida paypoq-proksi ma'lumotlarini ro'yxatdan o'tkazishda men shunday deb o'yladim. Muammo shundaki, login va parol yordamida paypoqlarda autentifikatsiya ishlamaydi. Bundan tashqari, ishlab chiquvchilar muntazam ravishda proksi-server atrofida biror narsa qilishadi: ba'zida ruxsat berish, ba'zan taqiqlash, ba'zan uni buzish, bu esa saytdan tashqarida muhokamalarning butun panellarini keltirib chiqaradi.

Beqaror funktsiyalarga tayanmaslik va yanada ishonchli va qiziqarli narsalarni topishga qaror qilindi.

Bu erda o'quvchi so'rashi kerak: nega olmaysiz? ssh kalit bilan -D va buning oxiri? Va umuman olganda, u to'g'ri bo'ladi. Lekin, birinchi navbatda, yirtilgan ulanishlar haqida o'ylamaslik uchun, bu hali ham jinni bo'lishi va autossh bilan do'stlashish kerak. Va ikkinchidan: bu juda oddiy va zerikarli.

Tartibda; ... uchun

Odatdagidek, chapdan o'ngga, yuqoridan pastga qarab, "oddiy" g'oyamizni amalga oshirish uchun kerak bo'lgan hamma narsani tasvirlab beraylik.

Avval proksi-server kerak

Va bir vaqtning o'zida ko'plab alternativalar mavjud:

  • siz shunchaki borib, ochiq proksi-serverlar ro'yxatidan olishingiz mumkin. Arzon (aniqrog'i hech narsa uchun), lekin mutlaqo ishonchsiz va bunday proksi-serverlarning ishlash muddati nolga teng. Shuning uchun, proksi-serverlar ro'yxati uchun tahlilchini topish/yozish, ularni kerakli tur va mamlakat bo'yicha filtrlash kerak bo'ladi va Spotify-da topilgan proksi-serverni almashtirish masalasi ochiq qoladi (yaxshi, ehtimol orqali HTTP_PROXY boshqa barcha trafik yuborilmasligi uchun ikkilik uchun maxsus o'ramni o'tkazing va yarating).
  • Siz shunga o'xshash proksi-serverni sotib olishingiz va o'zingizni yuqorida tavsiflangan muammolarning aksariyatidan qutqarishingiz mumkin. Ammo proksi-server narxida siz darhol Spotify-da premium sotib olishingiz mumkin va bu asl vazifa uchun amaliy emas.
  • O'zingiznikini ko'taring. Siz taxmin qilganingizdek, bu bizning tanlovimiz.

Tasodifan Belarus Respublikasida yoki boshqa kichik davlatda server bilan do'stingiz borligi aniq bo'lishi mumkin. Buni ishlatishingiz va kerakli proksi-serverni ishga tushirishingiz kerak. Maxsus bilimdonlar yo'riqnoma yoqilgan do'stlari bilan qoniqishlari mumkin DD-WRT yoki shunga o'xshash dasturiy ta'minot. Lekin u erda uning ajoyib dunyo va bu dunyo bu hikoyaning doirasiga to'g'ri kelmasligi aniq.

Shunday qilib, bizning variantlarimiz: Squid - ilhomlantirmaydi va men HTTP proksi-serverini xohlamayman, bu protokol juda ko'p. SOCKS sohasida esa bundan boshqa mantiqiy narsa yo'q Dante hali yetkazib bermagan. Shuning uchun, keling, qabul qilaylik.

Dantening o'rnatish va sozlash bo'yicha qo'llanmasini kutmang. U shunchaki googling va alohida qiziqish uyg'otmaydi. Minimal konfiguratsiyada siz barcha turdagi narsalarni tashlashingiz kerak client pass, socks pass, interfeyslarni to'g'ri ro'yxatdan o'tkazing va qo'shishni unutmang socksmethod: username. Ushbu shaklda autentifikatsiya qilish uchun tizim foydalanuvchilaridan logopas olinadi. Va xavfsizlikka oid qism: localhost-ga kirishni taqiqlash, foydalanuvchilarni cheklash va h.k. - bu shaxsiy paranoyaga qarab, mutlaqo individualdir.

Tarmoqqa qaragan proksi-serverni joylashtiring

Spektakl ikki qismdan iborat.

Birinchi harakat

Biz proksi-serverni saralab oldik, endi unga global internetdan kirishimiz kerak. Agar sizda kerakli mamlakatda oq IP-ga ega bo'lgan mashinangiz bo'lsa, unda siz ushbu nuqtani ishonch bilan o'tkazib yuborishingiz mumkin. Bizda bittasi yo'q (yuqorida aytib o'tilganidek, biz do'stlar uylarida joylashganmiz) va eng yaqin oq IP Germaniyada qaerdadir, shuning uchun biz tarmoqlarni o'rganamiz.

Shunday qilib, ha, diqqatli o'quvchi yana so'raydi: nega mavjud bo'lgan xizmatdan foydalanmaysiz? ngrok yoki shunga o'xshashmi? Va u yana haq bo'ladi. Ammo bu xizmatdir, uni yana jin urdirish kerak, u ham pulga xarajat qilishi mumkin va umuman bu sport emas. Shuning uchun biz hurda materiallardan velosipedlar yaratamiz.

Vazifa: NAT-dan uzoqroq joyda proksi-server bor, uni oq IP-ga ega va dunyoning chekkasida joylashgan VPS portlaridan biriga osib qo'yishingiz kerak.

Buni portni yo'naltirish orqali hal qilish mumkin deb taxmin qilish mantiqan to'g'ri keladi (bu yuqorida aytib o'tilganlar orqali amalga oshiriladi). ssh) yoki apparatni VPN orqali virtual tarmoqqa birlashtirish orqali. BILAN ssh Biz qanday ishlashni bilamiz, autossh Qabul qilish zerikarli, shuning uchun OpenVPN-ni olaylik.

DigitalOcean bor ajoyib manol bu masala bo'yicha. Menda bunga qo'shadigan hech narsa yo'q. Natijada paydo bo'lgan konfiguratsiya OpenVPN mijozi bilan juda oson ulanishi mumkin va systemd. Faqat uni (konfiguratsiyani) kiriting /etc/openvpn/client/ va kengaytmani o'zgartirishni unutmang .conf. Shundan so'ng, xizmatni torting [email protected]u uchun buni qilishni unutmang enable va hamma narsa uchib ketganidan xursand bo'ling.

Albatta, biz yangi yaratilgan VPN-ga trafikni har qanday yo'naltirishni o'chirib qo'yishimiz kerak, chunki biz yarim shar orqali trafikni o'tkazib, mijoz mashinasida tezlikni kamaytirmoqchi emasmiz.

Va ha, biz mijozimiz uchun VPN serverida statik IP-manzilni ro'yxatdan o'tkazishimiz kerak. Bu hikoyada biroz keyinroq kerak bo'ladi. Buni amalga oshirish uchun siz yoqishingiz kerak ifconfig-pool-persist, tahrirlash ipp.txt, OpenVPN-ga kiritilgan va mijoz-config-dir-ni yoqing, shuningdek qo'shish orqali kerakli mijozning konfiguratsiyasini tahrirlang ifconfig-push to'g'ri niqob va kerakli IP-manzil bilan.

Ikkinchi harakat

Endi bizda "tarmoq" da Internetga qaragan va xudbin maqsadlarda foydalanish mumkin bo'lgan mashina mavjud. Ya'ni, u orqali trafikning bir qismini qayta yo'naltirish.

Shunday qilib, yangi vazifa: oq IP bilan VPS portlaridan biriga keladigan trafikni o'chirib qo'yishingiz kerak, shunda bu trafik yangi ulangan virtual tarmoqqa o'tadi va javob u erdan qaytishi mumkin.

Yechim: albatta iptables! Yana qachon u bilan mashq qilish uchun bunday ajoyib imkoniyatga ega bo'lasiz?

Kerakli konfiguratsiyani juda tez, uch soat ichida, yuzlab so'kinish so'zlari va bir hovuch behuda nervlarni topish mumkin, chunki tarmoqlarni disk raskadrovka qilish juda o'ziga xos protsedura.

Birinchidan, yadroda trafikni qayta yo'naltirishni yoqishingiz kerak. Bu narsa deyiladi ipv4.ip_forward va OS va tarmoq menejeriga qarab biroz boshqacha yoqiladi.

Ikkinchidan, siz VPS-da portni tanlashingiz va unga kiradigan barcha trafikni virtual pastki tarmoqqa o'rashingiz kerak. Buni, masalan, shunday qilish mumkin:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 10.8.0.2:8080

Bu erda biz tashqi interfeysning 8080 portiga keladigan barcha TCP trafigini IP 10.8.0.2 va xuddi shu port 8080 bo'lgan mashinaga yo'naltiramiz.

Ishning iflos tafsilotlarini istaganlar uchun netfilter, iptables va umuman marshrutlash haqida o'ylash mutlaqo kerak u yoki u.

Shunday qilib, endi bizning paketlarimiz virtual pastki tarmoqqa uchadi va ... ular o'sha erda qoladilar. Aniqrog'i, paypoq proksi-serverining javobi Dante bilan mashinadagi standart shlyuz orqali qaytadi va qabul qiluvchi uni tashlab yuboradi, chunki tarmoqlarda bitta IP-ga so'rov yuborish va boshqasidan javob olish odatiy hol emas. Shuning uchun biz sehrlashni davom ettirishimiz kerak.

Shunday qilib, endi siz barcha paketlarni proksi-serverdan virtual quyi tarmoqqa oq IP bilan VPSga yo'naltirishingiz kerak. Bu erda vaziyat biroz yomonroq, chunki bu shunchaki iptables bizda yetarli bo'lmaydi, chunki marshrutlashdan oldin manzilni to'g'rilasak (PREROUTING), keyin bizning paketimiz Internetga uchmaydi va agar biz uni tuzatmasak, paket o'tadi default gateway. Shunday qilib, siz quyidagilarni qilishingiz kerak: zanjirni eslang mangle, paketlarni belgilash uchun iptables va ularni borish kerak bo'lgan joyga yuboradigan maxsus marshrutlash jadvaliga o'rang.

Aytilgan gap otilgan o'q:

iptables -t mangle -A OUTPUT -p tcp --sport 8080 -j MARK --set-mark 0x80
ip rule add fwmark 0x80 table 80
ip route add default via 10.8.0.1 dev tun0 table 80

Biz chiquvchi trafikni olamiz, proksi-server o'tirgan portdan uchadigan hamma narsani belgilaymiz (bizning holimizda 8080), barcha belgilangan trafikni 80 raqami bilan marshrutlash jadvaliga yo'naltiramiz (umuman, raqam hech narsaga bog'liq emas, biz shunchaki xohladik. to) va bitta qoidani qo'shing, unga ko'ra ushbu jadvalga kiritilgan barcha paketlar VPN quyi tarmog'iga uchadi.

Ajoyib! Endi paketlar VPS tomon uchib ketadi... va u erda o'ladi. Chunki VPS ular bilan nima qilishni bilmaydi. Shuning uchun, agar bezovta qilmasangiz, virtual pastki tarmoqdan kelgan barcha trafikni Internetga qayta yo'naltirishingiz mumkin:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 172.42.1.10

Bu erda 10.8.0.0 niqobli 255.255.255.000 quyi tarmog'idan kelgan hamma narsa manba-NAT-ga o'raladi va Internetga aylantirilgan standart interfeysga o'tadi. Shuni ta'kidlash kerakki, bu narsa portni shaffof tarzda yo'naltirsak, ya'ni VPS-dagi kiruvchi port proksi-serverimiz portiga mos keladigan bo'lsak ishlaydi. Aks holda siz biroz ko'proq azob chekishingiz kerak bo'ladi.

Bir joyda endi hamma narsa ishlay boshlashi kerak. Va ozgina qoldi: barcha konfiguratsiyalar mavjudligiga ishonch hosil qilishni unutmang iptables ΠΈ route qayta ishga tushirilgandan keyin davom etmadi. Uchun iptables kabi maxsus fayllar mavjud /etc/iptables/rules.v4(Ubuntu misolida), lekin marshrutlar uchun hamma narsa biroz murakkabroq. Men ularni ichkariga itarib yubordim up/down OpenVPN skriptlari, menimcha, ularni yanada munosibroq qilish mumkin edi.

Ilovadan trafikni proksi-serverga o'rash

Shunday qilib, bizda statik oq IP-manzil orqali kirish mumkin bo'lgan istalgan mamlakatda autentifikatsiyaga ega proksi-server mavjud. Faqat undan foydalanish va Spotify-dan trafikni u yerga yo'naltirish qoladi. Ammo bir nuance bor, yuqorida aytib o'tilganidek, Spotify-da proksi-server uchun login-parol ishlamaydi, shuning uchun biz uni qanday aylanib o'tishni qidiramiz.

Boshlash uchun, keling, eslaylik proksi. Ajoyib narsa, lekin u yulduz kemasi (40 dollar) kabi qimmatga tushadi. Bu pul bilan biz yana premium sotib olishimiz va u bilan ishlashimiz mumkin. Shuning uchun biz Mac-da ko'proq bepul va ochiq analoglarni qidiramiz (ha, biz Mac-da musiqa tinglashni xohlaymiz). Keling, bitta vositani topamiz: proksimak. Va biz xursand bo'lib, uni urishga boramiz.

Ammo quvonch qisqa muddatli bo'ladi, chunki siz MacOS-da disk raskadrovka rejimini va maxsus yadro kengaytmalarini yoqishingiz, oddiy konfiguratsiyani kiritishingiz va ushbu vosita Spotify bilan bir xil muammoga ega ekanligini tushunishingiz kerak: u autentifikatsiyadan o'tolmaydi. paypoq-proksi-da login-parol.

Qaerdadir bu yerda asabiylashish va premium sotib olish vaqti keldi ... lekin yo'q! Keling, uni tuzatishni so'rashga harakat qilaylik, bu ochiq manba! qilaylik chipta. Va bunga javoban biz yagona ta'minotchining endi MacBook-ga ega emasligi va uni tuzatish emas, balki do'zaxga olib kelishi haqida yurakni ranjitadigan hikoyani olamiz.

Yana xafa bo'lamiz. Ammo keyin biz yoshligimizni va C-ni eslaymiz, Dante-da disk raskadrovka rejimini yoqamiz, yuzlab kilobayt jurnallarni qazib olamiz, RFC1927 SOCKS5 protokoli haqida ma'lumot olish uchun Xcode-ni ko'rib chiqamiz va muammoni topamiz. Mijoz autentifikatsiya qilish uchun taklif qiladigan usul kodlari ro'yxatida bitta belgini tuzatish kifoya va hamma narsa soat kabi ishlay boshlaydi. Biz quvonamiz, biz reliz ikkiliklarini yig'amiz, qilamiz tortish so'rovi va biz quyosh botishiga kirib, keyingi nuqtaga o'tamiz.

Uni avtomatlashtirish

Proximac ishlagandan so'ng, uni demonizatsiya qilish va unutish kerak. Buning uchun mos bo'lgan yagona ishga tushirish tizimi mavjud, u MacOS-da mavjud, xususan ishga tushirildi.

Tezda topamiz qo'llanma va biz bu umuman emasligini tushunamiz systemd va bu erda deyarli bir qoshiq va xml. Siz uchun ajoyib konfiguratsiyalar, shunga o'xshash buyruqlar yo'q status, restart, daemon-reload. Faqat qattiq turdagi start-stop, list-grep, unload-load va boshqa ko'plab g'alati narsalar. Bularning barchasini yengib, biz yozamiz plist, yuklash. Ishlamayapti. Biz jinni tuzatish usulini o'rganamiz, uni tuzatamiz, nima borligini tushunamiz ENV Π΄Π°ΠΆΠ΅ PATH biz oddiyni yetkazib bermadik, bahslashamiz, olib kelamiz (qo'shamiz /sbin ΠΈ /usr/local/bin) va nihoyat, biz avtomatik ishga tushirish va barqaror ishlashdan mamnunmiz.

Nafas olish

Natija qanday? Bir haftalik sarguzasht, tiz cho'kkan hayvonot bog'i yurak uchun qadrli va undan talab qilinadigan narsalarni bajaradi. Shubhali texnik sohalarda ozgina bilim, biroz ochiq manba va "men buni qildim!" degan fikrdan yuzingizda tabassum.

PS: bu kapitalistlarni boykot qilishga, gugurtlarni tejashga yoki to'liq ayyorlikka chaqirish emas, balki shunchaki tadqiqot va ishlanma imkoniyatlarining ko'rsatkichi, bu erda siz umuman kutmagansiz.

Manba: www.habr.com

a Izoh qo'shish