مغامرات من الازرق


كيف يمكن لـ Spotify المساعدة في تعلم الشياطين ، و RFC ، والشبكات ، والترويج المفتوح المصدر أو ماذا يحدث إذا لم تتمكن من الدفع ، وبعض الكعك الممتاز يريد ذلك بالفعل.


بداية


في اليوم الثالث ، لوحظ أن Spotify ينشر إعلانات بناءً على بلد عنوان IP. ولوحظ أيضًا أنه في بعض البلدان لم يتم تسليم الإعلانات على الإطلاق. على سبيل المثال ، في بيلاروسيا . ثم تنضج خطة "رائعة" لتعطيل الإعلانات في حساب غير مميز.


قليلا عن سبوتيفي


بشكل عام ، لدى Spotifay سياسة غريبة. يجب أن يكون منحرفًا لأخينا من أجل شراء علاوة: قم بتغيير الموقع في ملف التعريف إلى موقع خارجي ، وابحث عن بطاقة GIF مناسبة لا يمكن سدادها إلا من خلال paypal ، التي كانت غريبة مؤخرًا وتحتاج إلى مجموعة من المستندات. بشكل عام ، مغامرة أيضًا ، ولكن بترتيب مختلف. على الرغم من أن معظم هذا الإصدار مخصص للإصدار المحمول ، إلا أنني لست مهتمًا به. لذلك ، كل ما يلي سوف يساعد فقط في حالة إصدار سطح المكتب. علاوة على ذلك ، لن يكون هناك توسع في الوظائف. فقط قطع بعض الفائض.


لماذا معقدة جدا؟


وهكذا اعتقدت ، تسجيل بيانات الجوارب-الوكيل في تهيئة Spotify. كانت المشكلة أنهم لم يعملوا المصادقة في الجوارب عن طريق تسجيل الدخول وكلمة المرور. بالإضافة إلى ذلك ، يقوم المطورون بتحريف أي شيء حول الوكيل بشكل منتظم: إما السماح به أو حظره أو كسره ، مما يؤدي إلى ظهور مجموعات كاملة من المناقشات على الموقع الخارجي.


تقرر عدم الاعتماد على وظائف غير مستقرة وإيجاد شيء أكثر موثوقية وفضولية.


في مكان ما هنا يجب أن يسأل القارئ: لماذا لا تأخذ ssh مع رمز -D والتعامل مع النهاية؟ وبشكل عام ، سيكون على حق. ولكن ، أولاً ، لا يزال الأمر بحاجة إلى الشيطان وتكوين صداقات مع autossh ، حتى لا يفكر في قطع الاتصالات. وثانيا: إنها بسيطة ومملة.


بالترتيب


كالعادة ، دعنا نذهب من اليسار إلى اليمين ، من أعلى إلى أسفل ووصف كل ما نحتاجه لتنفيذ فكرتنا "البسيطة".


تحتاج أولا وكيل


والعديد من البدائل في آن واحد:


  • يمكنك فقط الذهاب والحصول عليها من proxylists مفتوحة. رخيصة (أو بالأحرى من أجل لا شيء) ، ولكن لا يمكن الاعتماد عليها على الإطلاق ، ويميل عمر هذه الوكلاء إلى الصفر. لذلك ، سيكون من الضروري العثور على / كتابة محلل بروكسي للقوائم ، وتصفيتها حسب النوع والبلد HTTP_PROXY مسألة استبدال الوكيل الموجود في Spotify مفتوحة (جيدًا ، ما لم يتم ، من خلال HTTP_PROXY إرسال HTTP_PROXY مخصص للثنائي حتى لا يتم إرسال كل ما تبقى من حركة المرور هناك ).
  • يمكنك شراء وكيل مشابه وتنقذ نفسك من معظم المشاكل المذكورة أعلاه. ولكن بسعر وكيل ، يمكنك شراء علاوة على الفور على Spotify ، وهذه ليست رياضة كجزء من المهمة الأولية.
  • رفع لك. كما ربما خمنت ، هذا هو خيارنا.

بالصدفة البحتة ، قد يتبين أن لديك صديقًا لديه خادم في بيلاروسيا أو بلد صغير آخر. تحتاج إلى استخدام هذا وطرح الوكيل المطلوب على ذلك. يمكن أن يكون راضي خبراء خاصين مع صديق مع طريق إلى DD-WRT أو برامج مماثلة. ولكن هناك عالمها الرائع وهذا العالم من الواضح أن لا تنسجم مع إطار هذه القصة.


لذلك ، خياراتنا: Squid - ليست ملهمة ، وأنا لا أريد وكيل HTTP ، يحتوي هذا البروتوكول على الكثير. وفي مجال الجوارب ، لم يتم تسليم أي شيء معقول باستثناء دانتي بعد. لذلك ، نحن نأخذها.


مانولا لتثبيت وتكوين دانتي لا تنتظر. انه مجرد غوغل وهو قليل الاهتمام. في الحد الأدنى من التكوين ، تحتاج إلى رمي جميع أنواع client pass ، socks pass ، وتسجيل الواجهات بشكل صحيح ولا تنسَ إضافة socksmethod: username . في هذا النموذج ، للمصادقة ، سيتم أخذ logopus من مستخدمي النظام. والجزء المتعلق بالأمان: حظر الوصول إلى مضيف محلي ، وفرض قيود على المستخدمين ، وما إلى ذلك هو بالفعل فردية بحتة ، وهذا يتوقف على جنون العظمة الشخصية.


توسيع وجه الوكيل إلى الشبكة


الأداء في عملين.


قانون واحد


اكتشفنا الوكيل ، والآن نحتاج إلى الوصول إليه من الويب العالمي. إذا كان لديك جهاز به عنوان IP أبيض في البلد الصحيح ، فيمكنك تخطي هذا العنصر بأمان. ليس لدينا واحد (كما ذكرنا أعلاه ، نستضيف أصدقاء في المنزل) وأقرب عنوان IP أبيض يوجد في مكان ما في ألمانيا ، لذلك سنقوم بدراسة الشبكات.


لذا ، نعم ، سوف يسأل القارئ المهتم مرة أخرى: لماذا لا تأخذ خدمة موجودة مثل ngrok أو ما شابه؟ وسوف يكون على حق مرة أخرى. لكن هذه خدمة ، ومرة ​​أخرى تحتاج إلى أن تكون شيطانية ، كما يمكن أن تكلف مالًا ، وهي عمومًا ليست رياضة. لذلك ، سنقوم بإنشاء الدراجات من مواد مرتجلة.


المهمة: يوجد وكيل في مكان ما بعيدًا عن NAT th ، تحتاج إلى تعليقه على أحد منافذ VPS ، والذي يحتوي على عنوان IP أبيض ويقع في حافة العالم.


من المنطقي أن نفترض أن هذا قد تم حله إما عن طريق إعادة توجيه المنفذ (الذي يتم تنفيذه من خلال ssh المذكور أعلاه) ، أو عن طريق الجمع بين قطع من الحديد في شبكة افتراضية عبر VPN. نحن نعرف كيفية العمل مع ssh ، autossh ممل ، لذا لنأخذ OpenVPN.


DigitalOcean لديه manul رائعة في هذه المسألة. ليس لدي ما أضيفه إليه. ويمكن تكوين التكوين الناتج بسهولة مع أصدقاء OpenVPN و systemd . يكفي وضعه (config) في /etc/openvpn/client/ ولا تنسَ تغيير الامتداد إلى .conf . بعد ذلك ، قم بسحب خدمة openvpn-client@openvpn-client-config-name.service ، لا تنسَ enable لذلك openvpn-client@openvpn-client-config-name.service أن كل شيء قد طار.


بالطبع ، تحتاج إلى إيقاف تشغيل أي إعادة توجيه حركة مرور إلى VPN تم إنشاؤها حديثًا ، لأننا لا نريد خفض السرعة على جهاز العميل بسبب حركة مرور نصف الكرة.


ونعم ، تحتاج إلى تسجيل عنوان IP ثابت على خادم VPN لعملائنا. ستكون هناك حاجة إلى مزيد من التفاصيل في السرد. للقيام بذلك ، قم بتمكين ifconfig-pool-persist ، ipp.txt بتحرير ipp.txt المجمعة مع OpenVPN وتمكين client-config-dir ، بالإضافة إلى تحرير تكوين العميل المطلوب عن طريق إضافة ifconfig-push مع القناع الصحيح وعنوان IP المطلوب.


الفصل الثاني


الآن لدينا آلة في "الشبكة" يتم توجيهها وجهًا إلى الإنترنت ويمكن استخدامها لتحقيق مكاسب شخصية. وهي إعادة توجيه جزء من حركة المرور من خلال ذلك.


لذلك ، مهمة جديدة: تحتاج إلى اختتام حركة المرور التي تصل إلى أحد منافذ VPS باستخدام عنوان IP أبيض حتى تنتقل حركة المرور هذه إلى شبكة افتراضية متصلة حديثًا ويمكن أن تعود الإجابة من هناك.


الحل: بالطبع 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 

هنا نقوم بإعادة توجيه كل حركة مرور TCP التي وصلت إلى المنفذ 8080 من الواجهة الخارجية إلى الجهاز باستخدام IP 10.8.0.2 ونفس المنفذ 8080.


أولئك الذين يريدون التفاصيل القذرة من netfilter ، iptables والتوجيه بشكل عام يجب أن يفكروا في هذا أو ذاك .


لذلك ، الآن تطير حزمنا إلى شبكة فرعية افتراضية و ... يبقون هناك. بتعبير أدق ، تتم الاستجابة من وكيل الجوارب عبر البوابة الافتراضية على جهاز Dante ويقوم المرسل إليه بإسقاطها ، لأنه في الشبكات لا يُقبل إرسال طلب إلى IP واحد ، ولكن لتلقي استجابة من آخر. لذلك ، تحتاج إلى استحضار المزيد.


لذا ، فأنت بحاجة الآن إلى إعادة توجيه جميع الحزم من الخادم الوكيل إلى الشبكة الفرعية الافتراضية نحو VPS باستخدام IP الأبيض. الوضع هنا أسوأ قليلاً ، لأن iptables ببساطة لن يكون كافياً بالنسبة لنا ، لأنه إذا صححنا عنوان الوجهة قبل التوجيه ( PREROUTING ) ، فلن تنطلق الحزمة الخاصة بنا إلى الإنترنت ، وإذا لم نصلحها ، فستنتقل الحزمة إلى default gateway . لذا ، عليك القيام بما يلي: تذكر سلسلة mangle أجل iptables الحزم من خلال 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 (بشكل عام ، لا يعتمد الرقم على أي شيء ، أردت فقط) وإضافة القاعدة الوحيدة ، حيث تنتقل جميع الحزم التي تدخل في هذا الجدول إلى الشبكة الفرعية للشبكة الافتراضية الخاصة.


! ممتاز الآن تعود الحزم إلى 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 يتم لفه في source-NAT وينتقل إلى الواجهة الافتراضية ، التي يتم تحويلها إلى الإنترنت. من المهم ملاحظة أن هذا الشيء لن يعمل إلا إذا قمنا بإعادة توجيه المنفذ بشفافية ، أي أن المنفذ الوارد على VPS يطابق منفذ وكيلنا. خلاف ذلك ، سوف تحتاج إلى معاناة أكثر من ذلك بقليل.


في مكان ما الآن يجب أن يبدأ كل شيء في العمل. وما تبقى فقط: لا تنسَ أن تتأكد من أن جميع iptables وتكوينات route لا تستمر بعد إعادة التشغيل. بالنسبة إلى iptables هناك ملفات خاصة مثل /etc/iptables/rules.v4 (في حالة Ubuntu) ، وبالنسبة للطرق ، كل شيء أكثر تعقيدًا. لقد دفعتهم إلى البرامج النصية up/down لـ OpenVPN ، على الرغم من أنني أعتقد أنه يمكن أن يتم ذلك بشكل أفضل.


التفاف حركة المرور من التطبيق إلى الوكيل


لذلك ، لدينا وكيل بالمصادقة في البلد الصحيح ، يمكن الوصول إليه عن طريق عنوان IP ثابت أبيض. يبقى استخدامه وإعادة توجيه حركة المرور من Spotify هناك. ولكن هناك فارق بسيط ، كما ذكر أعلاه ، لا تعمل كلمة مرور تسجيل الدخول الخاصة بالوكيل في Spotifaya ، لذلك سنبحث عن كيفية المراوغة.


بالنسبة للمبتدئين ، تذكر proxifier . شيء رائع ، أنها تكلف فقط مثل المركبة الفضائية (40 دولارًا). يمكننا شراء قسط مقابل المال والتعامل مع النهاية. لذلك ، نبحث عن نظائرها المجانية والمفتوحة على الخشخاش (نعم ، نريد الاستماع إلى الموسيقى على الخشخاش). نكتشف أداة واحدة كاملة: proximac . وبفرح دعنا نذهب كزة له.


ولكن لن يكون الفرح طويلاً ، لأنه تبين أنك تحتاج إلى تشغيل وضع التصحيح وملحقات kernel المخصصة في MacOS ، قم بتقديم تهيئة بسيطة وفهم أن هذه الأداة لديها نفس المشكلة تمامًا مثل Spotify: لا يمكن المصادقة باستخدام كلمة مرور تسجيل الدخول الجوارب الوكيل.


في مكان ما هنا ، حان الوقت للتخويف ولا يزال شراء قسط ... ولكن لا! دعونا نحاول أن نسأل لإصلاحه ، مفتوحة المصدر! نحن نصنع تذكرة . ورداً على ذلك ، حصلنا على قصة تبعث على القلب مفادها أن المشرف الوحيد لم يعد لديه جهاز macbook ولجهنم معك ، وليس إصلاحًا له.


منزعج مرة أخرى. لكننا نتذكر الشباب و C ، تشغيل وضع التصحيح في دانتي ، الخوض في مائة كيلوبايت من سجلات ، انتقل إلى RFC1927 للحصول على معلومات حول بروتوكول SOCKS5 ، ومعرفة ذلك مع Xcode ولا تزال تجد المشكلة. يكفي لتصحيح حرف واحد في قائمة رموز الطريقة التي يقدمها العميل للمصادقة ويبدأ كل شيء في العمل مثل الساعة. نفرح ونجمع الإصدار الثنائي ونقوم بطلب التجمع اذهب الى غروب الشمس نذهب إلى النقطة التالية.


أتمتة ذلك


بمجرد كسب Proximac ، تحتاج إلى شيطانه ونسيانها. لهذا ، فإن نظام تهيئة واحد كامل مناسب ، وهو على نظام MacOS ، أي launchd .


سرعان ما نعثر على الدليل ونفهم أن هذا ليس systemd على الإطلاق ، وهنا يكاد يكون مجرفًا و xml . لا توجد تهيئة جميلة لك ، لا توجد أوامر مثل status ، restart ، daemon-reload . فقط المتشددين من شكل start-stop ، list-grep ، unload-load والعديد من الشذوذ. التغلب على كل هذا نكتب plist ، تحميل. لا يعمل نحن ندرس طريقة تصحيح الخفي ، debazhim ، نحن نفهم أنه حتى PATH لم تستورد ما هو عادي هناك ، أقسم ، قم باستيراد ( /sbin و /usr/local/bin ) وأخيراً استمتع ببدء التشغيل التلقائي والمستقر.


تنفس


ما هي النتيجة؟ أسبوع من المغامرة ، حديقة للحيوانات تصل إلى الركب من خلال خدمات عزيزة على القلب وتقوم بما هو مطلوب منها. معرفة قليلة في المجالات الفنية المشكوك فيها ، وقطرة مفتوحة المصدر وابتسامة على وجهه من فكرة "لقد فعلت ذلك!"


ملحوظة: هذه ليست دعوة لمقاطعة الرأسماليين ، لتحقيق وفورات في المباريات أو للماكرة الكاملة ، ولكن مجرد مؤشر على إمكانية البحث والتطوير حيث ، بشكل عام ، لا تتوقعهم.

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


All Articles