Anturiaethau allan o'r glas

Anturiaethau allan o'r glas

Sut y gall Spotify eich helpu i astudio daemons, RFCs, rhwydweithiau a hyrwyddo ffynhonnell agored. Neu beth sy'n digwydd os na allwch chi dalu, ond rydych chi wir eisiau rhai nwyddau premiwm.

Dechrau

Ar y trydydd diwrnod, sylwyd bod Spotify yn arddangos hysbysebion yn seiliedig ar wlad y cyfeiriad IP. Nodwyd hefyd nad oedd hysbysebion yn cael eu mewnforio o gwbl mewn rhai gwledydd. Er enghraifft, yng Ngweriniaeth Belarus. Ac yna lluniwyd cynllun “gwych” i analluogi hysbysebu mewn cyfrif di-bremiwm.

Ychydig am Spotify

A siarad yn gyffredinol, mae gan Spotify bolisi rhyfedd. Mae'n rhaid i'n brawd fod yn eithaf dirdro er mwyn prynu premiwm: newidiwch y lleoliad yn ei broffil i dramor, chwiliwch am gerdyn anrheg addas y gellir ond talu amdano gyda PayPal, sydd wedi bod yn ymddwyn yn rhyfedd yn ddiweddar ac eisiau criw o ddogfennau. Yn gyffredinol, mae hefyd yn antur, ond o drefn wahanol. Er bod y rhan fwyaf o bobl yn gwneud hyn er mwyn y fersiwn symudol, nid oes gennyf ddiddordeb ynddo. Felly, dim ond yn achos y fersiwn bwrdd gwaith y bydd popeth isod yn helpu. Ar ben hynny, ni fydd unrhyw ehangu swyddogaethau. Dim ond torri rhai o'r rhai ychwanegol i ffwrdd.

Pam ei fod mor gymhleth?

Ac roeddwn i'n meddwl hynny wrth gofrestru'r data sanau-procsi yn y ffurfwedd Spotify. Y broblem oedd nad yw dilysu sanau gan ddefnyddio mewngofnodi a chyfrinair yn gweithio. Hefyd, mae datblygwyr yn gwneud rhywbeth o amgylch y dirprwy yn rheolaidd: naill ai ei ganiatáu, yna ei wahardd, neu ei dorri, sy'n arwain at baneli cyfan o drafodaethau ar y safle.

Penderfynwyd peidio â dibynnu ar swyddogaethau ansefydlog a dod o hyd i rywbeth mwy dibynadwy a diddorol.

Rhywle yma mae'n rhaid i'r darllenydd ofyn: beth am gymryd ssh ag allwedd -D a dyna ddiwedd arni? Ac, yn gyffredinol, bydd yn iawn. Ond, yn gyntaf, mae angen pardduo hyn o hyd a gwneud ffrindiau ag autossh, er mwyn peidio â meddwl am gysylltiadau wedi'u rhwygo. Ac yn ail: mae'n rhy syml a diflas.

Mewn trefn

Yn ôl yr arfer, gadewch i ni fynd o'r chwith i'r dde, o'r top i'r gwaelod a disgrifio popeth sydd ei angen arnom i weithredu ein syniad “syml”.

Yn gyntaf mae angen dirprwy arnoch chi

Ac mae yna lawer o ddewisiadau eraill ar unwaith:

  • gallwch chi fynd a chymryd o restrau dirprwy agored. Rhad (neu yn hytrach am ddim), ond yn gwbl annibynadwy ac mae oes dirprwyon o'r fath yn tueddu i sero. Felly, byddai angen dod o hyd i/ysgrifennu parser ar gyfer rhestrau dirprwy, eu hidlo yn ôl y math a'r wlad a ddymunir, ac mae'r cwestiwn o amnewid y dirprwy a ddarganfuwyd yn Spotify yn parhau i fod yn agored (wel, efallai trwy HTTP_PROXY trosglwyddo a chreu deunydd lapio wedi'i deilwra ar gyfer y deuaidd fel nad yw'r holl draffig arall yn cael ei anfon yno).
  • Gallwch brynu dirprwy tebyg ac arbed eich hun rhag y rhan fwyaf o'r problemau a ddisgrifir uchod. Ond am bris dirprwy, gallwch brynu premiwm ar Spotify ar unwaith, ac nid yw hyn yn ymarferol ar gyfer y dasg wreiddiol.
  • Codwch eich un chi. Fel y gwnaethoch ddyfalu mae'n debyg, dyma ein dewis ni.

Trwy hap a damwain yn unig fe all fod gennych ffrind gyda gweinydd yng Ngweriniaeth Belarus neu wlad fach arall. Mae angen i chi ddefnyddio hwn a chyflwyno'r dirprwy a ddymunir arno. Gall connoisseurs arbennig fod yn fodlon â ffrind gyda llwybrydd arno DD-WRT neu feddalwedd tebyg. Ond yno ei byd rhyfeddol ac mae'n amlwg nad yw'r byd hwn yn ffitio i fframwaith y stori hon.

Felly, ein hopsiynau: Squid - ddim yn ysbrydoledig, a dydw i ddim eisiau dirprwy HTTP, mae gormod o'r protocol hwn eisoes o gwmpas. Ac yn ardal SOCKS does dim byd synhwyrol heblaw Dante heb gyflwyno eto. Felly, gadewch i ni ei gymryd.

Peidiwch ag aros am lawlyfr Dante ar osod a ffurfweddu. Ef dim ond googling ac nid yw o ddiddordeb arbennig. Yn y cyfluniad lleiaf mae angen i chi daflu pob math o client pass, socks pass, cofrestrwch y rhyngwynebau yn gywir a pheidiwch ag anghofio ychwanegu socksmethod: username. Yn y ffurflen hon, ar gyfer dilysu, bydd y logopass yn cael ei gymryd oddi wrth ddefnyddwyr y system. Ac mae'r rhan am ddiogelwch: gwahardd mynediad i localhost, cyfyngu defnyddwyr, ac ati - mae hyn yn unigol yn unig, yn dibynnu ar baranoia personol.

Defnyddio dirprwy sy'n wynebu'r rhwydwaith

Mae'r ddrama mewn dwy act.

Act un

Rydyn ni wedi rhoi trefn ar y dirprwy, nawr mae angen i ni gael mynediad iddo o'r we fyd-eang. Os oes gennych chi beiriant ag IP gwyn yn y wlad a ddymunir, yna gallwch chi hepgor y pwynt hwn yn ddiogel. Nid oes gennym un (rydym ni, fel y crybwyllwyd uchod, yn cael ein cynnal yn nhai ffrindiau) ac mae'r IP gwyn agosaf yn rhywle yn yr Almaen, felly byddwn yn astudio rhwydweithiau.

Felly ie, bydd y darllenydd sylwgar yn gofyn eto: pam na chymerwch wasanaeth sy'n bodoli eisoes ngrok neu debyg? A bydd yn iawn eto. Ond mae hwn yn wasanaeth, eto mae angen ei bardduo, gall hefyd gostio arian ac yn gyffredinol nid yw'n chwaraeon. Felly, byddwn yn creu beiciau o ddeunyddiau sgrap.

Tasg: mae dirprwy rhywle ymhell y tu ôl i NAT, mae angen i chi ei hongian ar un o borthladdoedd VPS sydd ag IP gwyn ac sydd wedi'i leoli ar gyrion y byd.

Mae'n rhesymegol tybio y gellir datrys hyn naill ai trwy anfon porthladd ymlaen (sy'n cael ei weithredu trwy'r uchod ssh), neu drwy gyfuno caledwedd i rwydwaith rhithwir trwy VPN. GYDA ssh rydym yn gwybod sut i weithio, autossh Mae'n ddiflas i'w gymryd, felly gadewch i ni gymryd OpenVPN.

Mae gan DigitalOcean manwl bendigedig ar y mater hwn. Nid oes gennyf ddim i'w ychwanegu ato. A gellir cysylltu'r cyfluniad canlyniadol yn eithaf hawdd â'r cleient OpenVPN a systemd. Rhowch ef (config) i mewn /etc/openvpn/client/ a pheidiwch ag anghofio newid yr estyniad i .conf. Ar ôl hynny, tynnwch y gwasanaeth [email protected]peidiwch ag anghofio ei wneud drosti enable a llawenhau fod popeth wedi hedfan i ffwrdd.

Wrth gwrs, mae angen i ni analluogi unrhyw ailgyfeirio traffig i'r VPN sydd newydd ei greu, oherwydd nid ydym am leihau'r cyflymder ar y peiriant cleient trwy basio traffig trwy hanner pêl.

Ac ie, mae angen i ni gofrestru cyfeiriad IP statig ar y gweinydd VPN ar gyfer ein cleient. Bydd angen hyn ychydig yn ddiweddarach yn y stori. I wneud hyn mae angen i chi alluogi ifconfig-pool-persist, golygu ipp.txt, wedi'i gynnwys gydag OpenVPN a galluogi client-config-dir, ynghyd â golygu ffurfwedd y cleient a ddymunir trwy ychwanegu ifconfig-push gyda'r mwgwd cywir a'r cyfeiriad IP dymunol.

Act dau

Nawr mae gennym ni beiriant ar y “rhwydwaith” sy'n wynebu'r Rhyngrwyd a gellir ei ddefnyddio at ddibenion hunanol. Sef, ailgyfeirio rhan o'r traffig drwyddo.

Felly, tasg newydd: mae angen i chi ddiffodd y traffig sy'n cyrraedd un o'r porthladdoedd VPS gydag IP gwyn fel bod y traffig hwn yn mynd i'r rhwydwaith rhithwir sydd newydd ei gysylltu a gall yr ymateb ddychwelyd oddi yno.

Ateb: wrth gwrs iptables! Pryd arall y cewch chi gyfle mor wych i ymarfer gydag ef?

Gellir dod o hyd i'r cyfluniad gofynnol yn eithaf cyflym, mewn tair awr, cant o eiriau rhegi a llond llaw o nerfau wedi'u gwastraffu, oherwydd bod rhwydweithiau dadfygio yn weithdrefn benodol iawn.

Yn gyntaf, mae angen i chi alluogi ailgyfeirio traffig yn y cnewyllyn. Gelwir y peth hwn ipv4.ip_forward ac fe'i galluogir ychydig yn wahanol yn dibynnu ar yr OS a'r rheolwr rhwydwaith.

Yn ail, mae angen i chi ddewis porthladd ar y VPS a lapio'r holl draffig sy'n mynd ato mewn is-rwydwaith rhithwir. Gellir gwneud hyn, er enghraifft, fel hyn:

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

Yma rydym yn ailgyfeirio'r holl draffig TCP sy'n dod i borthladd 8080 y rhyngwyneb allanol i beiriant gydag IP 10.8.0.2 a'r un porthladd 8080.

I'r rhai sydd eisiau manylion budr y swydd netfilter, iptables a llwybro yn gyffredinol, y mae yn gwbl angenrheidiol i fyfyrio hwn neu hwn.

Felly, nawr mae ein pecynnau'n hedfan i'r is-rwyd rhithwir a ... maen nhw'n aros yno. Yn fwy manwl gywir, mae'r ymateb gan y dirprwy sanau yn hedfan yn ôl trwy'r porth rhagosodedig ar y peiriant gyda Dante ac mae'r derbynnydd yn ei ollwng, oherwydd mewn rhwydweithiau nid yw'n arferol anfon cais at un IP a derbyn ymateb gan un arall. Felly, mae angen inni barhau i gonsurio.

Felly, nawr mae angen i chi ailgyfeirio pob pecyn o'r dirprwy yn ôl i'r isrwyd rhithwir tuag at y VPS gydag IP gwyn. Yma mae'r sefyllfa ychydig yn waeth, oherwydd ei fod yn unig iptables ni fydd gennym ddigon, oherwydd os byddwn yn cywiro'r cyfeiriad cyrchfan cyn llwybro (PREROUTING), yna ni fydd ein pecyn yn hedfan i'r Rhyngrwyd, ac os na fyddwn yn ei drwsio, bydd y pecyn yn mynd i default gateway. Felly, mae angen i chi wneud y canlynol: cofiwch y gadwyn mangle, er mwyn marcio pecynnau trwy iptables a'u lapio mewn bwrdd llwybro wedi'i deilwra a fydd yn eu hanfon i ble y dylent fynd.

Nid cynt wedi dweud na gwneud:

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

Rydyn ni'n cymryd traffig sy'n mynd allan, yn marcio popeth sy'n hedfan o'r porthladd y mae'r dirprwy yn eistedd arno (8080 yn ein hachos ni), yn ailgyfeirio'r holl draffig wedi'i farcio i'r bwrdd llwybro gyda rhif 80 (yn gyffredinol, nid yw'r rhif yn dibynnu ar unrhyw beth, rydyn ni eisiau i) ac ychwanegu un rheol , yn unol â hynny mae'r holl becynnau sydd wedi'u cynnwys yn y tabl hwn yn hedfan i'r is-rwydwaith VPN.

Gwych! Nawr mae'r pecynnau'n hedfan yn ôl tuag at y VPS ... ac yn marw yno. Oherwydd nid yw VPS yn gwybod beth i'w wneud â nhw. Felly, os na fyddwch chi'n trafferthu, gallwch chi ailgyfeirio'r holl draffig sy'n cyrraedd o'r is-rwydwaith rhithwir yn ôl i'r Rhyngrwyd:

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

Yma, mae popeth sy'n cyrraedd o'r subnet 10.8.0.0 gyda mwgwd o 255.255.255.000 wedi'i lapio mewn ffynhonnell-NAT ac yn hedfan i'r rhyngwyneb rhagosodedig, sy'n cael ei droi i'r Rhyngrwyd. Mae'n bwysig nodi na fydd y peth hwn ond yn gweithio os byddwn yn anfon y porthladd ymlaen yn dryloyw, hynny yw, mae'r porthladd sy'n dod i mewn ar y VPS yn cyfateb i borthladd ein dirprwy. Fel arall bydd yn rhaid i chi ddioddef ychydig yn fwy.

Rhywle nawr dylai popeth ddechrau gweithio. A dim ond ychydig yn weddill: peidiwch ag anghofio i wneud yn siŵr bod yr holl configs iptables и route heb barhau ar ôl yr ailgychwyn. Canys iptables mae ffeiliau arbennig fel /etc/iptables/rules.v4(yn achos Ubuntu), ond ar gyfer llwybrau mae popeth ychydig yn fwy cymhleth. Gwthiais nhw i mewn up/down Sgriptiau OpenVPN, er fy mod yn meddwl y gallent fod wedi cael eu gwneud yn fwy gweddus.

Lapiwch draffig o'r cais yn y dirprwy

Felly, mae gennym ddirprwy gyda dilysiad yn y wlad a ddymunir, sy'n hygyrch trwy gyfeiriad IP gwyn sefydlog. Y cyfan sydd ar ôl yw ei ddefnyddio ac ailgyfeirio traffig o Spotify yno. Ond mae yna naws, fel y soniwyd uchod, nid yw'r cyfrinair mewngofnodi ar gyfer y dirprwy yn Spotify yn gweithio, felly byddwn yn edrych am sut i fynd o'i gwmpas.

I ddechrau, gadewch i ni gofio am dirprwy. Stwff gwych, ond mae'n costio cymaint â llong seren ($40). Gyda'r arian hwn gallwn eto brynu premiwm a chael ei wneud ag ef. Felly, byddwn yn chwilio am fwy o analogau rhad ac am ddim ac agored ar y Mac (ie, rydym am wrando ar gerddoriaeth ar y Mac). Gadewch i ni ddarganfod un offeryn cyfan: proximac. A byddwn yn hapus yn mynd i brocio ef.

Ond bydd y llawenydd yn fyrhoedlog, oherwydd mae'n troi allan bod angen i chi alluogi modd dadfygio ac estyniadau cnewyllyn arferol yn MacOS, ffeilio ffurfweddiad syml a deall bod gan yr offeryn hwn yr un broblem yn union â Spotify: ni all basio dilysiad gan ddefnyddio'r mewngofnodi-cyfrinair ar sanau-procsi.

Rhywle o gwmpas fan hyn mae'n amser ffracio a phrynu premiwm... ond na! Gadewch i ni geisio gofyn iddo gael ei drwsio, mae'n ffynhonnell agored! Gadewch i ni wneud tocyn. Ac mewn ymateb cawn stori dorcalonnus am sut nad oes gan yr unig gynhaliwr MacBook bellach ac i uffern ag ef, nid atgyweiriad.

Byddwn wedi cynhyrfu eto. Ond yna byddwn yn cofio ein hieuenctid a C, trowch y modd dadfygio ymlaen yn Dante, cloddio trwy gannoedd o kilobytes o foncyffion, ewch i RFC1927 i gael gwybodaeth am brotocol SOCKS5, gadewch i ni edrych ar Xcode a dod o hyd i'r broblem. Mae'n ddigon i gywiro un nod yn y rhestr o godau dull y mae'r cleient yn eu cynnig ar gyfer dilysu ac mae popeth yn dechrau gweithio fel gwaith cloc. Rydym yn llawenhau, rydym yn casglu'r rhyddhau deuaidd, rydym yn ei wneud cais tynnu ac rydym yn mynd i'r machlud ac yn mynd i'r pwynt nesaf.

Ei awtomeiddio

Unwaith y bydd Proximac yn gweithio, mae angen pardduo ac anghofio amdano. Mae un system gychwyn gyfan sy'n addas ar gyfer hyn, a geir yn MacOS, sef lansio.

Rydym yn dod o hyd iddo yn gyflym llawlyfr a deallwn nad yw hyn o gwbl systemd a dyma hi bron yn sgŵp a xml. Dim configs ffansi i chi, dim gorchmynion fel status, restart, daemon-reload. Dim ond craidd caled caredig start-stop, list-grep, unload-load a llawer mwy o ryfeddodau. Goresgyn hyn oll ysgrifenwn plist, llwytho. Ddim yn gweithio. Rydym yn astudio'r dull o ddadfygio'r cythraul, ei ddadfygio, deall beth sydd yno ENV hyd yn oed PATH Wnaethon ni ddim cyflwyno'r un arferol, rydyn ni'n dadlau, rydyn ni'n dod ag ef i mewn (ychwanegu /sbin и /usr/local/bin) ac yn olaf rydym yn hapus gyda autostart a gweithrediad sefydlog.

Anadlu

Beth yw'r canlyniad? Wythnos o antur, sw penlinio o wasanaethau sy'n annwyl i'r galon ac yn gwneud yr hyn sy'n ofynnol ohoni. Ychydig o wybodaeth mewn meysydd technegol amheus, ychydig o ffynhonnell agored a gwên ar eich wyneb o feddwl “Fe wnes i e!”

ON: nid galwad am foicot cyfalafwyr, cynilo ar gemau neu gyfrwystra llwyr yw hyn, ond dim ond arwydd o bosibiliadau ymchwil a datblygu lle nad ydych, yn gyffredinol, yn eu disgwyl.

Ffynhonnell: hab.com

Ychwanegu sylw