شفافة بروكسينغ حاوية عامل ميناء واحد إلى حاوية عامل ميناء آخر

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

الآن ، أحتاج إلى إعداد وكيل شفاف لحاوية عامل الميناء الثانية. لذلك ، يجب أن تمر جميع حركة هتب (المنفذ 80) للحاوية الثانية عبر المنفذ 8080 للحاوية الأولى.

أول حاوية إب: 172.17.0.4 (لديه خدمة وكيل تعمل على المنفذ 8080).الحاوية الثانية إب: 172.17.0.6 (لديه أدوات العميل مثل المتصفح).أردت إعادة توجيه كل حركة هتب (ميناء 80) من 172.17.0.6 إلى الميناء 8080 من 172.17.0.4.

أي)> حركة المرور إلى 80 من 172.17.0.4 & لتر; - - - 8080 من 172.17.0.6

لقد حاولت إضافة قواعد إيبتبلس داخل الحاوية الثانية للتكوين أعلاه. لكن لم يعمل أي منهم.

~# sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 172.17.0.4:8080

لا يعمل.

~# sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 172.17.0.4:8080

لا يعمل.

~# sudo iptables -t nat -A POSTROUTING -j MASQUERADE

لذا سؤالي هو, كيف يمكنني تكوين وكيل شفاف داخل حاوية عامل ميناء يمكنه إعادة توجيه كل حركة مرور منفذ محدد إلى منفذ حاوية آخر?

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

لقد قرأت بعض الدروس على عكس بروكسينغ جميع الحاويات تعمل معا باستخدام نجينكس / هابروكسي. لكنني أردت تكوين حاوية فردية مع حاوية الوكيل الخاصة بها كزوج.

شكرا لكم جميعا على وقتك للإجابة. أساسا ما أحاول القيام به هو وكيل الصادرة / نشأت حركة الحاويات 2 (ملاحظة: أنا لا محاولة وكيل حركة المرور الواردة ، لذلك لا يمكن استخدام أباتشي مودبروكسي أو إنجن إكس بروكسي باس. هذه الوحدات تعمل لحركة المرور الواردة). 1 حاوية تدير خدمة وكيل على المنفذ 8080.

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

الخطأ الذي ارتكبته في الإعدادات السابقة على السؤال هو ، كنت أحاول توجيه حركة المرور الواردة إلى المنفذ 80 إلى 8080 من الخادم الوكيل. منذ الحاوية 1 ليس لديها أي حركة المرور الواردة فإنه لن يعمل وأنه هو خطأ منطقيا إلى بريروت / بوستروت حركة المرور لتحقيق ما كنت أبحث عنه. لتوجيه حركة المرور الصادرة / الصادرة ، نحتاج إلى استخدام سلسلة الانتاج من إيبتبلس.

الحل الخاص بي:

لقد استخدمت ريدسوكس مع مزيج إيبتبلس لفرض الوكيل لحركة المرور الصادرة كاملة من الخادم. هنا هو تكوين إيبتبلس لقد استخدمت:

# إنشاء سلسلة جديدة للريدسوكس

root# iptables -t nat -N REDSOCKS

# تجاهل الشبكات المحلية وبعض العناوين المحجوزة الأخرى

root# iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURNroot# iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURNroot# iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURNroot# iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURNroot# iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURNroot# iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURNroot# iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURNroot# iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN

# إعادة توجيه كل هتب إلى ريدسوكس المنفذ المحلي

root# sudo iptables -t nat -A REDSOCKS -p tcp --dport 80 -j REDIRECT --to-ports 12345

# لحركة هتبس مجرد استبدال المنفذ 80 مع 443

# استخدام جميع ريدسوكس سلسلة لجميع حركة المرور الصادرة في إيث0

root# sudo iptables -t nat -A OUTPUT -p tcp -o eth0 -j REDSOCKS

الآن ، تكوين ريدسوكس للاستماع إلى المنفذ المحلي 12345 لحركة المرور الواردة وإعادة توجيهها إلى إب الخادم الوكيل والمنفذ. للقيام بذلك تحرير الجوارب الحمراء.أسيوط كما مثل هذا,

redsocks {local_ip = 127.0.0.1;local_port = 12345;ip = 172.17.0.4;port = 8080;type = http-relay;}

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

إذا كان أي شخص لديه أي حلول بديلة أخرى لهذا يرجى اقتراح.

أعتقد أن استخدام $http_proxy ينبغي أن تساعد البيئة فار.

يمكنك تعيين نقطة دخول في ملف عامل الميناء الخاص بك (للحاوية رقم 2) لتصدير إنف فار عند بدء تشغيل الحاوية. في مكان ما في نقطة الدخول الخاصة بك ، يجب أن يكون لديك شيء من هذا القبيل:

export http_proxy=http://$CONATAINER1_PORT_8080_TCP_ADDR:$CONATAINER1_PORT_8080_TCP_PORT

أنا لا أعرف بالضبط ما إذا كان العميل الخاص بك (المتصفح) يمكن استخدام ht هتب_بروكسي إنف فار ، ولكن يجب أن توجد طريقة مماثلة. على سبيل المثال ، لفايرفوكس:

user_pref("network.proxy.http", "$CONATAINER1_PORT_8080_TCP_ADDR");user_pref("network.proxy.http_port", $CONATAINER1_PORT_8080_TCP_PORT);user_pref("network.proxy.type", 1);

نصائح: استخدام printenv في الحاوية الثانية لمعرفة اسم المتغيرات التي يجب عليك استخدامها في نقطة الدخول الخاصة بك

الارتباط المتبادل ليس شيئا لدى عامل الميناء ، بقدر ما أعرف (تم الكشف عن المعلومات في وقت التشغيل حول حاوية تم نقلها مرة أخرى أو تبادلها مع السلف). ربما هذا هو السبب في أن معظم الدروس لديها سلف ثالث مشترك ، 'وكيل' المستخدمة.

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

إذا كنت على استعداد أن يكون ثلث ، ثم يمكن ربط جميع الموانئ والسباكة عن طريق سلف مشترك لكل من الحاويات الخاصة بك 'الأخوة'.