Kuidas Spotify aitab teil uurida deemoneid, RFC-sid, võrke ja reklaamida avatud lähtekoodiga. Või mis juhtub, kui te ei saa maksta, kuid soovite tõesti mõnda esmaklassilist maiuspala.
Algus
Kolmandal päeval märgati, et Spotify kuvab reklaame IP-aadressi riigi alusel. Samuti märgiti, et mõnes riigis ei imporditud reklaami üldse. Näiteks Valgevene Vabariigis. Ja siis koorus välja "hiilgav" plaan reklaamide keelamiseks mitte-lisatasu kontol.
Natuke Spotifyst
Üldiselt on Spotifyl kummaline poliitika. Meie vend peab lisatasu ostmiseks päris vintis minema: vahetama oma profiilis asukoha välismaale, otsima sobivat kinkekaarti, mille eest saab tasuda ainult PayPaliga, mis viimasel ajal käitub veidralt ja tahab hunnikut dokumente. Üldiselt on see ka seiklus, kuid erinevas järjekorras. Kuigi enamik inimesi teeb seda mobiiliversiooni huvides, ei huvita see mind. Seetõttu on kõik allpool toodud abiks ainult töölauaversiooni puhul. Pealegi ei laiene funktsioonid. Lihtsalt lõigates ära mõned lisad.
Miks see nii keeruline on?
Ja nii arvasin ka Spotify konfiguratsioonis sokkide-puhverserveri andmeid registreerides. Probleemiks osutus see, et sokkides sisselogimise ja parooliga autentimine ei toimi. Lisaks teevad arendajad puhverserveri ümber regulaarselt midagi: kas lubavad, siis keelavad või rikuvad, mis tekitab väljaspool saiti terveid arutelusid.
Ebastabiilsetele funktsioonidele otsustati mitte loota ning leida midagi usaldusväärsemat ja huvitavamat.
Kuskil siin peab lugeja küsima: miks mitte võtta ssh
võtmega -D
ja sellega asi lõppes? Ja üldiselt on tal õigus. Kuid esiteks tuleb see ikkagi demoniseerida ja autosshiga sõbruneda, et mitte mõelda rebenenud ühendustele. Ja teiseks: see on liiga lihtne ja igav.
Korras
Nagu tavaliselt, liigume vasakult paremale, ülalt alla ja kirjeldame kõike, mida vajame oma “lihtsa” idee elluviimiseks.
Kõigepealt vajate puhverserverit
Ja alternatiive on korraga palju:
- võite lihtsalt minna ja võtta avatud puhverserveri loenditest. Odav (või pigem mitte millegi eest), aga absoluutselt ebausaldusväärne ja selliste puhverserverite eluiga kipub nulli minema. Seetõttu oleks vaja puhverserveri loendite jaoks parser leida/kirjutada, need soovitud tüübi ja riigi järgi filtreerida ning küsimus leitud puhverserveri asendamisest Spotifys jääb lahtiseks (no ehk läbi
HTTP_PROXY
teisaldada ja luua binaarfailile kohandatud ümbris, et kogu muud liiklust sinna ei saadetaks). - Saate osta sarnase puhverserveri ja säästa end enamikust ülalkirjeldatud probleemidest. Kuid puhverserveri hinnaga saate Spotifyst kohe lisatasu osta ja see pole algse ülesande jaoks otstarbekas.
- Tõstke oma. Nagu arvatavasti arvasite, on see meie valik.
Puhtjuhuslikult võib selguda, et sul on sõber Valgevene Vabariigis või mõnes teises väikeriigis serveriga. Peate seda kasutama ja sellel soovitud puhverserveri välja tõmbama. Erilised asjatundjad võivad rahulduda sõbraga, kellel on ruuter sisse lülitatud
Niisiis, meie valikud: Squid – pole inspireeriv ja ma ei taha HTTP-puhverserverit, seda protokolli on juba liiga palju. Ja SOKIDE valdkonnas pole midagi mõistlikku peale
Ärge oodake Dante installimise ja konfigureerimise juhendit. Ta client pass
, socks pass
, registreerige liidesed õigesti ja ärge unustage lisada socksmethod: username
. Sellel kujul võetakse autentimiseks süsteemi kasutajatelt logopass. Ja turvalisuse osa: kohalikule hostile juurdepääsu keelamine, kasutajate piiramine jne – see on puhtalt individuaalne, olenevalt isiklikust paranoiast.
Juurutage võrgu poole suunatud puhverserver
Lavastus on kahes vaatuses.
Tegutse üks
Oleme puhverserveri välja selgitanud, nüüd peame sellele ligi pääsema globaalsest veebist. Kui teil on soovitud riigis valge IP-ga masin, võite selle punkti julgelt vahele jätta. Meil pole seda (nagu eespool mainitud, majutatakse meid sõprade majades) ja lähim valge IP asub kusagil Saksamaal, seega uurime võrke.
Nii et jah, tähelepanelik lugeja küsib taas: miks te ei kasuta olemasolevat teenust nagu
Ülesanne: kuskil kaugel NAT-i taga on puhverserver, see tuleb riputada ühe VPS-i porti, millel on valge IP ja mis asub maailma äärel.
Loogiline on eeldada, et seda saab lahendada kas pordi edastamisega (mida realiseeritakse ülalmainitud ssh
) või ühendades riistvara VPN-i kaudu virtuaalsesse võrku. KOOS ssh
me teame, kuidas töötada, autossh
Seda on igav võtta, nii et võtame OpenVPN-i.
DigitalOceanil on systemd
. Lihtsalt pane see (config) sisse /etc/openvpn/client/
ja ärge unustage laiendust muuta .conf
. Pärast seda tõmmake teenust [email protected]
ära unusta seda tema heaks teha enable
ja rõõmusta, et kõik lendas minema.
Loomulikult peame keelama igasuguse liikluse ümbersuunamise vastloodud VPN-ile, sest me ei taha klientmasina kiirust vähendada, suunates liiklust läbi poole palli.
Ja jah, me peame registreerima oma kliendi VPN-serveris staatilise IP-aadressi. Seda läheb loos veidi hiljem vaja. Selleks peate lubama ifconfig-pool-persist
, redigeeri ipp.txt
, mis on kaasas OpenVPN-iga ja lubage client-config-dir ning muutke soovitud kliendi konfiguratsiooni, lisades ifconfig-push
õige maski ja soovitud IP-aadressiga.
Teine tegu
Nüüd on meil "võrgus" masin, mis on näoga Interneti poole ja mida saab kasutada omakasupüüdlikel eesmärkidel. Nimelt suunata osa liiklusest selle kaudu ümber.
Niisiis, uus ülesanne: tuleb välja lülitada ühte valge IP-ga VPS-i porti saabuv liiklus, et see liiklus läheks äsja ühendatud virtuaalvõrku ja vastus saaks sealt tagasi tulla.
Lahendus: muidugi iptables
! Millal sul veel nii suurepärane võimalus temaga koos harjutada avaneb?
Vajaliku konfiguratsiooni leiab üsna kiiresti, kolme tunni, saja sõimusõna ja peotäie raisatud närvidega, sest võrkude silumine on väga spetsiifiline protseduur.
Esiteks peate lubama tuumas liikluse ümbersuunamise. Seda asja nimetatakse ipv4.ip_forward
ja see on sõltuvalt OS-ist ja võrguhaldurist lubatud pisut erinevalt.
Teiseks peate valima VPS-i pordi ja pakkima kogu sellele suunduva liikluse virtuaalsesse alamvõrku. Seda saab teha näiteks järgmiselt:
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 10.8.0.2:8080
Siin suuname kogu välise liidese porti 8080 tuleva TCP-liikluse ümber masinasse, millel on IP 10.8.0.2 ja sama port 8080.
Neile, kes soovivad töö määrdunud detaile netfilter
, iptables
ja marsruutimist üldiselt, on hädavajalik mõelda
Niisiis, nüüd lendavad meie paketid virtuaalsesse alamvõrku ja... jäävadki sinna. Täpsemalt lendab sokkide puhverserveri vastus Dantega masina vaikelüüsi kaudu tagasi ja saaja kukub selle maha, sest võrkudes pole kombeks saata päring ühele IP-le ja saada vastus teiselt. Seetõttu peame edasi võluma.
Niisiis, nüüd peate suunama kõik paketid puhverserverist tagasi virtuaalsesse alamvõrku valge IP-ga VPS-i suunas. Siin on olukord veidi hullem, sest see on lihtsalt iptables
meil ei piisa, sest kui parandame sihtkoha aadressi enne marsruutimist (PREROUTING
), siis meie pakett Internetti ei lenda ja kui me seda ei paranda, läheb pakett aadressile default gateway
. Niisiis, peate tegema järgmist: jätke kett meelde mangle
, et märgistada paketid läbi iptables
ja mähkige need kohandatud marsruutimistabelisse, mis suunab nad sinna, kuhu nad peaksid minema.
Varsti öeldud kui tehtud:
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
Võtame välja väljuva liikluse, märgime kõik, mis lendab pordist, millel puhverserver asub (meie puhul 8080), suuname kogu märgitud liikluse ümber marsruutimistabelisse numbriga 80 (üldiselt ei sõltu number millestki, tahtsime lihtsalt to) ja lisage üks reegel , mille kohaselt kõik selles tabelis sisalduvad paketid lendavad VPN-i alamvõrku.
Suurepärane! Nüüd lendavad paketid tagasi VPS-i poole... ja surevad seal. Sest VPS ei tea, mida nendega peale hakata. Seega, kui te ei viitsi, saate kogu virtuaalsest alamvõrgust saabuva liikluse lihtsalt Internetti tagasi suunata:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 172.42.1.10
Siin on kõik, mis saabub alamvõrgust 10.8.0.0 maskiga 255.255.255.000, mähitud lähte-NAT-i ja lendab vaikeliidesele, mis on suunatud Internetti. Oluline on märkida, et see asi töötab ainult siis, kui edastame pordi läbipaistvalt, st VPS-i sissetulev port ühtib meie puhverserveri pordiga. Muidu peate natuke rohkem kannatama.
Kuskil peaks nüüd kõik tööle hakkama. Ja alles jääb vaid natuke: ärge unustage veenduda, et kõik konfiguratsioonid iptables
и route
ei jätkanud pärast taaskäivitamist. Sest iptables
seal on spetsiaalsed failid nagu /etc/iptables/rules.v4
(Ubuntu puhul), aga marsruutide puhul on kõik veidi keerulisem. Lükkasin nad sisse up/down
OpenVPN-i skriptid, kuigi ma arvan, et neid oleks saanud teha korralikumalt.
Mähi liiklus rakendusest puhverserverisse
Seega on meil soovitud riigis autentimisega puhverserver, millele pääseb juurde staatilise valge IP-aadressi kaudu. Jääb üle vaid seda kasutada ja Spotifyst liiklus sinna ümber suunata. Kuid on nüanss, nagu eespool mainitud, Spotify puhverserveri sisselogimisparool ei tööta, seega otsime, kuidas sellest mööda hiilida.
Alustuseks meenutagem umbes
Kuid rõõm on lühiajaline, sest selgub, et peate MacOS-is lubama silumisrežiimi ja kohandatud kerneli laiendused, sisestama lihtsa konfiguratsiooni ja mõistma, et sellel tööriistal on täpselt sama probleem nagu Spotifyl: see ei saa autentimist läbida, kasutades login-parool sokkide-puhverserveril.
Kusagil siin on aeg ehmatada ja osta lisatasu... aga ei! Proovime paluda selle parandamist, see on avatud lähtekoodiga! Teeme
Me oleme jälle ärritunud. Aga siis meenutame oma noorust ja C-d, lülitame Dantes sisse silumisrežiimi, kaevame läbi sadade kilobaitide palke, läheme
Automatiseerige see
Kui Proximac hakkab tööle, tuleb see demoniseerida ja unustada. Selleks sobib üks terve initsialiseerimissüsteem, mis leidub MacOS-is, nimelt
Leiame selle kiiresti systemd
ja siin on see peaaegu kühvel ja xml
. Ei mingeid uhkeid konfiguratsioone ega sarnaseid käske status
, restart
, daemon-reload
. Ainult hardcore tüüpi start-stop
, list-grep
, unload-load
ja palju muud veidrust. Sellest kõigest üle saades kirjutame plist
, laadimine. Ei tööta. Uurime deemoni silumise meetodit, silume seda, mõistame, mis seal on ENV
isegi PATH
me ei tarninud tavalist, vaidleme, toome selle sisse (lisades /sbin
и /usr/local/bin
) ja lõpuks oleme rahul automaatse käivituse ja stabiilse tööga.
Välja hingata
Mis on tulemus? Nädal seiklust, põlvili loomaaed teenustest, mis on südamele kallis ja teeb seda, mida talt nõutakse. Natuke teadmisi kahtlastes tehnilistes valdkondades, natuke avatud lähtekoodi ja naeratus näole mõttest “Sain hakkama!”
PS: see pole üleskutse kapitalistide boikoteerimiseks, tikkude arvelt kokku hoidmiseks või totaalseks kavaluseks, vaid lihtsalt viide teadus- ja arendustegevuse võimalustele, kus neid üldiselt ei oota.
Allikas: www.habr.com