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

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

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

بداية

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

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

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

لماذا هو معقد للغاية؟

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

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

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

مرتب

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

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

وهناك العديد من البدائل في وقت واحد:

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

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

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

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

نشر وكيل يواجه الشبكة

المسرحية في فصلين.

فعل واحد

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

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

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

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

ديجيتال أوشن لديها مانول رائع حول هذه المسألة. ليس لدي ما أضيفه إليه. ويمكن توصيل التكوين الناتج بسهولة تامة بعميل OpenVPN و systemd. فقط ضعه (التكوين) فيه /etc/openvpn/client/ ولا تنس تغيير الامتداد إلى .conf. وبعد ذلك قم بسحب الخدمة [email protected]لا تنسى أن تفعل ذلك لها enable ونفرح أن كل شيء طار بعيدا.

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

ونعم، نحن بحاجة إلى تسجيل عنوان IP ثابت على خادم VPN لعملائنا. ستكون هناك حاجة إلى هذا لاحقًا في القصة. للقيام بذلك تحتاج إلى تمكين ifconfig-pool-persist، يحرر 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 واحد وتلقي استجابة من عنوان IP آخر. لذلك، علينا أن نستمر في الاستحضار.

لذا، أنت الآن بحاجة إلى إعادة توجيه كافة الحزم من الوكيل مرة أخرى إلى الشبكة الفرعية الافتراضية نحو VPS باستخدام IP الأبيض. هنا الوضع أسوأ قليلا، لأنه مجرد 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). دعونا نكتشف أداة واحدة كاملة: قريب. وسنذهب بكل سرور لكزة له.

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

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

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

أتمتة ذلك

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

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

الزفير

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

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

المصدر: www.habr.com

إضافة تعليق