Avventuri mill-blu

Avventuri mill-blu

Kif Spotify jista' jgħinek tistudja d-daemons, RFCs, netwerks u tippromwovi sors miftuħ. Jew x'jiġri jekk ma tistax tħallas, imma int verament trid xi goodies premium.

Bidu

Fit-tielet jum, ġie nnotat li Spotify kien qed juri reklami bbażati fuq il-pajjiż tal-indirizz IP. Ġie nnutat ukoll li f'xi pajjiżi r-reklamar ma ġie importat xejn. Per eżempju, fir-Repubblika tal-Belarus. U mbagħad tfaqqas pjan "brillanti" biex jiskonnettja r-reklamar f'kont mhux premium.

Ftit dwar Spotify

B'mod ġenerali, Spotify għandu politika stramba. Ħuna jrid jitgħawweġ pjuttost biex jixtri premium: ibiddel il-post fil-profil tiegħu għal barra, fittex karta rigal adattata li tista 'titħallas biss b'PayPal, li dan l-aħħar qed jaġixxi stramb u jrid mazz ta' dokumenti. B'mod ġenerali, hija wkoll avventura, iżda ta 'ordni differenti. Għalkemm ħafna nies jagħmlu dan għall-fini tal-verżjoni mobbli, m'inix interessat fiha. Għalhekk, kollox hawn taħt se jgħin biss fil-każ tal-verżjoni tad-desktop. Barra minn hekk, mhux se jkun hemm espansjoni tal-funzjonijiet. Just qtugħ ta 'wħud minn dawk żejda.

Għaliex hija daqshekk ikkumplikata?

U ħsibt hekk meta nirreġistra d-dejta tal-kalzetti-proxy fil-konfigurazzjoni ta 'Spotify. Il-problema rriżultat li l-awtentikazzjoni fil-kalzetti bl-użu tal-login u l-password ma taħdimx. Barra minn hekk, l-iżviluppaturi regolarment jagħmlu xi ħaġa madwar il-prokura: jew jippermettulu, imbagħad jipprojbixxuh, jew ikissruh, li jagħti lok għal panels sħaħ ta 'diskussjonijiet fuq il-barra mis-sit.

Ġie deċiż li ma jiddependux fuq funzjonijiet instabbli u li ssib xi ħaġa aktar affidabbli u interessanti.

X'imkien hawn il-qarrej irid jistaqsi: għaliex ma tieħux ssh b'ċavetta -D u dak huwa l-aħħar ta 'dan? U, b'mod ġenerali, se jkollu raġun. Iżda, l-ewwelnett, dan għad irid jiġi demonizzat u jsir ħbieb ma 'autossh, sabiex ma taħseb dwar konnessjonijiet imqattgħin. U t-tieni: huwa wisq sempliċi u boring.

Sabiex

Bħas-soltu, ejja mmorru mix-xellug għal-lemin, minn fuq għal isfel u niddeskrivu dak kollu li għandna bżonn biex nimplimentaw l-idea “sempliċi” tagħna.

L-ewwel għandek bżonn prokura

U hemm ħafna alternattivi f'daqqa:

  • tista 'sempliċement tmur u tieħu minn listi ta' prokura miftuħa. Irħis (jew aħjar għal xejn), iżda assolutament inaffidabbli u l-ħajja ta 'prokuri bħal dawn għandha tendenza għal żero. Għalhekk, ikun meħtieġ li ssib/tikteb parser għal-listi ta’ prokura, iffiltrahom mit-tip u l-pajjiż mixtieq, u l-kwistjoni li tissostitwixxi l-prokura misjuba fi Spotify tibqa’ miftuħa (ukoll, forsi permezz HTTP_PROXY trasferiment u toħloq tgeżwir tad-dwana għall-binarju sabiex it-traffiku l-ieħor kollu ma jintbagħatx hemmhekk).
  • Tista 'tixtri prokura simili u tiffranka lilek innifsek mill-biċċa l-kbira tal-problemi deskritti hawn fuq. Iżda bil-prezz ta 'prokura, tista' immedjatament tixtri primjum fuq Spotify, u dan mhuwiex prattiku għall-kompitu oriġinali.
  • Għolli tiegħek. Kif probabilment guessejt, din hija l-għażla tagħna.

Sempliċement b'kumbinazzjoni jista 'jirriżulta li għandek ħabib ma' server fir-Repubblika tal-Belarus jew pajjiż żgħir ieħor. Ikollok bżonn tuża dan u roll out il-prokura mixtieqa fuqha. Konnoisseurs speċjali jistgħu jkunu kuntenti ma 'ħabib b'router mixgħul DD-WRT jew softwer simili. Imma hemm tiegħu dinja mill-isbaħ u din id-dinja b’mod ċar ma tidħolx fil-qafas ta’ din l-istorja.

Allura, l-għażliet tagħna: Klamari - mhux ta 'ispirazzjoni, u ma rridx prokura HTTP, diġà hemm wisq minn dan il-protokoll madwar. U fil-qasam tas-SOCKS m'hemm xejn sensibbli ħlief Dante għadhom ma wasslux. Għalhekk, ejja teħodha.

Tistenniex il-manwal ta' Dante dwar l-installazzjoni u l-konfigurazzjoni. Hu biss google u mhux ta’ interess partikolari. Fil-konfigurazzjoni minima għandek bżonn tarmi kull xorta ta client pass, socks pass, irreġistra b'mod korrett l-interfaces u tinsiex iżżid socksmethod: username. F'din il-forma, għall-awtentikazzjoni, il-logopass se jittieħed mill-utenti tas-sistema. U l-parti dwar is-sigurtà: tipprojbixxi l-aċċess għal localhost, tillimita l-utenti, eċċ. - dan huwa purament individwali, jiddependi fuq il-paranojja personali.

Uża prokura li tiffaċċja n-netwerk

Id-dramm hu f’żewġ atti.

Att wieħed

Irranġajna l-prokura, issa rridu naċċessawha mill-web globali. Jekk għandek magna b'IP abjad fil-pajjiż mixtieq, allura tista 'taqbeż dan il-punt b'mod sikur. M'għandniex wieħed (aħna, kif imsemmi hawn fuq, huma ospitati fi djar tal-ħbieb) u l-eqreb IP abjad jinsab x'imkien fil-Ġermanja, għalhekk se nistudjaw in-netwerks.

Allura iva, il-qarrej attent jerġa 'jistaqsi: għaliex ma tieħux servizz eżistenti bħal ngrok jew simili? U jerġa’ jkollu raġun. Iżda dan huwa servizz, għal darb'oħra jeħtieġ li jiġi demonizzat, jista 'wkoll jiswa l-flus u b'mod ġenerali mhuwiex sportiv. Għalhekk, se noħolqu roti minn materjali skrappjati.

Kompitu: hemm prokura x'imkien ferm wara NAT, għandek bżonn hang fuq wieħed mill-portijiet ta 'VPS li għandu IP abjad u jinsab fit-tarf tad-dinja.

Huwa loġiku li wieħed jassumi li dan jista' jiġi solvut jew permezz ta' port forwarding (li huwa implimentat permezz ta' l-imsemmi hawn fuq). ssh), jew billi tgħaqqad ħardwer f'netwerk virtwali permezz ta' VPN. MA ssh nafu naħdmu, autossh Huwa boring li tieħu, allura ejja nieħdu OpenVPN.

DigitalOcean għandu manul mill-isbaħ dwar din il-kwistjoni. M'għandi xejn xi nżid magħha. U l-konfigurazzjoni li tirriżulta tista 'tkun pjuttost faċilment konnessa mal-klijent OpenVPN u systemd. Biss poġġih (konfigurazzjoni) ġewwa /etc/openvpn/client/ u tinsiex tibdel l-estensjoni għal .conf. Wara dan, iġbed is-servizz [email protected]tinsiex tagħmel dan għaliha enable u tifraħ li kollox telaq.

Ovvjament, għandna bżonn inneħħu kwalunkwe direzzjoni mill-ġdid tat-traffiku lejn il-VPN maħluqa ġdida, għax ma rridux innaqqsu l-veloċità fuq il-magna tal-klijent billi ngħaddu t-traffiku minn nofs ballun.

U iva, għandna bżonn nirreġistraw indirizz IP statiku fuq is-server VPN għall-klijent tagħna. Dan se jkun meħtieġ ftit aktar tard fl-istorja. Biex tagħmel dan għandek bżonn li tippermetti ifconfig-pool-persist, editja ipp.txt, inkluż ma 'OpenVPN u jippermetti client-config-dir, flimkien ma' editja l-konfigurazzjoni tal-klijent mixtieq billi żżid ifconfig-push bil-maskra korretta u l-indirizz IP mixtieq.

It-tieni att

Issa għandna magna fuq "netwerk" li tiffaċċja l-Internet u tista 'tintuża għal skopijiet egoistiċi. Jiġifieri, terġa 'tidderieġi parti mit-traffiku minnha.

Allura, kompitu ġdid: għandek bżonn itfi t-traffiku li jasal f'wieħed mill-portijiet VPS b'IP abjad sabiex dan it-traffiku jmur għan-netwerk virtwali li għadu kif ġie konness u r-rispons ikun jista 'jirritorna minn hemm.

Soluzzjoni: ovvjament iptables! Meta inkella se jkollok opportunità daqshekk sabiħa biex tipprattika miegħu?

Il-konfigurazzjoni meħtieġa tista 'tinstab pjuttost malajr, fi tliet sigħat, mitt naħlef u numru żgħir ta' nervituri moħlija, minħabba li n-netwerks tad-debugging hija proċedura speċifika ħafna.

L-ewwel, trid tippermetti direzzjoni mill-ġdid tat-traffiku fil-qalba. Din il-ħaġa tissejjaħ ipv4.ip_forward u hija attivata kemmxejn differenti skont l-OS u l-maniġer tan-netwerk.

It-tieni, għandek bżonn tagħżel port fuq il-VPS u wrap it-traffiku kollu li jmur lejh f'subnet virtwali. Dan jista 'jsir, pereżempju, bħal dan:

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

Hawnhekk irridderieġu t-traffiku kollu tat-TCP li ġej lejn il-port 8080 tal-interface esterna għal magna b'IP 10.8.0.2 u l-istess port 8080.

Għal dawk li jridu d-dettalji maħmuġin tax-xogħol netfilter, iptables u r-rotot b'mod ġenerali, huwa assolutament meħtieġ li wieħed jikkontempla dan jew dan.

Allura, issa l-pakketti tagħna jtiru lejn is-subnet virtwali u... jibqgħu hemm. B'mod aktar preċiż, ir-rispons mill-prokura tal-kalzetti jtir lura mill-portal default fuq il-magna ma 'Dante u r-riċevitur qatraha, minħabba li fin-netwerks mhix soltu li tibgħat talba lil IP wieħed u tirċievi tweġiba minn ieħor. Għalhekk, irridu nkomplu nħeġġu.

Allura, issa trid terġa 'tidderieġi l-pakketti kollha mill-prokura lura għas-subnet virtwali lejn il-VPS b'IP abjad. Hawnhekk is-sitwazzjoni hija ftit agħar, għax hija biss iptables mhux se jkollna biżżejjed, għax jekk nikkoreġu l-indirizz tad-destinazzjoni qabel ir-rotta (PREROUTING), allura l-pakkett tagħna ma jtirx lejn l-Internet, u jekk ma nirranġawx, il-pakkett imur default gateway. Għalhekk, trid tagħmel dan li ġej: ftakar il-katina mangle, sabiex jimmarkaw il-pakketti permezz iptables u wraphom f'tabella ta 'routing personalizzata li tibgħathom fejn għandhom imorru.

Mhux hekk kif qal milli jsir:

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

Nieħdu t-traffiku ħerġin, nimmarkaw dak kollu li jtir mill-port li fih joqgħod il-prokura (8080 fil-każ tagħna), nidderieġu t-traffiku kollu mmarkat lejn it-tabella tar-routing bin-numru 80 (b'mod ġenerali, in-numru ma jiddependi fuq xejn, ridna biss to) u żid regola waħda , li skontha l-pakketti kollha inklużi f'din it-tabella jtiru lejn is-subnet VPN.

Kbir! Issa l-pakketti jtiru lura lejn il-VPS... u jmutu hemm. Għax VPS ma jafx x'għandek tagħmel magħhom. Għalhekk, jekk ma tiddejjaqx, tista 'sempliċement tidderieġi mill-ġdid it-traffiku kollu li jasal mis-subnet virtwali lura lejn l-Internet:

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

Hawnhekk, dak kollu li jasal mis-subnet 10.8.0.0 b'maskra ta '255.255.255.000 huwa mgeżwer f'source-NAT u jtir lejn l-interface default, li huwa mdawwar għall-Internet. Huwa importanti li wieħed jinnota li din il-ħaġa taħdem biss jekk nibgħatu l-port b'mod trasparenti, jiġifieri, il-port li jkun dieħel fuq il-VPS jaqbel mal-port tal-prokura tagħna. Inkella jkollok tbati ftit aktar.

X'imkien issa kollox għandu jibda jaħdem. U jibqa 'ftit: ma ninsewx li tiżgura li l-konfigurazzjonijiet kollha iptables и route ma komplietx wara l-bidu mill-ġdid. Għal iptables hemm fajls speċjali bħal /etc/iptables/rules.v4(fil-każ ta' Ubuntu), iżda għar-rotot kollox huwa ftit aktar ikkumplikat. I imbuttat minnhom up/down Skripts OpenVPN, għalkemm naħseb li setgħu saru b'mod aktar deċenti.

Kebbeb it-traffiku mill-applikazzjoni fi prokura

Għalhekk, għandna prokura bl-awtentikazzjoni fil-pajjiż mixtieq, aċċessibbli permezz ta 'indirizz IP abjad statiku. Li jibqa 'huwa li tużah u tidderieġi mill-ġdid it-traffiku minn Spotify hemmhekk. Iżda hemm sfumatura, kif imsemmi hawn fuq, il-login-password għall-prokura fi Spotify ma taħdimx, għalhekk aħna se nfittxu kif tikseb madwarha.

Biex tibda, ejja niftakru dwar prokura. Jittieħed kbira, iżda tiswa daqs starship ($ 40). B'dawn il-flus nistgħu nerġgħu nixtru premium u jsir bih. Għalhekk, se nfittxu aktar analogi ħielsa u miftuħa fuq il-Mac (iva, irridu nisimgħu l-mużika fuq il-Mac). Ejja niskopru għodda waħda sħiħa: proximac. U bil-ferħ immorru nħaffruh.

Iżda l-ferħ se jkun ta 'ħajja qasira, għax jirriżulta li għandek bżonn biex tippermetti l-mod debug u l-estensjonijiet tal-kernel tad-dwana f'MacOS, fajl konfigurazzjoni sempliċi u tifhem li din l-għodda għandha eżattament l-istess problema bħal Spotify: ma tistax tgħaddi l-awtentikazzjoni billi tuża l- login-password fuq kalzetti-proxy.

X'imkien madwar hawn wasal iż-żmien li toqgħod u tixtri primjum... imma le! Ejja nippruvaw nitolbu biex jiġi ffissat, huwa open source! Ejja nagħmlu biljett. U bi tweġiba jkollna storja ta’ qsim il-qalb dwar kif l-uniku manutenzjoni m’għadx għandu MacBook u l-infern miegħu, mhux soluzzjoni.

Ser nerġgħu nkunu mdejqa. Imma mbagħad niftakru fiż-żgħażagħ tagħna u C, nixgħel il-modalità tad-debug f’Dante, ħaffer mijiet ta’ kilobytes ta’ zkuk, mur fuq RFC1927 għal informazzjoni dwar il-protokoll SOCKS5, ejja nħarsu lejn Xcode u nsib il-problema. Huwa biżżejjed li tikkoreġi karattru wieħed fil-lista ta 'kodiċijiet tal-metodu li l-klijent joffri għall-awtentikazzjoni u kollox jibda jaħdem bħal arloġġ. Nifirħu, niġbru r-rilaxx binarju, nagħmlu talba tal-ġibda u mmorru fis-estinzjoni u mmorru għall-punt li jmiss.

Awtomatikaha

Ladarba Proximac jaħdem, jeħtieġ li jiġi demonizzat u minsi. Hemm sistema waħda sħiħa ta 'inizjalizzazzjoni li hija adattata għal dan, li tinsab fil-MacOS, jiġifieri launchd.

Insibuha malajr manwal u nifhmu li dan mhu xejn systemd u hawn kważi sassla u xml. Ebda konfigurazzjonijiet fancy għalik, l-ebda kmandi simili status, restart, daemon-reload. Tip iebes biss start-stop, list-grep, unload-load u ħafna aktar oddities. Negħlbu dan kollu niktbu plist, tagħbija. Ma jaħdimx. Aħna nistudjaw il-metodu ta 'debugging tad-dimostrazzjoni, niddebuggjawh, nifhmu x'hemm ENV anke PATH aħna ma wasslux dak normali, nargumentaw, aħna nġibuha (inżidu /sbin и /usr/local/bin) u finalment aħna kuntenti bl-awtostart u l-operazzjoni stabbli.

Exhale

X'inhu r-riżultat? Ġimgħa ta’ avventura, zoo għarkupptejh minn servizzi li hu għal qalbu u jagħmel dak li hu meħtieġ minnu. Ftit għarfien f'oqsma tekniċi dubjużi, daqsxejn ta 'sors miftuħ u tbissima fuq wiċċek mill-ħsieb "Għamiltha!"

PS: din mhix sejħa għall-bojkott tal-kapitalisti, għall-iffrankar fuq logħbiet jew għall-għaqal totali, iżda biss indikazzjoni tal-possibbiltajiet ta 'riċerka u żvilupp fejn, b'mod ġenerali, ma tistennihomx.

Sors: www.habr.com

Żid kumment