Шытырман оқиғалар

Шытырман оқиғалар

Spotify сізге демондарды, RFC файлдарын, желілерді зерттеуге және ашық бастапқы кодты насихаттауға қалай көмектеседі. Немесе сіз төлей алмасаңыз не болады, бірақ сіз шынымен де жоғары сапалы сыйлықтар алғыңыз келеді.

Үй

Үшінші күні Spotify IP мекенжайының еліне негізделген жарнамаларды көрсететіні байқалды. Сондай-ақ, кейбір елдерде жарнама мүлде импортталмағаны айтылды. Мысалы, Беларусь Республикасында. Содан кейін премиум емес есептік жазбада жарнаманы өшіру үшін «керемет» жоспар құрылды.

Spotify туралы аздап

Жалпы айтқанда, Spotify біртүрлі саясатқа ие. Біздің ағамыз премиум сатып алу үшін қатты бұралуы керек: профиліндегі орынды шетелге өзгертіңіз, соңғы уақытта оғаш әрекет ететін және көптеген құжаттарды қажет ететін PayPal арқылы төлеуге болатын қолайлы сыйлық картасын іздеңіз. Жалпы, бұл да шытырман оқиға, бірақ басқа тәртіп. Көптеген адамдар мұны мобильді нұсқа үшін жасаса да, мен оны қызықтырмаймын. Сондықтан төменде келтірілгендердің бәрі жұмыс үстелі нұсқасы жағдайында ғана көмектеседі. Оның үстіне функциялардың кеңеюі болмайды. Тек кейбір қосымшаларын кесіп тастаңыз.

Неліктен бұл соншалықты күрделі?

Мен Spotify конфигурациясында шұлық-прокси деректерін тіркеген кезде солай ойладым. Мәселе логин мен парольді пайдаланып шұлықтағы аутентификация жұмыс істемейтіндігі болып шықты. Сонымен қатар, әзірлеушілер прокси-сервердің айналасында үнемі бірдеңе жасайды: оған рұқсат беру, содан кейін тыйым салу немесе оны бұзу, бұл сайттан тыс талқылаулардың бүкіл панелін тудырады.

Тұрақсыз функцияларға сенбеу және сенімдірек және қызықты нәрсе табу туралы шешім қабылданды.

Бір жерде оқырман сұрақ қоюы керек: неге алмасқа? ssh кілтпен -D және мұның соңы ма? Және, жалпы алғанда, ол дұрыс болады. Бірақ, біріншіден, үзілген байланыстар туралы ойламау үшін бұл әлі де демонизациялануы және autossh-пен достасуы керек. Екіншіден: бұл тым қарапайым және қызықсыз.

Қалпында

Әдеттегідей, солдан оңға, жоғарыдан төмен қарай өтіп, «қарапайым» идеямызды жүзеге асыру үшін қажет нәрсенің бәрін сипаттайық.

Алдымен сізге прокси керек

Және бірден көптеген баламалар бар:

  • сіз жай ғана барып, ашық прокси тізімдерінен ала аласыз. Арзан (дәлірек айтқанда, ештеңе жоқ), бірақ мүлдем сенімсіз және мұндай проксилердің қызмет ету мерзімі нөлге тең. Сондықтан, прокси тізімдері үшін талдаушыны табу/жазу, оларды қалаған түрі мен ел бойынша сүзу қажет болады және Spotify-да табылған проксиді ауыстыру мәселесі ашық күйінде қалады (жақсы, мүмкін арқылы HTTP_PROXY тасымалдау және екілік үшін реттелетін қаптаманы жасау, сонда барлық басқа трафик сонда жіберілмейді).
  • Сіз ұқсас проксиді сатып алып, жоғарыда сипатталған мәселелердің көпшілігінен өзіңізді құтқара аласыз. Бірақ прокси бағасы бойынша сіз бірден Spotify-да премиум сатып ала аласыз және бұл бастапқы тапсырма үшін практикалық емес.
  • Өзіңді көтер. Сіз ойлағандай, бұл біздің таңдауымыз.

Кездейсоқ сіздің Беларусь Республикасында немесе басқа шағын елде сервері бар досыңыз болуы мүмкін. Мұны пайдаланып, оған қажетті проксиді шығару керек. Арнайы білгірлер роутері қосылған досына риза бола алады DD-WRT немесе ұқсас бағдарламалық құрал. Бірақ сонда оның тамаша дүние және бұл дүние бұл әңгіменің шеңберіне сәйкес келмейтіні анық.

Сонымен, біздің опцияларымыз: Squid - шабыттандырмайды және мен HTTP проксиін қаламаймын, бұл протоколдың айналасында тым көп. Шұлық аймағында одан басқа ақылға қонымды ештеңе жоқ Данте әлі жеткізілген жоқ. Сондықтан, оны алайық.

Дантенің орнату және конфигурациялау бойынша нұсқаулығын күтпеңіз. Ол жай гуглинг және ерекше қызығушылық тудырмайды. Ең аз конфигурацияда сіз барлық түрлерін тастауыңыз керек client pass, socks pass, интерфейстерді дұрыс тіркеңіз және қосуды ұмытпаңыз socksmethod: username. Бұл пішінде аутентификация үшін жүйе пайдаланушыларынан логоппас алынады. Ал қауіпсіздік туралы бөлік: жергілікті хостқа кіруге тыйым салу, пайдаланушыларды шектеу және т.б. - бұл жеке паранойяға байланысты таза жеке.

Желіге қарайтын проксиді орналастырыңыз

Спектакль екі актіден тұрады.

Бірінші әрекет

Біз проксиді сұрыптадық, енді оған ғаламдық желіден кіруіміз керек. Егер сізде қалаған елде ақ IP бар құрылғы болса, онда сіз бұл нүктені қауіпсіз өткізіп жібере аласыз. Бізде жоқ (жоғарыда айтылғандай, біз достардың үйінде орналасқанбыз) және ең жақын ақ IP Германияда орналасқан, сондықтан біз желілерді зерттейміз.

Сонымен, иә, мұқият оқырман тағы да сұрайды: неге сіз сияқты бұрыннан бар қызметті қабылдамайсыз? ngrok немесе ұқсас? Және ол қайтадан дұрыс болады. Бірақ бұл қызмет, оны қайтадан демонизациялау керек, ол ақшаға да кетуі мүмкін және жалпы спорттық емес. Сондықтан біз қалдықтардан велосипед жасайтын боламыз.

Тапсырма: NAT-тан алыс жерде прокси бар, оны ақ IP бар және әлемнің шетінде орналасқан VPS порттарының біріне іліп қою керек.

Мұны портты бағыттау арқылы да шешуге болады деп ойлау қисынды (ол жоғарыда аталған арқылы жүзеге асырылады). ssh) немесе аппараттық құралдарды VPN арқылы виртуалды желіге біріктіру арқылы. МЕН ssh жұмыс істеуді білеміз, autossh Қабылдау қызықсыз, сондықтан OpenVPN алайық.

DigitalOcean бар керемет манул осы мәселе бойынша. Оған қосатын ештеңем жоқ. Алынған конфигурацияны OpenVPN клиентімен оңай қосуға болады және systemd. Тек оны (конфигурациялау) енгізіңіз /etc/openvpn/client/ және кеңейтімді өзгертуді ұмытпаңыз .conf. Осыдан кейін қызметті тартыңыз [email protected]ол үшін мұны ұмытпаңыз enable және бәрі ұшып кеткеніне қуаныңыз.

Әрине, біз трафикті жаңадан жасалған VPN-ге кез келген қайта бағыттауды өшіруіміз керек, өйткені біз трафикті жарты шар арқылы өткізу арқылы клиенттік машинадағы жылдамдықты азайтқымыз келмейді.

Иә, біздің клиент үшін VPN серверінде статикалық IP мекенжайын тіркеу керек. Бұл әңгімеде сәл кейінірек қажет болады. Мұны істеу үшін сізге қосу керек ifconfig-pool-persist, өңдеу ipp.txt, OpenVPN құрамына кіреді және клиент-конфигурация-директорын қосыңыз, сонымен қатар қосу арқылы қалаған клиенттің конфигурациясын өңдеңіз ifconfig-push дұрыс маскамен және қажетті IP мекенжайымен.

Екінші әрекет

Қазір бізде «желіде» Интернетке қарайтын және пайдакүнемдік мақсатта пайдалануға болатын машина бар. Дәлірек айтқанда, ол арқылы трафиктің бір бөлігін қайта бағыттаңыз.

Сонымен, жаңа тапсырма: бұл трафик жаңадан қосылған виртуалды желіге өтіп, жауап сол жерден оралуы үшін ақ IP бар VPS порттарының біріне келетін трафикті өшіру керек.

Шешім: әрине iptables! Онымен бірге жаттығуға тағы қашан сізде осындай тамаша мүмкіндік болады?

Қажетті конфигурацияны өте жылдам табуға болады, үш сағатта, жүздеген лас сөздер мен бірнеше бос нервтер, өйткені желілерді жөндеу өте нақты процедура.

Біріншіден, ядродағы трафикті қайта бағыттауды қосу керек. Бұл нәрсе деп аталады ipv4.ip_forward және ОЖ мен желі менеджеріне байланысты сәл басқаша қосылады.

Екіншіден, VPS портын таңдап, оған баратын барлық трафикті виртуалды ішкі желіге орау керек. Мұны, мысалы, келесідей жасауға болады:

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

Мұнда біз сыртқы интерфейстің 8080 портына келетін барлық TCP трафигін IP 10.8.0.2 және сол 8080 порты бар құрылғыға қайта бағыттаймыз.

Жұмыстың лас бөлшектерін қалайтындар үшін netfilter, iptables және жалпы маршруттау туралы ойлану керек ол немесе ол.

Сонымен, қазір біздің пакеттер виртуалды ішкі желіге ұшады және... олар сонда қалады. Дәлірек айтқанда, шұлық проксиінің жауабы Данте бар машинадағы әдепкі шлюз арқылы қайта оралады және алушы оны тастайды, өйткені желілерде бір IP-ге сұрау жіберу және екіншісінен жауап алу әдеттегідей емес. Сондықтан, біз сиқырлауды жалғастыруымыз керек.

Сонымен, енді барлық пакеттерді проксиден виртуалды ішкі желіге ақ IP арқылы VPS-ке қайта бағыттау керек. Мұнда жағдай біршама нашар, өйткені бұл жай ғана iptables бізде жеткіліксіз болады, өйткені маршруттау алдында тағайындалған мекенжайды түзетсек (PREROUTING), онда біздің пакет интернетке ұшпайды, ал егер оны түзетпесек, пакет жіберіледі default gateway. Сонымен, келесі әрекеттерді орындау керек: тізбекті есте сақтаңыз mangle, пакеттерді белгілеу үшін iptables және оларды баратын жерге жіберетін реттелетін бағыттау кестесіне ораңыз.

Айтылды орындалды:

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

Біз шығыс трафикті аламыз, прокси орналасқан порттан ұшатын барлық нәрсені белгілейміз (біздің жағдайда 8080), барлық белгіленген трафикті 80 нөмірі бар маршруттау кестесіне қайта бағыттаймыз (жалпы, сан ештеңеге байланысты емес, біз жай ғана қаладық. үшін) және бір ережені қосыңыз, оған сәйкес осы кестеге енгізілген барлық пакеттер VPN ішкі желісіне ұшады.

Тамаша! Енді пакеттер VPS-ке қайта ұшады... және сол жерде өледі. Өйткені VPS олармен не істеу керектігін білмейді. Сондықтан, егер сіз алаңдамасаңыз, виртуалды ішкі желіден келетін барлық трафикті Интернетке қайта бағыттай аласыз:

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

Мұнда 10.8.0.0 маскасы бар 255.255.255.000 ішкі желіден келетін барлық нәрсе бастапқы NAT-қа оралып, Интернетке қосылған әдепкі интерфейске ұшады. Айта кету керек, бұл портты ашық түрде жіберген жағдайда ғана жұмыс істейді, яғни VPS-тегі кіріс порты біздің прокси портына сәйкес келеді. Әйтпесе, аздап азап шегуге тура келеді.

Бір жерде қазір бәрі жұмыс істей бастауы керек. Және аз ғана қалды: барлық конфигурацияларға көз жеткізуді ұмытпаңыз iptables и route қайта іске қосқаннан кейін жалғасты. Үшін iptables сияқты арнайы файлдар бар /etc/iptables/rules.v4(Ubuntu жағдайында), бірақ маршруттар үшін бәрі біршама күрделірек. Мен оларды итеріп жібердім up/down OpenVPN сценарийлері, бірақ менің ойымша, оларды лайықтырақ жасауға болар еді.

Проксидегі қолданбадан трафикті орау

Сонымен, бізде статикалық ақ IP мекенжайы арқылы қол жеткізуге болатын қалаған елде аутентификациясы бар прокси бар. Тек оны пайдалану және Spotify-тен трафикті қайта бағыттау ғана қалады. Бірақ бір нюанс бар, жоғарыда айтылғандай, Spotify-тегі проксиге арналған логин-пароль жұмыс істемейді, сондықтан біз оны айналып өту жолын іздейміз.

Алдымен, еске түсірейік прокси. Тамаша зат, бірақ оның құны жұлдызды кемемен бірдей ($40). Бұл ақшаға біз қайтадан премиум сатып аламыз және онымен жұмыс істей аламыз. Сондықтан біз Mac жүйесінде көбірек тегін және ашық аналогтарды іздейміз (иә, біз Mac жүйесінде музыка тыңдағымыз келеді). Бір тұтас құралды ашайық: проксимак. Біз оны қуана қуана аламыз.

Бірақ қуаныш ұзаққа созылмайды, өйткені MacOS жүйесінде отладка режимін және реттелетін ядро ​​кеңейтімдерін қосып, қарапайым конфигурацияны жүктеп, бұл құралда Spotify сияқты бірдей мәселе бар екенін түсіну керек: ол аутентификациядан өтпейді. шұлық-проксидегі логин-пароль.

Бұл жерде бір жерде ашуланып, премиум сатып алатын кез келді... бірақ жоқ! Оны түзетуді сұрап көрейік, бұл ашық дереккөз! істейік билет. Жауап ретінде біз жалғыз техникалық қызмет көрсетушінің енді MacBook-қа ие болмайтыны және оны түзету емес, тозаққа айналдыратыны туралы жүрек сыздайтын оқиғаны аламыз.

Қайтадан ренжіп қаламыз. Бірақ содан кейін біз жастығымызды және C-ді еске аламыз, Дантеде жөндеу режимін қосамыз, жүздеген килобайт журналдарды қазып, өтіңіз RFC1927 SOCKS5 протоколы туралы ақпарат алу үшін Xcode-ді қарастырып, мәселені табайық. Клиент аутентификация үшін ұсынатын әдіс кодтарының тізімінде бір таңбаны түзету жеткілікті және бәрі сағат механизмі сияқты жұмыс істей бастайды. Біз қуанамыз, біз екілік шығарылымды жинаймыз, жасаймыз сұрауды тарту және біз күн батқанға барып, келесі нүктеге барамыз.

Оны автоматтандыру

Proximac жұмыс істегеннен кейін оны демонизациялау және ұмыту керек. Бұл үшін қолайлы бір тұтас инициализация жүйесі бар, ол MacOS жүйесінде бар, атап айтқанда іске қосылды.

Біз оны тез табамыз нұсқаулық және біз бұл мүлдем емес екенін түсінеміз systemd және мұнда бұл дерлік бір шелек және xml. Сізге ешқандай сәнді конфигурациялар, сияқты пәрмендер жоқ status, restart, daemon-reload. Тек хардкор түрі start-stop, list-grep, unload-load және басқа да көптеген оғаш нәрселер. Осының бәрін жеңе отырып, біз жазамыз plist, жүктеу. Жұмыс істемейді. Біз жынның күйін жою әдісін зерттейміз, оны жөндеуге, не бар екенін түсінеміз ENV даже PATH біз кәдімгісін жеткізбедік, дауласамыз, әкелеміз (қосу /sbin и /usr/local/bin) және, сайып келгенде, біз автостарт пен тұрақты жұмысымызға ризамыз.

Дем шығару

Нәтиже қандай? Шытырман оқиға аптасы, жүрекке қымбат және одан талап етілетін қызметтерден тізе бүгілген хайуанаттар бағы. Күмәнді техникалық салаларда аздап білім, аздап ашық ақпарат және «Мен мұны жасадым!» деген ойдан жүзіңізде күлкі бар.

PS: бұл капиталистерге бойкот жариялауға, сіріңкелерді үнемдеуге немесе мүлде қулыққа шақыру емес, бұл жай ғана ғылыми-зерттеу және әзірлеу мүмкіндіктерінің көрсеткіші.

Ақпарат көзі: www.habr.com

пікір қалдыру