Seiklused selgest ilmast

Seiklused selgest ilmast

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 DD-WRT või sarnane tarkvara. Aga seal tema imeline maailm ja see maailm ei mahu ilmselgelt selle loo raamidesse.

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 Dante pole veel tarninud. Seetõttu võtame selle.

Ärge oodake Dante installimise ja konfigureerimise juhendit. Ta lihtsalt guugeldades ja see ei paku erilist huvi. Minimaalses konfiguratsioonis peate sisse viskama igasuguseid 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 ngrok või sarnane? Ja tal on jälle õigus. Aga see on teenus, see tuleb jällegi demoniseerida, see võib ka raha maksta ja üldiselt pole see sportlik. Seetõttu loome vanaraua materjalidest jalgrattaid.

Ü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 imeline manul selles küsimuses. Mul pole sellele midagi lisada. Ja saadud konfiguratsiooni saab üsna lihtsalt ühendada OpenVPN-i kliendiga ja 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 это või это.

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 puhverserver. Suurepärane kraam, kuid see maksab sama palju kui tähelaev (40 dollarit). Selle raha eest saame jälle osta lisatasu ja sellega hakkama saada. Seetõttu otsime Macis rohkem tasuta ja avatud analooge (jah, me tahame Macis muusikat kuulata). Avastame ühe terve tööriista: proximac. Ja me lähme teda hea meelega torkima.

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 pilet. Ja vastuseks saame südantlõhestava loo sellest, kuidas ainsal hooldajal pole enam MacBooki ja pagan seda, mitte lahendust.

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 RFC1927 SOCKS5 protokolli kohta teabe saamiseks vaatame Xcode'i ja leiame probleemi. Piisab kliendi poolt autentimiseks pakutavate meetodite koodide loendis ühe märgi parandamisest ja kõik hakkab tööle nagu kellavärk. Rõõmustame, kogume väljalaskebinaarfaili, teeme seda tõmba taotlus ja läheme päikeseloojangusse ja läheme järgmisse punkti.

Automatiseerige see

Kui Proximac hakkab tööle, tuleb see demoniseerida ja unustada. Selleks sobib üks terve initsialiseerimissüsteem, mis leidub MacOS-is, nimelt käivitatud.

Leiame selle kiiresti manuaal ja me mõistame, et see pole sugugi nii 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

Lisa kommentaar