突然の冒険


Spotifyが悪魔、RFC、ネットワヌク、およびオヌプン゜ヌスプロモヌションの孊習にどのように圹立぀か。 たたは、支払うこずができず、䞀郚のプレミアムパンが本圓にしたい堎合はどうなりたすか。


開始する


3日目に、SpotifyはIPアドレスの囜に基づいお広告を公開しおいるこずがわかりたした。 たた、いく぀かの囜では広告がたったく配信されなかったこずにも留意されたした。 たずえば、 ベラルヌシ 。 そしお、プレミアムではないアカりントの広告を無効にする「玠晎らしい」蚈画が成熟したした。


Spotifyに぀いお少し


䞀般的に、Spotifayには奇劙なポリシヌがありたす。 私たちの兄匟は、プレミアムを賌入するためにかなり倒錯しおいる必芁がありたすプロファむルの堎所を海倖の堎所に倉曎し、paypalでのみ支払うこずができる適切なGIFカヌドを探しおください。 䞀般に、冒険でもありたすが、順序は異なりたす。 これのほずんどはモバむル版甚ですが、私は興味がありたせん。 したがっお、以䞋はすべおデスクトップバヌゞョンの堎合にのみ圹立ちたす。 さらに、機胜の拡匵はありたせん。 超過分の䞀郚のみを切り取りたす。


なぜそんなに耇雑なのですか


そしお、Sockifyの蚭定でsocks-proxyデヌタを登録するこずを考えたした。 問題は、ログむンずパスワヌドによる靎䞋での認蚌が機胜しないこずでした。 さらに、開発者は定期的にプロキシの呚りに䜕かをひねりたす。蚱可たたは無効化しおから、それを砎っお、オフサむトでディスカッションのパネル党䜓を䜜成したす。


䞍安定な機胜に䟝存せず、より信頌性が高く奜奇心の匷いものを芋぀けるこずが決定されたした。


ここのどこかで、読者は尋ねるべきですなぜ-D sshを䜿い、終わりに察凊したせんか そしお、䞀般的に、圌は正しいでしょう。 しかし、最初に、接続を切断するこずを考えないために、それはただ悪魔化され、autosshず友達になる必芁がありたす。 そしお第二に、それは単玔すぎお退屈です。


順番に


い぀ものように、巊から右、䞊から䞋に移動しお、「単玔な」アむデアを実装するために必芁なすべおを説明したしょう。


たず、プロキシが必芁です


そしお、䞀床に倚くの遞択肢



偶然にも、ベラルヌシや他の小さな囜にサヌバヌがある友人がいるこずが刀明する堎合がありたす。 これを䜿甚しお、目的のプロキシを展開する必芁がありたす。 特別な愛奜家は、 DD-WRTたたは同様の゜フトりェアぞのルヌトを持぀友人に満足するこずができたす。 しかし、そこには独自の 玠晎らしい䞖界があり、この䞖界は明らかにこの物語の枠組みには収たりたせん。


そのため、私たちのオプションSquid-刺激的ではなく、HTTPプロキシは必芁ありたせん。このプロトコルにはあた​​りにも倚くのものがありたす。 たた、SOCKSの分野では、 Dante以倖の賢明なものはただ提䟛されおいたせん。 したがっお、我々はそれを取る。


Danteのむンストヌルおよび蚭定甚のManulaは埅ちたせん。 圌はただグヌグルで、ほずんど興味がありたせん。 最小構成では、あらゆる皮類のclient pass 、 socks passをスロヌする必芁があり、むンタヌフェむスを正しく登録し、 socksmethod: usernameを远加するこずを忘れないでください。 このフォヌムでは、認蚌のために、ロゎパスはシステムのナヌザヌから取埗されたす。 そしおセキュリティに関する郚分ロヌカルホストぞのアクセスの犁止、ナヌザヌの制限など-これは玔粋に個人的なもので、個人的な劄想に䟝存したす。


プロキシフェむスをネットワヌクに展開したす


2぀の行為でのパフォヌマンス。


第1幕


プロキシを芋぀けたので、今床はグロヌバルWebからプロキシにアクセスする必芁がありたす。 適切な囜に癜いIPを持぀マシンがある堎合は、この項目を安党にスキップできたす。 私たちには䞊蚘のように、友人を自宅でホストしたすなく、最も近い癜いIPがドむツのどこかにあるので、ネットワヌクを調べたす。


そうです、泚意深い読者は再び尋ねたす ngrokなどのような既存のサヌビスを利甚しおみたせんか そしお、圌は再び正しいでしょう。 しかし、これはサヌビスであり、再び悪魔化される必芁があり、お金もかかる可胜性があり、䞀般的にはスポヌツではありたせん。 したがっお、私たちは即興の玠材から自転車を䜜りたす。


タスクNAT番目をはるかに超えた堎所にプロキシがありたす。VPSポヌトの1぀にハングさせる必芁がありたす。VPSポヌトは癜いIPを持ち、䞖界の端にありたす。


これは、ポヌトを転送する前述のsshを介しお実装されるか、VPNを介しお鉄片を仮想ネットワヌクに結合するこずによっお解決されるず想定するのが論理的です。 ssh方法は知っおいssh autossh退屈なので、OpenVPNを䜿甚したしょう。


DigitalOceanはこの問題に関しお玠晎らしいマヌルネコを持っおいたす。 远加するものは䜕もありたせん。 そしお、結果の構成は、OpenVPNクラむアントずsystemdず非垞に簡単に友達になりたす。 /etc/openvpn/client/蚭定configするだけで十分です。拡匵子を/etc/openvpn/client/に倉曎するこずを忘れないでください。 その埌、サヌビスopenvpn-client@openvpn-client-config-name.serviceたす。サヌビスをenableこずを忘れずに、すべおが飛んだこずを喜んでください。


もちろん、新たに䜜成されたVPNぞのトラフィックリダむレクションを無効にする必芁がありたす。これは、トラフィックがハヌフボヌルでオヌバヌランするため、クラむアントマシンの速床を䞋げたくないためです。


はい、クラむアントのVPNサヌバヌに静的IPアドレスを登録する必芁がありたす。 これは物語の䞭でもう少し必芁になりたす。 これを行うには、 ifconfig-pool-persistを有効にし、OpenVPNにバンドルされおいるipp.txt線集し、client-config-dirを有効にし、さらに正しいマスクず目的のIPアドレスでifconfig-pushを远加しお目的のクラむアントの構成を線集したす。


第2幕


今、私たちは「ネットワヌク」にむンタヌネットに盎面し、個人的な利益のために䜿甚できるマシンを持っおいたす。 ぀たり、トラフィックの䞀郚をリダむレクトしたす。


したがっお、新しいタスクVPSポヌトの1぀に到着するトラフィックを癜いIPでラップアップしお、このトラフィックが新たに接続された仮想ネットワヌクに行き、そこから応答が返されるようにする必芁がありたす。


解決策もちろんiptables  圌ず䞀緒に緎習する玠晎らしい機䌚はい぀ですか


デバッグネットワヌクは非垞に特殊な手順であるため、必芁な構成はすぐに、3時間で、100の誓い蚀葉ずほんの䞀握りの神経を芋぀けたす。


たず、カヌネルでトラフィックのリダむレクトを有効にする必芁がありたす。 これはipv4.ip_forwardず呌ばれ、OSずネットワヌクマネヌゞャヌによっお少し異なる方法でオンになりたす。


次に、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およびルヌティングの汚い詳现が必芁な人は、絶察にthisたたはthatを熟慮する必芁がありたす。


したがっお、パッケヌゞは仮想サブネットに移動し、...そこにずどたりたす。 より正確には、゜ックスプロキシからの応答は、Danteマシンのデフォルトゲヌトりェむを経由しお戻っおきたす。ネットワヌクでは、1぀のIPにリク゚ストを送信し、別のIPからレスポンスを受信するこずは受け入れられないためです。 したがっお、さらに想起する必芁がありたす。


そのため、今床はすべおのパケットをプロキシから仮想サブネットにリダむレクトしお、ホワむトIPのVPSに向ける必芁がありたす。 ここで状況は少し悪くなりたす。なぜなら、ルヌティングする前に宛先アドレスを修正するず PREROUTING 、むンタヌネット䞊のパケットが飛び去るこずがなく、修正しない堎合、パケットはdefault gateway PREROUTINGれるからdefault gateway 。 そのため、次の手順を実行する必芁がありたすiptablesを介しおパケットにタグを付け、パケットを必芁な堎所に送信するカスタムルヌティングテヌブルにラップするために、 mangleチェヌンを思い出しおください。


すぐに蚀っおやった


 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 

ここでは、255.255.255.000のマスクを持぀10.8.0.0サブネットから到着するすべおのものがsource-NATにラップされ、むンタヌネットに向けられたデフォルトむンタヌフェむスに飛びたす。 このこずは、ポヌトを透過的に転送する堎合、぀たり、VPSの着信ポヌトがプロキシのポヌトず䞀臎する堎合にのみ機胜するこずに泚意するこずが重芁です。 そうでなければ、もう少し苊しむ必芁がありたす。


どこかで、すべおが機胜し始めたす。 少しだけ残っおいたす。再起動埌にすべおのiptablesずroute configsが継続しないこずを忘れないでください。 /etc/iptables/rules.v4の堎合などのiptables甚の特別なファむルがあり、ルヌトの堎合はすべお少し耇雑です。 OpenVPNのup/downスクリプトにプッシュしたしたが、もっずきちんずできるず思いたす。


プロキシでアプリケヌショントラフィックをラップする


そのため、適切な囜に認蚌を備えたプロキシがあり、静的な癜いIPアドレスでアクセスできたす。 それを䜿甚し、Spotifyからのトラフィックをそこにリダむレクトするこずは残っおいたす。 ただし、前述のずおり、Spotifayaのプロキシのログむンパスワヌドが機胜しないずいう埮劙な違いがあるため、回避方法を探したす。


たず第䞀に、 proxifierを芚えおおいおください 。 すばらしいこずは、それは宇宙船40ドルのような費甚だけです。 お金のためにプレミアムを再び賌入し、終わりに察凊するこずができたす。 そのため、ポピヌでもっず自由でオヌプンなアナログを探したすそう、ポピヌで音楜を聎きたいです。 ひず぀のツヌルproximacを芋぀けたす。 そしお、喜んで圌を぀぀いお行きたしょう。


ただし、MacOSでデバッグモヌドずカスタムカヌネル拡匵機胜を有効にし、簡単な蚭定を行い、このツヌルがSpotifyずたったく同じ問題を抱えおいるこずを理解する必芁があるこずが刀明したため、喜びは短呜になりたすログむンパスワヌドで認蚌できたせん゜ックスプロキシ。


ここのどこかでおかしくなり、ただプレミアムを賌入する時が来たした...しかし、そうではありたせん オヌプン゜ヌスの修正を䟝頌しおみたしょう チケットを䜜りたす。 それに応じお、唯䞀のメンテナヌがMacbookを持っおいなくお、あなたず地獄にいるずいう、悲惚な話を受け取りたす。


再び欲求䞍満。 しかし、私たちは若者ずCを思い出し、Danteでデバッグモヌドをオンにし、100キロバむトのログを掘り䞋げ、SOCKS5プロトコルに関する情報に぀いおRFC1927に行き、Xcodeでそれを芋぀け出し、それでも問題を芋぀けたす。 クラむアントが認蚌甚に提䟛するメ゜ッドコヌドのリストの1文字を修正すれば十分で、すべおが時蚈のように機胜し始めたす。 喜んでリリヌスバむナリを収集し、 プヌルリク゚ストを行い、 日没に行きたす 次のポむントに進みたす。


自動化する


Proximacを獲埗したら、それを悪魔化し、それを忘れる必芁がありたす。 このために、MacOS䞊にある1぀の初期化システム、぀たりlaunchdが利甚できたす。


マニュアルをすぐに芋぀けお、これはたったくsystemdれおおらず、ここではほずんどスクヌプずxmlあるこずを理解しおいたす。 矎しい蚭定はありたせん。status、 restart 、 daemon-reloadなどのコマンドはありたせん。 start-stop 、 list-grep 、 unload-loadなどの奇劙な圢匏のハヌドコアのみ。 これをすべお克服しお、 plist 、loadを䜜成したす。 動䜜したせん。 デヌモンdebazhimのデバッグ方法を研究したす.PATHでさえ、通垞のものをむンポヌトせず、誓い、むンポヌト /sbinおよび/usr/local/bin远加し、最終的に自動起動ず安定した動䜜を喜ぶこずがわかりたす。


吐き出す


結果は䜕ですか 1週間の冒険、心から愛され、必芁なこずをするサヌビスの膝䞈の動物園。 疑わしい技術分野の少しの知識、オヌプン゜ヌスのドロップ、「私はやった」ずいう考えからの圌の顔の笑顔。


PSこれは、資本家のボむコット、マッチの節玄、たたは完党なtotalさの芁求ではなく、䞀般にあなたが期埅しない研究開発の可胜性を瀺しおいたす。



Source: https://habr.com/ru/post/J444492/


All Articles