Abentura urdinez

Abentura urdinez

Spotify-k nola lagun zaitzake deabruak, RFCak, sareak aztertzen eta kode irekia sustatzen. Edo zer gertatzen den ezin baduzu ordaindu, baina benetan premium-opari batzuk nahi dituzu.

Начало

Hirugarren egunean, Spotify-k IP helbidearen herrialdean oinarritutako iragarkiak erakusten zituela ohartu zen. Era berean, zenbait herrialdetan publizitatea ez zela batere inportatu ere adierazi zen. Adibidez, Bielorrusiako Errepublikan. Eta gero, premium ez den kontu batean publizitatea desgaitzeko plan "distiratsua" sortu zen.

Spotify-ri buruz pixka bat

Oro har, Spotify-k politika arraroa du. Gure anaiak nahiko bihurritu behar du premium erosteko: bere profileko kokapena atzerrira aldatu, PayPal-ekin soilik ordain daitekeen opari-txartel egoki bat bilatu, azkenaldian arraro jokatzen ari dena eta dokumentu mordoa nahi duena. Oro har, abentura bat ere bada, baina beste ordena batekoa. Jende gehienak mugikorraren bertsioaren mesedetan egiten badu ere, ez zait interesatzen. Hori dela eta, beheko guztia mahaigaineko bertsioaren kasuan bakarrik lagunduko du. Gainera, ez da funtzioen hedapenik izango. Besterik gabe, gehigarri batzuk moztea.

Zergatik da hain konplikatua?

Eta hala pentsatu nuen Spotify konfigurazioan galtzerdi-proxy datuak erregistratzean. Arazoa izan zen galtzerdietan autentifikazioak saioa hasteko eta pasahitza erabiliz ez duela funtzionatzen. Gainera, garatzaileek aldian-aldian zerbait egiten dute proxyaren inguruan: baimendu, gero debekatu edo hautsi, eta horrek eztabaida-panel osoak sortzen ditu gunetik kanpo.

Funtzio ezegonkorretan ez fidatzea eta zerbait fidagarri eta interesgarriagoa aurkitzea erabaki zen.

Nonbait hemen irakurleak galdetu behar du: zergatik ez hartu ssh giltza batekin -D eta hori amaitu da? Eta, oro har, arrazoia izango du. Baina, lehenik eta behin, hau oraindik deabrutu eta autossh-ekin lagun egin behar da, konexio urratuetan ez pentsatzeko. Eta bigarrena: sinpleegia eta aspergarria da.

Ordenan

Ohi bezala, goazen ezkerretik eskuinera, goitik behera eta deskriba dezagun gure ideia β€œsinplea” gauzatzeko behar dugun guztia.

Lehenik eta behin proxy bat behar duzu

Eta alternatiba asko daude aldi berean:

  • proxy zerrendetatik irekita joan eta har dezakezu. Merkea (edo, hobeto esanda, ezertarako), baina guztiz fidagarria ez da eta proxy horien bizitza-zeroa izaten da. Hori dela eta, beharrezkoa izango litzateke proxy zerrendetarako analizatzaile bat aurkitzea/idaztea, nahi den motaren eta herrialdearen arabera iragazi, eta aurkitutako proxy-a Spotify-n ordezkatzeko galderak zabalik jarraitzen du (beno, agian bidez. HTTP_PROXY transferitu eta bitarentzako bilgarri pertsonalizatu bat sortu, beste trafiko guztia hara bidal ez dadin).
  • Antzeko proxy bat eros dezakezu eta goian deskribatutako arazo gehienetatik gorde zaitezke. Baina proxy baten prezioan, berehala eros dezakezu Spotify-n premium, eta hori ez da praktikoa jatorrizko zereginerako.
  • Gora zurea. Seguruenik asmatu duzuen bezala, hau da gure aukera.

Kasualitatez gerta daiteke Bielorrusiako Errepublikan edo beste herrialde txiki batean zerbitzari bat duen lagun bat duzula. Hau erabili eta nahi duzun proxya zabaldu behar duzu. Jakintsu bereziak bideratzailea piztuta duen lagun batekin kontentu daitezke DD-WRT edo antzeko softwarea. Baina hor bere mundu zoragarria eta mundu hau argi eta garbi ez dator bat istorio honen esparruan.

Beraz, gure aukerak: Squid - ez da inspiratzailea, eta ez dut HTTP proxyrik nahi, dagoeneko protokolo honetako gehiegi daude inguruan. Eta SOCKS arloan ez dago zentzuzko ezer izan ezik Dante oraindik ez dute entregatu. Beraz, har dezagun.

Ez itxaron Danteren eskuliburua instalatzeko eta konfiguratzeko. Berak google besterik ez eta ez du interes berezirik. Gutxieneko konfigurazioan mota guztiak bota behar dituzu client pass, socks pass, erregistratu behar bezala interfazeak eta ez ahaztu gehitzea socksmethod: username. Inprimaki honetan, autentifikaziorako, sistemaren erabiltzaileei logopassa hartuko zaie. Eta segurtasunari buruzko atala: localhost-era sarbidea debekatzea, erabiltzaileak mugatzea, etab. - hori banakakoa da, paranoia pertsonalaren arabera.

Inplementatu proxy bat sarera begira

Antzezlana bi ekitalditan dago.

Ekintza bat

Proxya konpondu dugu, orain web globaletik sartu behar dugu. Nahi duzun herrialdean IP zuria duen makina bat baduzu, puntu hau segurtasunez salta dezakezu. Ez daukagu ​​(goian esan bezala, lagunen etxeetan ostatatuta gaude) eta gertuen dagoen IP zuria Alemanian dago, beraz, sareak aztertuko ditugu.

Beraz, bai, irakurle adiak berriro galdetuko du: zergatik ez duzu horrelako zerbitzu bat hartzen ngrok edo antzekoa? Eta arrazoia izango du berriro. Baina hau zerbitzu bat da, berriro deabrutu beharra dago, dirua ere kosta daiteke eta orokorrean ez da kirola. Hori dela eta, txatarretako materialetatik bizikletak sortuko ditugu.

Zeregin: NAT atzean dagoen proxy bat dago, IP zuria duen eta munduaren ertzean dagoen VPS baten portuetako batean zintzilikatu behar duzu.

Logikoa da hau konpon daitekeela portuen birbidalketaren bidez (goian aipatutakoaren bidez inplementatzen dena). ssh), edo hardwarea sare birtualean konbinatuz VPN bidez. EKIN ssh badakigu lan egiten, autossh Aspergarria da hartzea, har dezagun OpenVPN.

DigitalOcean du manul zoragarria gai honi buruz. Ez daukat ezer gehitzeko. Eta ondoriozko konfigurazioa nahiko erraz konekta daiteke OpenVPN bezeroarekin eta systemd. Jarri (konfigurazioa) besterik ez /etc/openvpn/client/ eta ez ahaztu luzapena aldatzea .conf. Horren ondoren, tira zerbitzua [email protected]ez ahaztu bere alde egiteaz enable eta poztu zaitez dena hegan egin duelako.

Jakina, trafikoaren edozein birbideratze desgaitu behar dugu sortu berri den VPNra, ez baitugu nahi bezeroaren makinaren abiadura trafikoa bola erditik pasatuz.

Eta bai, IP helbide estatiko bat erregistratu behar dugu VPN zerbitzarian gure bezeroarentzat. Hau pixka bat geroago beharrezkoa izango da istorioan. Horretarako gaitu behar duzu ifconfig-pool-persist, editatu ipp.txt, OpenVPN-rekin sartuta eta gaitu client-config-dir, eta editatu nahi duzun bezeroaren konfigurazioa gehituz ifconfig-push maskara zuzenarekin eta nahi duzun IP helbidearekin.

Bigarren ekintza

Orain Internetera begira dagoen eta helburu berekoietarako erabil daitekeen makina bat dugu "sarean". Hots, trafikoaren zati bat berbideratu.

Beraz, zeregin berri bat: IP zuria duen VPS ataka batera iristen den trafikoa itzali behar duzu, trafiko hori konektatu berri den sare birtualera joan dadin eta erantzuna handik itzuli ahal izateko.

Irtenbidea: noski iptables! Noiz izango duzu bestela berarekin praktikatzeko aukera zoragarria?

Beharrezko konfigurazioa nahiko azkar aurki daiteke, hiru ordutan, ehun birao eta alferrik galdutako nerbio gutxi, sareak arazketa prozedura oso zehatza delako.

Lehenik eta behin, trafikoaren birbideratzea gaitu behar duzu nukleoan. Gauza hau deitzen da ipv4.ip_forward eta zertxobait ezberdin gaitzen da OS eta sare-kudeatzailearen arabera.

Bigarrenik, VPS-ko ataka bat hautatu eta bertara doan trafiko guztia azpisare birtualean bildu behar duzu. Hau egin daiteke, adibidez, honela:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 10.8.0.2:8080

Hemen kanpoko interfazeko 8080 atakatik datorren TCP trafiko guztia IP 10.8.0.2 eta 8080 ataka bera duen makina batera birbideratzen dugu.

Lanaren xehetasun zikinak nahi dituztenentzat netfilter, iptables eta bideratzea, oro har, guztiz beharrezkoa da hausnartzea honetan edo honetan.

Beraz, orain gure paketeek azpisare birtualera hegan egiten dute eta... hor geratzen dira. Zehatzago esanda, galtzerdiaren proxyaren erantzuna Danterekin makinan dagoen atebide lehenetsitik hegan egiten du eta hartzaileak erortzen du, sareetan ez baita ohikoa IP batera eskaera bat bidaltzea eta beste baten erantzuna jasotzea. Hori dela eta, konjuratzen jarraitu behar dugu.

Beraz, orain proxy-tik azpisare birtualera birbideratu behar dituzu IP zuri batekin VPS-era. Hemen egoera apur bat okerragoa da, besterik ez delako iptables ez dugu nahikoa izango, bideratu aurretik helmuga helbidea zuzentzen badugu (PREROUTING), orduan gure paketea ez da Internetera hegan egingo, eta konpontzen ez badugu, paketea joango da default gateway. Beraz, honako hau egin behar duzu: gogoratu katea mangle, paketeak bidez markatzeko iptables eta bildu bideratze-taula pertsonalizatu batean, joan behar duten tokira bidaliko dituena.

Egin baino lehen esan ez:

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

Irteerako trafikoa hartzen dugu, proxya dagoen atakatik hegan egiten den guztia markatzen dugu (8080 gure kasuan), markatutako trafiko guztia 80 zenbakiarekin bideratze-taulara birbideratzen dugu (oro har, kopurua ez da ezeren araberakoa, besterik ez dugu nahi. to) eta gehitu arau bakarra, zeinaren arabera taula honetan sartutako pakete guztiak VPN azpisarera hegan egiten direla.

Bikaina! Orain paketeek VPS aldera hegan egiten dute... eta bertan hiltzen dira. VPS-k ez baitaki zer egin haiekin. Hori dela eta, trabarik jartzen ez baduzu, azpisare birtualetik iristen den trafiko guztia berriro Internetera birbideratu dezakezu:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 172.42.1.10

Hemen, 10.8.0.0 azpisaretik 255.255.255.000 maskara batekin iristen dena iturburu-NAT-en bilduta dago eta interfaze lehenetsira hegan egiten da, hau da, Internetera. Garrantzitsua da kontutan izan gauza honek portua gardentasunez birbidaltzen badugu soilik funtzionatuko duela, hau da, VPS-ko sarrerako ataka gure proxyaren atakarekin bat datorrela. Bestela pixka bat gehiago sufritu beharko duzu.

Nonbait orain dena hasi beharko litzateke lanean. Eta apur bat geratzen da: ez ahaztu konfigurazio guztiak direla ziurtatzea iptables ΠΈ route ez zuen berrabiarazi ondoren jarraitu. Izan ere iptables bezalako fitxategi bereziak daude /etc/iptables/rules.v4(Ubunturen kasuan), baina ibilbideetarako dena apur bat konplikatuagoa da. sartu nituen up/down OpenVPN scriptak, duinago egin zitezkeela uste dudan arren.

Itzulbiratu aplikazioko trafikoa proxyan

Beraz, nahi duzun herrialdean autentifikazioa duen proxy bat dugu, IP helbide zuri estatiko baten bidez eskura daitekeena. Erabili eta hara Spotifytik trafikoa birbideratzea besterik ez da geratzen. Baina Γ±abardura bat dago, goian aipatu bezala, Spotify-n proxy-rako saio-hasiera-pasahitza ez dabil, beraz, nola inguratu bilatuko dugu.

Hasteko, gogora dezagun buruz proxy. Gauza bikainak, baina izar-ontzi bat bezainbeste kostatzen da (40 $). Diru honekin berriro ere premium erosi eta horrekin amaitu. Hori dela eta, analogo libreago eta irekiagoak bilatuko ditugu Mac-en (bai, Mac-en musika entzun nahi dugu). Deskubri dezagun tresna oso bat: hurbila. Eta pozik joango gara hura zutatzera.

Baina poza epe laburrean izango da, antza denez, MacOSen arazketa modua eta nukleoaren luzapen pertsonalizatuak gaitu behar dituzula, konfigurazio sinple bat artxibatu eta tresna honek Spotify-ren arazo bera duela ulertu: ezin duela autentifikazioa gainditu saio-hasierako pasahitza socks-proxy-n.

Nonbait, beldurtu eta premium bat erosteko garaia da... baina ez! Saia gaitezen konpon dadin eskatzen, kode irekia da! Egin dezagun txartela. Eta erantzun gisa istorio hunkigarri bat jasotzen dugu, zaintzaile bakarrak ez duela MacBook bat eta pikutara, ez konponketa bat.

Berriro haserretuko gara. Baina gero gure gaztaroa eta C gogoratuko ditugu, Dante-n arazketa modua aktibatu, ehunka kilobyte erregistro arakatu, joan RFC1927 SOCKS5 protokoloari buruzko informazioa lortzeko, ikus dezagun Xcode-ra eta aurki dezagun arazoa. Nahikoa da bezeroak autentifikaziorako eskaintzen dituen metodo-kodeen zerrendako karaktere bat zuzentzea eta dena erlojupeko moduan funtzionatzen hasten da. Pozten gara, askapen bitarra biltzen dugu, egiten dugu tira eskaera eta ilunabarrean sartu eta hurrengo puntura goaz.

Automatizatu

Proximac-ek funtzionatzen duenean, deabrutu eta ahaztu egin behar da. Horretarako egokia den hasierako sistema oso bat dago, MacOSen aurkitzen dena, alegia martxan jarri.

Azkar aurkitzen dugu eskuzkoa eta ulertzen dugu hori ez dela batere systemd eta hemen ia bolatxo bat da eta xml. Ez dago zuretzako konfigurazio dotorerik, ez bezalako komandorik status, restart, daemon-reload. Hardcore mota bakarra start-stop, list-grep, unload-load eta bitxikeria gehiago. Hau guztia gaindituz idazten dugu plist, kargatzen. Ez dabil. Deabrua arazketa metodoa aztertzen dugu, arazketa, zer dagoen ulertzen ENV are PATH ez dugu normala entregatu, argudiatzen dugu, ekartzen dugu (gehituz /sbin ΠΈ /usr/local/bin) eta azkenik, autostart eta funtzionamendu egonkorrarekin pozik gaude.

Arnastu

Zein da emaitza? Abenturako aste bat, belauniko zoo bat, bihotzari maite zaiona eta eskatzen zaiona egiten duen zerbitzuetatik. Ezagutza apur bat zalantzazko arlo teknikoetan, kode ireki pixka bat eta irribarrea aurpegian "egin dut!"

PS: hau ez da kapitalistei boikot bat egiteko, partiduak aurrezteko edo erabateko maltzurkeriarako deia, baizik eta ikerketa eta garapen aukeren adierazgarri, non, oro har, espero ez dituzun.

Iturria: www.habr.com

Gehitu iruzkin berria