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
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
Dantening o'rnatish va sozlash bo'yicha qo'llanmasini kutmang. U 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?
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 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
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
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
Yana xafa bo'lamiz. Ammo keyin biz yoshligimizni va C-ni eslaymiz, Dante-da disk raskadrovka rejimini yoqamiz, yuzlab kilobayt jurnallarni qazib olamiz,
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
Tezda topamiz 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