Taug txuj kev nyuaj ntawm xiav

Taug txuj kev nyuaj ntawm xiav

Yuav ua li cas Spotify tuaj yeem pab koj kawm daemons, RFCs, tes hauj lwm thiab txhawb kev qhib qhov chaw. Los yog yuav ua li cas yog tias koj them tsis tau, tab sis koj xav tau qee yam khoom zoo.

Начало

Hnub thib peb, nws tau pom tias Spotify tau nthuav tawm kev tshaj tawm raws li lub tebchaws ntawm IP chaw nyob. Nws kuj tau muab sau tseg tias nyob rau hauv qee lub teb chaws kev tshaj tawm tsis tau raug xa tawm txhua. Piv txwv li, nyob rau hauv lub koom pheej ntawm Belarus. Thiab tom qab ntawd ib txoj kev npaj "ci ntsa iab" tau hatched los lov tes taw kev tshaj tawm hauv tus account tsis yog qhov zoo tshaj.

Ib me ntsis txog Spotify

Feem ntau hais lus, Spotify muaj txoj cai coj txawv txawv. Peb cov kwv tij yuav tsum tau txais kev sib tw zoo nkauj thiaj li yuav tau txais txiaj ntsig: hloov qhov chaw hauv nws qhov profile mus rau txawv teb chaws, nrhiav daim npav khoom plig tsim nyog uas tsuas yog them rau nrog PayPal, uas tau ua qhov txawv tsis ntev los no thiab xav tau ib pawg ntawm cov ntaub ntawv. Feem ntau, nws kuj yog kev lom zem, tab sis ntawm kev txiav txim sib txawv. Txawm hais tias feem ntau cov neeg ua qhov no rau lub hom phiaj ntawm mobile version, kuv tsis nyiam nws. Yog li ntawd, txhua yam hauv qab no tsuas yog pab tau nyob rau hauv rooj plaub ntawm lub desktop version. Ntxiv mus, yuav tsis muaj kev nthuav dav ntawm kev ua haujlwm. Tsuas yog txiav tawm qee qhov ntxiv.

Vim li cas thiaj nyuaj?

Thiab kuv xav li ntawd thaum sau npe cov thom khwm-cov ntaub ntawv pov thawj hauv Spotify config. Qhov teeb meem tau dhau los ua qhov kev lees paub hauv cov thom khwm uas siv tus ID nkag mus thiab tus password tsis ua haujlwm. Ntxiv rau, cov neeg tsim khoom tsis tu ncua ua ib yam dab tsi nyob ib puag ncig lub npe: txawm tso cai, tom qab ntawd txwv tsis pub nws, lossis rhuav tshem nws, uas ua rau muaj kev sib tham tag nrho ntawm qhov chaw tawm.

Nws tau txiav txim siab tsis txhob cia siab rau cov haujlwm tsis ruaj khov thiab nrhiav ib yam dab tsi ntau txhim khu kev qha thiab nthuav.

Qhov chaw ntawm no tus nyeem ntawv yuav tsum nug: yog vim li cas tsis coj ssh nrog tus yuam sij -D thiab qhov ntawd yog qhov kawg ntawm nws? Thiab, feem ntau, nws yuav yog. Tab sis, ua ntej, qhov no tseem yuav tsum tau demonized thiab ua phooj ywg nrog autossh, thiaj li tsis xav txog kev sib txuas torn. Thiab qhov thib ob: nws yooj yim heev thiab tho txawv.

Nyob rau hauv kev txiav txim

Raws li niaj zaus, cia peb mus ntawm sab laug mus rau sab xis, sab saum toj mus rau hauv qab thiab piav qhia txhua yam peb xav tau los siv peb lub tswv yim "yooj yim".

Ua ntej koj xav tau tus neeg sawv cev

Thiab muaj ntau yam kev xaiv ib zaug:

  • koj tuaj yeem mus thiab nqa los ntawm cov npe qhib npe. Pheej yig (los yog tsis muaj dab tsi), tab sis tsis ntseeg kiag li thiab lub neej ntawm xws li proxies nyhav rau xoom. Yog li ntawd, nws yuav tsim nyog los nrhiav / sau tus parser rau npe npe, lim lawv los ntawm hom xav tau thiab lub teb chaws, thiab cov lus nug ntawm kev hloov cov npe pom hauv Spotify tseem qhib (zoo, tej zaum dhau los ntawm HTTP_PROXY hloov thiab tsim ib qho kev cai wrapper rau binary kom tag nrho lwm cov tsheb tsis xa mus rau ntawd).
  • Koj tuaj yeem yuav ib lub npe zoo sib xws thiab txuag koj tus kheej los ntawm feem ntau ntawm cov teeb meem tau piav qhia saum toj no. Tab sis ntawm tus nqi ntawm tus neeg sawv cev, koj tuaj yeem yuav tus nqi tam sim ntawm Spotify, thiab qhov no tsis yog qhov ua tau zoo rau thawj txoj haujlwm.
  • Tsa koj li. Raws li koj tej zaum twv, qhov no yog peb txoj kev xaiv.

Purely los ntawm lub sij hawm nws yuav tig tawm tias koj muaj ib tug phooj ywg nrog ib tug neeg rau zaub mov nyob rau hauv lub koom pheej ntawm Belarus los yog lwm lub teb chaws me me. Koj yuav tsum siv qhov no thiab yob tawm lub npe xav tau ntawm nws. Tshwj xeeb connoisseurs tuaj yeem txaus siab nrog tus phooj ywg nrog lub router ntawm DD-NWS los yog zoo sib xws software. Tab sis muaj koj ntiaj teb zoo kawg nkaus thiab lub ntiaj teb no kom meej meej tsis haum rau hauv lub moj khaum ntawm zaj dab neeg no.

Yog li, peb cov kev xaiv: Squid - tsis yog kev tshoov siab, thiab kuv tsis xav tau HTTP npe, muaj ntau dhau ntawm cov txheej txheem no nyob ib puag ncig. Thiab nyob rau hauv cheeb tsam ntawm SOCKS tsis muaj dab tsi paub tab Dante tseem tsis tau xa. Yog li ntawd, cia peb coj nws.

Tsis txhob tos Dante phau ntawv qhia txog kev txhim kho thiab teeb tsa. Nws tsuas yog google thiab tsis yog qhov tshwj xeeb. Nyob rau hauv qhov tsawg kawg nkaus configuration koj yuav tsum muab pov rau txhua yam client pass, socks pass, kom raug sau npe cov interfaces thiab tsis txhob hnov ​​​​qab ntxiv socksmethod: username. Nyob rau hauv daim ntawv no, rau authentication, lub logopass yuav raug coj los ntawm cov neeg siv system. Thiab ib feem ntawm kev ruaj ntseg: txwv tsis pub nkag mus rau hauv lub zos, txwv cov neeg siv, thiab lwm yam - qhov no yog tib neeg nkaus xwb, nyob ntawm tus kheej paranoia.

Xa ib lub npe mus rau lub network

Kev ua si yog nyob rau hauv ob yam.

Ua ib

Peb tau txheeb xyuas lub npe, tam sim no peb yuav tsum nkag mus rau nws los ntawm lub vev xaib thoob ntiaj teb. Yog tias koj muaj lub tshuab nrog tus IP dawb hauv lub tebchaws uas xav tau, ces koj tuaj yeem hla lub ntsiab lus no. Peb tsis muaj ib qho (peb, raws li tau hais los saum no, tau tuav ntawm cov phooj ywg lub tsev) thiab tus IP dawb uas nyob ze tshaj plaws yog qhov chaw hauv lub teb chaws Yelemees, yog li peb yuav kawm txog kev tes hauj lwm.

Yog li yog, tus neeg nyeem ntawv yuav rov nug dua: vim li cas koj ho tsis siv qhov kev pabcuam uas twb muaj lawm nwg los yog zoo sib xws? Thiab nws yuav rov hais dua. Tab sis qhov no yog ib qho kev pabcuam, nws yuav tsum tau ua dua tshiab, nws tuaj yeem raug nqi nyiaj thiab feem ntau nws tsis yog kev ua kis las. Yog li ntawd, peb yuav tsim cov tsheb kauj vab los ntawm cov khoom seem.

Kev Ua Haujlwm: muaj ib qho chaw nyob deb tom qab NAT, koj yuav tsum tau dai nws ntawm ib qho ntawm cov chaw nres nkoj ntawm VPS uas muaj tus IP dawb thiab nyob ntawm ntug ntawm lub ntiaj teb.

Nws yog qhov tsim nyog xav tias qhov no tuaj yeem daws tau los ntawm qhov chaw nres nkoj xa mus (uas yog siv los ntawm cov lus hais saum toj no ssh), lossis los ntawm kev sib txuas cov khoom siv rau hauv lub network virtual ntawm VPN. Nrog ssh peb paub ua haujlwm, autossh Nws dhuav coj, yog li cia peb coj OpenVPN.

DigitalOcean muaj zoo heev manul ntawm qhov teeb meem no. Kuv tsis muaj dab tsi ntxiv rau nws. Thiab qhov tshwm sim config tuaj yeem yooj yim txuas nrog OpenVPN tus neeg siv khoom thiab systemd. Cia li muab nws (config) rau hauv /etc/openvpn/client/ thiab tsis txhob hnov ​​​​qab hloov qhov txuas ntxiv rau .conf. Tom qab ntawd rub cov kev pabcuam [email protected]tsis txhob hnov ​​qab ua rau nws enable thiab zoo siab tias txhua yam ya mus.

Tau kawg, peb yuav tsum tau lov tes taw ib qho kev hloov pauv ntawm kev khiav mus rau lub VPN uas tau tsim tshiab, vim tias peb tsis xav txo qhov ceev ntawm tus neeg siv lub tshuab los ntawm kev hla dhau ib nrab pob.

Thiab yog, peb yuav tsum sau npe tus IP chaw nyob zoo li qub ntawm VPN server rau peb cov neeg siv khoom. Qhov no yuav xav tau me ntsis tom qab hauv zaj dab neeg. Txhawm rau ua qhov no koj yuav tsum tau ua haujlwm ifconfig-pool-persist, kho ipp.txt, suav nrog OpenVPN thiab pab cov neeg siv khoom-config-dir, ntxiv rau hloov kho qhov teeb tsa ntawm tus neeg xav tau los ntawm kev ntxiv ifconfig-push nrog daim npog qhov tseeb thiab qhov chaw nyob IP xav tau.

Ua ob

Tam sim no peb muaj lub tshuab ntawm "network" uas ntsib hauv Is Taws Nem thiab tuaj yeem siv rau lub hom phiaj qia dub. Namely, redirect ib feem ntawm cov tsheb khiav los ntawm nws.

Yog li, txoj haujlwm tshiab: koj yuav tsum tau tua cov tsheb khiav mus txog ntawm ib qho ntawm VPS chaw nres nkoj nrog tus IP dawb kom cov tsheb khiav mus rau lub network tshiab txuas nrog virtual thiab cov lus teb tuaj yeem rov qab los ntawm qhov ntawd.

Kev daws: tau kawg iptables! Thaum twg koj yuav muaj lub cib fim zoo li no los xyaum nrog nws?

Cov kev teeb tsa uas xav tau tuaj yeem pom sai heev, hauv peb teev, ib puas lo lus cog lus thiab ib tug puv tes ntawm lub paj hlwb, vim tias debugging tes hauj lwm yog ib txoj kev tshwj xeeb heev.

Ua ntej, koj yuav tsum tau ua kom muaj kev hloov pauv tsheb khiav hauv lub kernel. Qhov no hu ua ipv4.ip_forward thiab yog enabled me ntsis txawv nyob ntawm seb lub OS thiab network manager.

Qhov thib ob, koj yuav tsum xaiv qhov chaw nres nkoj ntawm VPS thiab qhwv tag nrho cov tsheb mus rau nws mus rau hauv lub subnet virtual. Qhov no tuaj yeem ua tau, piv txwv li, zoo li no:

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

Ntawm no peb redirect tag nrho TCP tsheb mus rau qhov chaw nres nkoj 8080 ntawm sab nraud interface rau lub tshuab nrog IP 10.8.0.2 thiab tib qhov chaw nres nkoj 8080.

Rau cov neeg uas xav tau cov ntsiab lus qias neeg ntawm txoj haujlwm netfilter, iptables thiab routing feem ntau, nws yog kiag li tsim nyog los xav txog nws los yog nws.

Yog li, tam sim no peb cov pob ntawv ya mus rau lub subnet virtual thiab ... lawv nyob ntawd. Ntau qhov tseeb, cov lus teb los ntawm cov thom khwm tso cai ya rov qab los ntawm lub rooj vag qub ntawm lub tshuab nrog Dante thiab tus neeg tau txais kev poob qis, vim tias hauv tes hauj lwm nws tsis yog kev cai xa ib daim ntawv thov rau ib tus IP thiab tau txais lus teb los ntawm lwm tus. Yog li ntawd, peb yuav tsum tau mus ntxiv conjure.

Yog li, tam sim no koj yuav tsum tau hloov pauv tag nrho cov pob ntawv los ntawm lub npe rov qab mus rau lub subnet virtual ntawm VPS nrog tus IP dawb. Ntawm no qhov xwm txheej yog me ntsis zuj zus, vim nws tsuas yog iptables peb yuav tsis muaj txaus, vim yog peb kho qhov chaw nyob ua ntej routing (PREROUTING), ces peb pob yuav tsis ya mus rau hauv Internet, thiab yog hais tias peb tsis kho nws, lub pob yuav mus default gateway. Yog li, koj yuav tsum ua cov hauv qab no: nco ntsoov cov saw hlau mangle, txhawm rau kos cov pob ntawv los ntawm iptables thiab qhwv lawv rau hauv ib lub rooj kev cai routing uas yuav xa lawv mus qhov twg lawv yuav tsum mus.

Tsis ntev hais tias ua tiav:

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

Peb coj cov tsheb khiav tawm, khij txhua yam uas ya los ntawm qhov chaw nres nkoj uas tus neeg sawv cev zaum (8080 hauv peb rooj plaub), hloov tag nrho cov cim tsheb mus rau lub rooj routing nrog tus lej 80 (feem ntau, tus lej tsis nyob ntawm dab tsi, peb tsuas yog xav tau. rau) thiab ntxiv ib txoj cai, raws li tag nrho cov pob ntawv suav nrog hauv cov lus no ya mus rau VPN subnet.

Zoo heev! Tam sim no cov pob ntawv ya rov qab rau ntawm VPS ... thiab tuag nyob ntawd. Vim VPS tsis paub yuav ua li cas rau lawv. Yog li ntawd, yog tias koj tsis thab, koj tuaj yeem hloov pauv tag nrho cov tsheb thauj mus los ntawm virtual subnet rov qab mus rau Is Taws Nem:

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

Ntawm no, txhua yam uas tuaj txog ntawm 10.8.0.0 subnet nrog lub npog ntsej muag ntawm 255.255.255.000 yog qhwv hauv qhov chaw-NAT thiab ya mus rau lub neej ntawd interface, uas tig mus rau Is Taws Nem. Nws yog ib qho tseem ceeb uas yuav tsum nco ntsoov tias qhov no tsuas yog ua haujlwm yog tias peb pob tshab xa mus rau qhov chaw nres nkoj, uas yog, qhov chaw nres nkoj tuaj ntawm VPS yog qhov chaw nres nkoj ntawm peb lub npe. Txwv tsis pub koj yuav tau raug kev txom nyem me ntsis ntxiv.

Qhov chaw tam sim no txhua yam yuav tsum pib ua haujlwm. Thiab tsuas yog me ntsis seem: tsis txhob hnov ​​​​qab kom paub tseeb tias tag nrho cov configs iptables ΠΈ route tsis txuas ntxiv tom qab rov pib dua. Rau iptables muaj cov ntaub ntawv tshwj xeeb xws li /etc/iptables/rules.v4(nyob rau hauv rooj plaub ntawm Ubuntu), tab sis rau txoj kev txhua yam yog qhov nyuaj me ntsis. Kuv thawb lawv mus rau hauv up/down OpenVPN scripts, txawm tias kuv xav tias lawv tuaj yeem ua tau zoo dua.

Qhwv tsheb los ntawm daim ntawv thov hauv npe

Yog li, peb muaj npe nrog kev lees paub hauv lub tebchaws xav tau, nkag tau los ntawm qhov chaw nyob dawb IP chaw nyob. Txhua yam uas tseem tshuav yog siv nws thiab hloov tsheb los ntawm Spotify muaj. Tab sis muaj ib tug nuance, raws li tau hais los saum no, tus ID nkag mus-password rau lub npe nyob rau hauv Spotify tsis ua hauj lwm, yog li ntawd peb yuav nrhiav tau nyob ib ncig ntawm nws.

Pib nrog, cia peb nco txog npe. Cov khoom zoo heev, tab sis nws raug nqi ntau npaum li lub hnub qub ($ 40). Nrog rau cov nyiaj no peb tuaj yeem rov yuav hwm thiab ua tiav nrog nws. Yog li ntawd, peb yuav saib ntau dawb thiab qhib analogues ntawm Mac (yog, peb xav mloog cov suab paj nruag ntawm Mac). Cia peb pom ib qho cuab yeej tag nrho: proximac. Thiab peb yuav zoo siab mus nplawm nws.

Tab sis qhov kev xyiv fab yuav nyob luv luv, vim nws hloov tawm tias koj yuav tsum ua kom debug hom thiab kev cai kernel extensions hauv MacOS, ua ib qho yooj yim config thiab nkag siab tias cov cuab yeej no muaj qhov teeb meem zoo ib yam li Spotify: nws tsis tuaj yeem dhau kev lees paub siv lub login-password ntawm socks-proxy.

Nyob ib ncig ntawm no nws yog lub sij hawm freak tawm thiab yuav tus nqi ... tab sis tsis yog! Cia peb sim thov kom nws kho, nws yog qhov qhib! Wb ua daim pib. Thiab nyob rau hauv cov lus teb peb tau txais ib zaj dab neeg mob siab txog yuav ua li cas tus tib tus saib xyuas tsis muaj MacBook thiab rau ntuj txiag teb tsaus nrog nws, tsis yog kho.

Peb mam li chim dua. Tab sis tom qab ntawd peb yuav nco ntsoov peb cov hluas thiab C, tig rau hom kev debug hauv Dante, khawb los ntawm ntau pua kilobytes ntawm cov cav, mus rau RFC 1927 rau cov ntaub ntawv hais txog SOCKS5 raws tu qauv, cia saib Xcode thiab nrhiav qhov teeb meem. Nws yog txaus los kho ib tug cim nyob rau hauv daim ntawv teev cov txheej txheem codes uas tus neeg siv muab rau authentication thiab txhua yam pib ua hauj lwm zoo li clockwork. Peb zoo siab, peb sau qhov tso tawm binary, peb ua rub thov thiab peb mus rau hauv lub hnub poob thiab mus rau qhov chaw tom ntej.

Automate nws

Thaum Proximac ua haujlwm, nws yuav tsum tau demonized thiab tsis nco qab txog. Muaj ib qho kev pib pib tag nrho uas tsim nyog rau qhov no, uas muaj nyob hauv MacOS, uas yog tso tawm.

Peb nrhiav tau sai sai phau ntawv thiab peb nkag siab tias qhov no tsis yog kiag li systemd thiab ntawm no nws yuav luag ib tug daus thiab xml. Tsis zoo nkauj configs rau koj, tsis muaj commands nyiam status, restart, daemon-reload. Tsuas yog hardcore hom start-stop, list-grep, unload-load thiab ntau yam ntxiv. Kev kov yeej txhua yam no peb sau plist, loading. Tsis ua hauj lwm. Peb kawm txog txoj kev debugging dab, debug nws, to taub dab tsi muaj ENV txawm PATH peb tsis xa qhov ib txwm muaj, peb sib cav, peb nqa nws (ntxiv /sbin ΠΈ /usr/local/bin) thiab thaum kawg peb zoo siab nrog autostart thiab ua haujlwm ruaj khov.

Exhale

Qhov tshwm sim yog dab tsi? Ib lub lim tiam ntawm kev taug txuj kev nyuaj, lub hauv caug zoo los ntawm cov kev pabcuam uas nyiam rau lub siab thiab ua raws li qhov xav tau ntawm nws. Kev paub me ntsis hauv qhov chaw ua haujlwm tsis zoo, me ntsis ntawm qhov qhib thiab luag nyav ntawm koj lub ntsej muag los ntawm kev xav "Kuv tau ua nws!"

PS: qhov no tsis yog kev hu rau kev tawm tsam ntawm cov neeg ua lag luam, rau kev txuag ntawm kev sib tw lossis rau tag nrho kev txawj ntse, tab sis tsuas yog qhov qhia txog qhov muaj peev xwm ntawm kev tshawb fawb thiab kev txhim kho qhov twg, feem ntau, koj tsis xav kom lawv.

Tau qhov twg los: www.hab.com

Ntxiv ib saib