Spotify demonları, RFC-ləri, şəbəkələri öyrənməyə və açıq mənbəni təbliğ etməyə necə kömək edə bilər. Və ya ödəyə bilmirsinizsə, amma həqiqətən bəzi mükafatlar istəsəniz nə olar.
Start
Üçüncü gün Spotify-ın IP ünvanının ölkəsi əsasında reklamlar nümayiş etdirdiyi müşahidə edildi. O da qeyd olunub ki, bəzi ölkələrdə reklam ümumiyyətlə idxal olunmayıb. Məsələn, Belarus Respublikasında. Və sonra qeyri-mükafat hesabında reklamı söndürmək üçün "parlaq" bir plan hazırlanmışdır.
Spotify haqqında bir az
Ümumiyyətlə, Spotify-ın qəribə siyasəti var. Qardaşımız premium almaq üçün kifayət qədər əyilməlidir: profilindəki yerini xaricə dəyişdirin, son vaxtlar qəribə davranan və bir çox sənəd istəyən PayPal ilə ödənilə bilən uyğun hədiyyə kartı axtarın. Ümumiyyətlə, bu, həm də bir macəradır, lakin fərqli bir nizamdır. Əksər insanlar bunu mobil versiya üçün etsə də, bu məni maraqlandırmır. Buna görə də, aşağıda göstərilən hər şey yalnız masa üstü versiyası vəziyyətində kömək edəcəkdir. Üstəlik, funksiyaların genişləndirilməsi olmayacaq. Sadəcə bəzi əlavələri kəsin.
Niyə bu qədər mürəkkəbdir?
Spotify konfiqurasiyasında corab-proksi məlumatlarını qeydiyyatdan keçirərkən belə düşündüm. Problem, login və paroldan istifadə edərək corablarda identifikasiyanın işləməməsi oldu. Üstəlik, tərtibatçılar mütəmadi olaraq proksi ətrafında bir şey edirlər: bəzən icazə verir, bəzən qadağan edir, bəzən onu pozur, bu da saytdan kənarda bütün müzakirə panellərinə səbəb olur.
Qeyri-sabit funksiyalara etibar etməmək və daha etibarlı və maraqlı bir şey tapmaq qərara alındı.
Burada bir yerdə oxucu soruşmalıdır: niyə götürmürsən? ssh
açarla -D
və bunun sonu? Və ümumiyyətlə, o, haqlı olacaq. Ancaq, ilk növbədə, yırtılmış əlaqələr haqqında düşünməmək üçün bunu hələ də şeytanlaşdırmaq və autossh ilə dost etmək lazımdır. İkincisi: çox sadə və darıxdırıcıdır.
Sırayla
Həmişə olduğu kimi, soldan sağa, yuxarıdan aşağıya keçək və “sadə” ideyamızı həyata keçirmək üçün bizə lazım olan hər şeyi təsvir edək.
Əvvəlcə bir proxy lazımdır
Və eyni anda bir çox alternativ var:
- siz sadəcə gedib açıq proxy siyahılarından götürə bilərsiniz. Ucuz (daha doğrusu heç bir şey üçün), lakin tamamilə etibarsızdır və bu cür etibarnamələrin ömrü sıfıra enir. Buna görə də, proksi siyahıları üçün analizator tapmaq/yazmaq, onları istədiyiniz növ və ölkə üzrə süzgəcdən keçirmək lazımdır və Spotify-da tapılan proksi ilə əvəz edilməsi məsələsi açıq qalır (yaxşı, bəlkə də
HTTP_PROXY
köçürün və binar üçün xüsusi sarğı yaradın ki, bütün digər trafik oraya göndərilməsin). - Bənzər bir proxy satın ala və yuxarıda təsvir olunan problemlərin əksəriyyətindən özünüzü xilas edə bilərsiniz. Ancaq bir proxy qiymətinə dərhal Spotify-da mükafat ala bilərsiniz və bu, orijinal tapşırıq üçün praktik deyil.
- Özünüzü qaldırın. Yəqin ki, təxmin etdiyiniz kimi, bu bizim seçimimizdir.
Sırf təsadüfən Belarus Respublikasında və ya başqa bir kiçik ölkədə serveri olan bir dostunuz olduğu ortaya çıxa bilər. Bundan istifadə etməli və istədiyiniz proksi-ni üzərinə yaymalısınız. Xüsusi bilicilər marşrutlaşdırıcısı olan bir dostla kifayətlənə bilərlər
Beləliklə, seçimlərimiz: Squid - ruhlandırıcı deyil və mən HTTP proksisini istəmirəm, artıq bu protokolun çoxu var. Corablar sahəsində isə başqa mənalı heç nə yoxdur
Dantenin quraşdırma və konfiqurasiya haqqında təlimatını gözləməyin. O client pass
, socks pass
, interfeysləri düzgün qeyd edin və əlavə etməyi unutmayın socksmethod: username
. Bu formada autentifikasiya üçün sistem istifadəçilərindən loqopass alınacaq. Və təhlükəsizliklə bağlı hissə: localhost-a girişin qadağan edilməsi, istifadəçilərin məhdudlaşdırılması və s. - bu, şəxsi paranoyyadan asılı olaraq sırf fərdidir.
Şəbəkəyə baxan bir proxy yerləşdirin
Tamaşa iki pərdədən ibarətdir.
Bir hərəkət
Proksini sıraladıq, indi ona qlobal internetdən daxil olmalıyıq. İstədiyiniz ölkədə ağ IP-yə malik bir maşınınız varsa, bu nöqtəni etibarlı şəkildə atlaya bilərsiniz. Birimiz yoxdur (yuxarıda qeyd edildiyi kimi, dostların evində yerləşirik) və ən yaxın ağ IP Almaniyanın bir yerindədir, ona görə də şəbəkələri öyrənəcəyik.
Bəli, diqqətli oxucu yenidən soruşacaq: niyə kimi mövcud xidmətdən istifadə etmirsiniz?
Tapşırıq: NAT-dan uzaq bir yerdə bir proxy var, onu ağ IP-yə malik və dünyanın kənarında yerləşən VPS portlarından birinə asmaq lazımdır.
Bunun ya port yönləndirilməsi ilə həll oluna biləcəyini güman etmək məntiqlidir (bu, yuxarıda qeyd olunanlar vasitəsilə həyata keçirilir. ssh
) və ya avadanlığı VPN vasitəsilə virtual şəbəkəyə birləşdirərək. İLƏ ssh
necə işləməyi bilirik, autossh
Qəbul etmək darıxdırıcıdır, ona görə də OpenVPN-i götürək.
DigitalOcean var systemd
. Sadəcə onu (konfiqurasiya) daxil edin /etc/openvpn/client/
və uzantısını dəyişdirməyi unutmayın .conf
. Bundan sonra xidməti çəkin [email protected]
onun üçün bunu etməyi unutmayın enable
və hər şeyin uçduğuna sevin.
Əlbəttə ki, yeni yaradılmış VPN-ə trafikin hər hansı yönləndirilməsini deaktiv etməliyik, çünki trafiki yarım topdan keçirərək müştəri maşınında sürəti azaltmaq istəmirik.
Bəli, müştərimiz üçün VPN serverində statik IP ünvanını qeyd etməliyik. Bu hekayədə bir az sonra lazım olacaq. Bunu etmək üçün aktivləşdirməlisiniz ifconfig-pool-persist
, redaktə edin ipp.txt
, OpenVPN-ə daxildir və müştəri konfiqurasiyasını aktivləşdirin, əlavə olaraq istədiyiniz müştərinin konfiqurasiyasını redaktə edin ifconfig-push
düzgün maska və istədiyiniz IP ünvanı ilə.
İkinci hərəkət
İndi bizim “şəbəkə”də İnternetlə üzbəüz olan və eqoist məqsədlər üçün istifadə edilə bilən bir maşın var. Yəni trafikin bir hissəsini onun vasitəsilə yönləndirin.
Beləliklə, yeni bir vəzifə: ağ IP ilə VPS portlarından birinə gələn trafiki söndürməlisiniz ki, bu trafik yeni qoşulmuş virtual şəbəkəyə getsin və cavab oradan qayıda bilsin.
Həll yolu: əlbəttə iptables
! Onunla məşq etmək üçün başqa nə vaxt belə gözəl fürsətiniz olacaq?
Tələb olunan konfiqurasiya olduqca tez tapıla bilər, üç saat, yüz söyüş və bir ovuc əsəb, çünki sazlama şəbəkələri çox xüsusi bir prosedurdur.
Birincisi, nüvədə trafikin yönləndirilməsini aktivləşdirməlisiniz. Bu şey deyilir ipv4.ip_forward
və OS və şəbəkə menecerindən asılı olaraq bir qədər fərqli şəkildə aktivləşdirilir.
İkincisi, VPS-də bir port seçmək və ona gedən bütün trafiki virtual alt şəbəkəyə yığmaq lazımdır. Bu, məsələn, belə edilə bilər:
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 10.8.0.2:8080
Burada biz xarici interfeysin 8080 portuna gələn bütün TCP trafikini IP 10.8.0.2 və eyni port 8080 olan maşına yönləndiririk.
İşin çirkli detallarını istəyənlər üçün netfilter
, iptables
və ümumiyyətlə marşrutlaşdırma haqqında düşünmək mütləq lazımdır
Beləliklə, indi paketlərimiz virtual alt şəbəkəyə uçur və... orada qalırlar. Daha doğrusu, proksi corabdan gələn cavab Dante ilə maşındakı standart şluz vasitəsilə geri uçur və alıcı onu atır, çünki şəbəkələrdə bir IP-yə sorğu göndərmək və digərindən cavab almaq adət deyil. Ona görə də biz sehrbazlığa davam etməliyik.
Beləliklə, indi bütün paketləri proksidən virtual alt şəbəkəyə ağ IP ilə VPS-ə yönləndirməlisiniz. Burada vəziyyət bir az daha pisdir, çünki sadəcə olaraq iptables
bizdə kifayət etməyəcəyik, çünki marşrutlaşdırmadan əvvəl təyinat ünvanını düzəltsək (PREROUTING
), onda paketimiz İnternetə uçmayacaq və onu düzəltməsək, paket gedəcək default gateway
. Beləliklə, aşağıdakıları etməlisiniz: zənciri xatırlayın mangle
, paketləri qeyd etmək üçün iptables
və onları getməli olduqları yerə göndərəcək xüsusi marşrutlaşdırma cədvəlinə sarın.
Daha tez deyildi:
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
Gedən trafiki götürürük, proksinin oturduğu limandan uçan hər şeyi qeyd edirik (bizim vəziyyətimizdə 8080), bütün qeyd olunan trafiki 80 nömrəsi ilə marşrut cədvəlinə yönləndiririk (ümumiyyətlə, nömrə heç nədən asılı deyil, sadəcə istədik. to) və bir qayda əlavə edin , bu cədvələ daxil olan bütün paketlər VPN alt şəbəkəsinə uçur.
Əla! İndi paketlər VPS-ə doğru uçur... və orada ölür. Çünki VPS onlarla nə edəcəyini bilmir. Buna görə də, narahat olmasanız, sadəcə olaraq virtual alt şəbəkədən gələn bütün trafiki yenidən İnternetə yönləndirə bilərsiniz:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 172.42.1.10
Burada 10.8.0.0 alt şəbəkəsindən 255.255.255.000 maskası ilə gələn hər şey mənbə-NAT-a bükülür və İnternetə çevrilən standart interfeysə uçur. Qeyd etmək lazımdır ki, bu şey yalnız portu şəffaf şəkildə yönləndirsək, yəni VPS-də daxil olan port proksi portumuza uyğun gələrsə işləyəcək. Əks təqdirdə bir az daha əziyyət çəkməli olacaqsınız.
Haradasa indi hər şey işə başlamalıdır. Və yalnız bir az qalır: bütün konfiqurasiyaların olduğundan əmin olmağı unutmayın iptables
и route
yenidən başladıqdan sonra davam etmədi. üçün iptables
kimi xüsusi fayllar var /etc/iptables/rules.v4
(Ubuntu vəziyyətində), lakin marşrutlar üçün hər şey bir az daha mürəkkəbdir. Mən onları içəri itələdim up/down
OpenVPN skriptləri, baxmayaraq ki, düşünürəm ki, onlar daha layiqli edilə bilərdi.
Tətbiqdən gələn trafiki proksiyə sarın
Beləliklə, statik ağ IP ünvanı vasitəsilə əldə edilə bilən, istədiyiniz ölkədə identifikasiyası olan bir proxy-miz var. Qalan yalnız ondan istifadə etmək və Spotify-dən trafiki oraya yönləndirməkdir. Ancaq bir nüans var, yuxarıda qeyd edildiyi kimi, Spotify-da proksi üçün giriş-parol işləmir, ona görə də onun ətrafından necə çıxacağımızı axtaracağıq.
Başlamaq üçün, haqqında xatırlayaq
Ancaq sevinc qısa ömürlü olacaq, çünki MacOS-da sazlama rejimini və xüsusi kernel genişləndirmələrini aktivləşdirməli, sadə konfiqurasiya faylı verməli və bu alətin Spotify ilə eyni problemi olduğunu başa düşməlisiniz: o, identifikasiyadan istifadə edə bilməz. corab-proxy-də giriş-parol.
Burada hardasa qəzəblənmək və mükafat almaq vaxtıdır... amma yox! Gəlin bunun düzəldilməsini xahiş etməyə çalışaq, açıq mənbədir! edək
Yenə əsəbiləşəcəyik. Ancaq sonra gəncliyimizi və C-ni xatırlayacağıq, Dante-də debug rejimini yandıracağıq, yüzlərlə kilobayt logları qazacağıq, gedin
Onu avtomatlaşdırın
Proximac işlədikdən sonra onu şeytanlaşdırmaq və unutmaq lazımdır. Bunun üçün uyğun olan, MacOS-da olan bir bütöv başlatma sistemi var, yəni
Tez tapırıq systemd
və burada demək olar ki, bir çömçə və xml
. Sizin üçün heç bir dəbdəbəli konfiqurasiya, kimi əmrlər yoxdur status
, restart
, daemon-reload
. Yalnız sərt tip start-stop
, list-grep
, unload-load
və daha çox qəribəliklər. Bütün bunları aşaraq yazırıq plist
, yüklənir. İşləmir. Biz cini aradan qaldırmaq üsulunu öyrənirik, onu düzəldirik, orada nə olduğunu başa düşürük ENV
hətta PATH
normalı çatdırmadıq, mübahisə edirik, gətiririk (əlavə edir /sbin
и /usr/local/bin
) və nəhayət, avtostart və sabit işləmədən məmnunuq.
Nəfəs verin
Nəticə nədir? Bir həftə macəra, ürək üçün əziz olan və ondan tələb olunanı yerinə yetirən xidmətlərdən diz çökmüş zoopark. Şübhəli texniki sahələrdə bir az bilik, bir az açıq mənbə və “Mən bunu etdim!” düşüncəsindən üzünüzdə təbəssüm.
PS: bu, kapitalistləri boykot etməyə, kibritlərə qənaət etməyə və ya tam hiyləgərliyə çağırış deyil, sadəcə olaraq, ümumiyyətlə, gözləmədiyiniz tədqiqat və inkişaf imkanlarının göstəricisidir.
Mənbə: www.habr.com