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
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
Tistenniex il-manwal ta' Dante dwar l-installazzjoni u l-konfigurazzjoni. Hu 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
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 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
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
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
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
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
Insibuha malajr 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