Kako vam lahko Spotify pomaga pri preučevanju demonov, RFC-jev, omrežij in spodbujanju odprte kode. Ali kaj se zgodi, če ne morete plačati, vendar resnično želite nekaj vrhunskih dobrot.
začenja
Tretji dan je bilo opaziti, da Spotify prikazuje oglase glede na državo naslova IP. Ugotovljeno je bilo tudi, da v nekaterih državah oglaševanje sploh ni bilo uvoženo. Na primer, v Republiki Belorusiji. In potem je bil skovan "briljanten" načrt za onemogočanje oglaševanja v nepremijskem računu.
Malo o Spotifyju
Na splošno ima Spotify čudno politiko. Naš brat se mora za premium nakup kar pošteno zmotiti: spremeniti lokacijo v profilu v tujino, poiskati primerno darilno kartico, ki jo je mogoče plačati samo s PayPalom, ki se zadnje čase čudno obnaša in hoče kup dokumentov. Na splošno je to tudi avantura, vendar drugačnega reda. Čeprav večina ljudi to počne zaradi mobilne različice, me to ne zanima. Zato bo vse spodaj v pomoč le v primeru namizne različice. Poleg tega ne bo širitve funkcij. Samo odrežem nekaj odvečnih.
Zakaj je tako zapleteno?
In tako sem mislil, ko sem registriral podatke socks-proxy v konfiguraciji Spotify. Težava se je izkazala v tem, da avtentikacija v nogavicah z uporabo prijave in gesla ne deluje. Poleg tega razvijalci redno počnejo nekaj v zvezi s posrednikom: bodisi ga dovolijo, nato prepovejo ali zlomijo, kar povzroči cele panele razprav zunaj spletnega mesta.
Odločeno je bilo, da se ne bomo zanašali na nestabilne funkcije in da bomo našli nekaj bolj zanesljivega in zanimivega.
Nekje tu se mora bralec vprašati: zakaj ne vzeti ssh
s ključem -D
in to je konec? In na splošno bo imel prav. Toda najprej je treba to še vedno demonizirati in se spoprijateljiti z autossh, da ne bi razmišljali o pretrganih povezavah. In drugič: preveč je preprosto in dolgočasno.
Po vrstnem redu
Kot običajno gremo od leve proti desni, od zgoraj navzdol in opišemo vse, kar potrebujemo za uresničitev naše "preproste" ideje.
Najprej potrebujete proxy
In obstaja veliko alternativ hkrati:
- lahko preprosto vzamete z odprtih seznamov posrednikov. Poceni (ali bolje rečeno za nič), vendar popolnoma nezanesljivi in življenjska doba takšnih proxyjev se nagiba k ničli. Zato bi bilo treba poiskati/napisati razčlenjevalec proxy seznamov, jih filtrirati po želenem tipu in državi, odprto pa ostaja vprašanje zamenjave najdenega proxyja v Spotifyju (no, morda prek
HTTP_PROXY
prenos in ustvarite ovoj po meri za dvojiško datoteko, tako da ves drug promet ni poslan tja). - Lahko kupite podoben proxy in se rešite večine zgoraj opisanih težav. Toda po ceni proxyja lahko takoj kupite premium na Spotifyju in to ni praktično za prvotno nalogo.
- Dvigni svojega. Kot ste verjetno uganili, je to naša izbira.
Čisto po naključju se lahko izkaže, da imate prijatelja s strežnikom v Republiki Belorusiji ali drugi majhni državi. To morate uporabiti in na njem razviti želeni proxy. Posebni poznavalci se lahko zadovoljijo s prijateljem z vključenim usmerjevalnikom
Torej, naše možnosti: Squid - ni navdihujoče in ne želim HTTP proxyja, tega protokola je že preveč. In na področju NOGAVIC ni nič pametnega razen
Ne čakajte na Dantejev priročnik za namestitev in konfiguracijo. On client pass
, socks pass
, pravilno registrirajte vmesnike in ne pozabite dodati socksmethod: username
. V tej obliki bo za avtentikacijo logopass vzet od uporabnikov sistema. In del o varnosti: prepoved dostopa do localhosta, omejevanje uporabnikov itd. - to je čisto individualno, odvisno od osebne paranoje.
Namestite proxy proti omrežju
Igra je v dveh dejanjih.
Prvo dejanje
Proxy smo uredili, zdaj moramo do njega dostopati iz svetovnega spleta. Če imate v želeni državi stroj z belim IP-jem, lahko to točko mirno preskočite. Nimamo ga (kot že omenjeno, gostujemo pri prijateljih) in najbližji beli IP je nekje v Nemčiji, zato bomo preučili omrežja.
Tako da, pozoren bralec se bo spet vprašal: zakaj ne vzamete obstoječe storitve, kot je
Naloga: nekje daleč za NAT je proxy, obesiti ga morate na enega od portov VPS, ki ima bel IP in se nahaja na robu sveta.
Logično je domnevati, da je to mogoče rešiti bodisi s posredovanjem vrat (ki se izvaja prek zgoraj omenjenega ssh
) ali z združevanjem strojne opreme v virtualno omrežje prek VPN. Z ssh
znamo delati, autossh
Jemati ga je dolgočasno, zato vzemimo OpenVPN.
DigitalOcean ima systemd
. Samo vstavite (config). /etc/openvpn/client/
in ne pozabite spremeniti razširitve v .conf
. Po tem potegnite storitev [email protected]
ne pozabi storiti tega namesto nje enable
in se veseli, da je vse odletelo.
Seveda moramo onemogočiti kakršno koli preusmeritev prometa na novo ustvarjeni VPN, saj ne želimo zmanjšati hitrosti na odjemalskem stroju s prepuščanjem prometa skozi pol krogle.
In ja, registrirati moramo statični naslov IP na strežniku VPN za našo stranko. To bo potrebno malo kasneje v zgodbi. Če želite to narediti, morate omogočiti ifconfig-pool-persist
, Uredi ipp.txt
, vključeno v OpenVPN in omogočiti client-config-dir ter urediti konfiguracijo želenega odjemalca z dodajanjem ifconfig-push
s pravilno masko in želenim naslovom IP.
Drugo dejanje
Sedaj imamo v »omrežju« stroj, ki gleda na internet in ga lahko uporabimo v sebične namene. Preko njega namreč preusmeriti del prometa.
Torej, nova naloga: izklopiti morate promet, ki prihaja na ena od vrat VPS z belim IP-jem, tako da bo ta promet šel v na novo povezano virtualno omrežje in se bo odziv lahko vrnil od tam.
Rešitev: seveda iptables
! Kdaj boš še imel tako čudovito priložnost vaditi z njim?
Zahtevano konfiguracijo najdemo precej hitro, v treh urah, stotih psovkah in peščici porabljenih živcev, saj je razhroščevanje omrežij zelo specifičen postopek.
Najprej morate omogočiti preusmeritev prometa v jedru. Ta stvar se imenuje ipv4.ip_forward
in je omogočen nekoliko drugače, odvisno od operacijskega sistema in upravitelja omrežja.
Drugič, izbrati morate vrata na VPS in ves promet, ki gre do njega, zaviti v navidezno podomrežje. To je mogoče storiti na primer takole:
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 10.8.0.2:8080
Tu preusmerimo ves promet TCP, ki prihaja na vrata 8080 zunanjega vmesnika, na stroj z IP 10.8.0.2 in istimi vrati 8080.
Za tiste, ki želijo umazane podrobnosti dela netfilter
, iptables
in usmerjanje na splošno, je nujno treba razmisliti
Torej, zdaj naši paketi letijo v virtualno podomrežje in ... tam ostanejo. Natančneje, odgovor socks proxyja prileti nazaj skozi privzeti prehod na stroju z Dantejem in ga prejemnik spusti, ker v omrežjih ni običajno, da pošljete zahtevo na en IP in prejmete odgovor od drugega. Zato moramo še naprej pričarati.
Torej, zdaj morate preusmeriti vse pakete iz proxyja nazaj v virtualno podomrežje proti VPS z belim IP-jem. Tu je situacija malo slabša, ker je pač iptables
ne bomo imeli dovolj, ker če popravimo ciljni naslov pred usmerjanjem (PREROUTING
), potem naš paket ne bo odletel na internet in če tega ne popravimo, bo paket šel na default gateway
. Torej morate storiti naslednje: spomnite se verige mangle
, da označite pakete skozi iptables
in jih zaviti v usmerjevalno tabelo po meri, ki jih bo poslala, kamor morajo iti.
Kmalu rečeno kot storjeno:
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
Vzamemo odhodni promet, označimo vse, kar leti iz vrat, na katerih sedi proxy (v našem primeru 8080), preusmerimo ves označeni promet v usmerjevalno tabelo s številko 80 (na splošno številka ni odvisna od ničesar, samo želeli smo do) in dodajte eno samo pravilo, v skladu s katerim vsi paketi, vključeni v to tabelo, letijo v podomrežje VPN.
Super! Zdaj paketi letijo nazaj proti VPS... in tam umrejo. Ker VPS ne ve, kaj bi z njimi. Torej, če se ne trudite, lahko preprosto preusmerite ves promet, ki prihaja iz virtualnega podomrežja, nazaj v internet:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 172.42.1.10
Tu je vse, kar prispe iz podomrežja 10.8.0.0 z masko 255.255.255.000, ovito v izvorni NAT in leti na privzeti vmesnik, ki je obrnjen na internet. Pomembno je vedeti, da bo ta stvar delovala le, če vrata posredujemo transparentno, to pomeni, da se vhodna vrata na VPS ujemajo z vrati našega proxyja. V nasprotnem primeru boste morali še malo potrpeti.
Nekje zdaj bi moralo vse začeti delovati. Ostaja le še nekaj: ne pozabite se prepričati, da so vse konfiguracije iptables
и route
po ponovnem zagonu se ni nadaljeval. Za iptables
obstajajo posebne datoteke, kot je /etc/iptables/rules.v4
(v primeru Ubuntuja), vendar je za poti vse malo bolj zapleteno. Porinil sem jih noter up/down
OpenVPN skripte, čeprav mislim, da bi jih lahko naredili bolj spodobno.
Zavijte promet iz aplikacije v proxy
Imamo torej proxy z avtentikacijo v želeni državi, dostopen prek statičnega belega naslova IP. Vse kar ostane je, da ga uporabimo in tja preusmerimo promet s Spotifyja. Vendar obstaja odtenek, kot je navedeno zgoraj, prijavno geslo za proxy v Spotifyju ne deluje, zato bomo iskali, kako ga zaobiti.
Za začetek se spomnimo na
Toda veselje bo kratkotrajno, saj se izkaže, da morate v MacOS omogočiti način za odpravljanje napak in razširitve jedra po meri, vnesti preprosto konfiguracijo in razumeti, da ima to orodje popolnoma enako težavo kot Spotify: ne more prenesti avtentikacije z prijava-geslo na socks-proxyju.
Nekje tukaj je čas, da znorite in kupite premium ... ampak ne! Poskusimo prositi, da se popravi, je odprtokoden! Naredimo
Spet bomo razburjeni. Ampak potem se bomo spomnili naše mladosti in C, vklopili način za odpravljanje napak v Danteju, kopali po stotinah kilobajtov dnevnikov, šli na
Avtomatizirajte ga
Ko Proximac enkrat deluje, ga je treba demonizirati in nanj pozabiti. Za to je primeren en cel inicializacijski sistem, ki ga najdemo v MacOS-u, namreč
Hitro najdemo systemd
in tukaj je skoraj zajemalka in xml
. Brez modnih konfiguracij za vas, brez ukazov, kot je status
, restart
, daemon-reload
. Samo hardcore vrste start-stop
, list-grep
, unload-load
in še veliko drugih nenavadnosti. Premagovanje vsega tega pišemo plist
, nalaganje. Ne deluje. Preučujemo metodo odpravljanja napak demona, odpravljamo napake, razumemo, kaj je tam ENV
celo PATH
nismo dostavili običajnega, se prepiramo, pripeljemo (dodatek /sbin
и /usr/local/bin
) in končno smo zadovoljni s samodejnim zagonom in stabilnim delovanjem.
Izdihnite
Kakšen je rezultat? Teden pustolovščin, klečeči živalski vrt od služb, ki je pri srcu in naredi, kar se od njega zahteva. Malo znanja na dvomljivih tehničnih področjih, malo odprte kode in nasmeh na obrazu ob misli "Uspelo mi je!"
PS: to ni poziv k bojkotu kapitalistov, k varčevanju na vžigalicah ali k totalni zvijačnosti, ampak samo nakazovanje možnosti raziskav in razvoja tam, kjer jih na splošno ne pričakuješ.
Vir: www.habr.com