في بعض الأحيان، لا يكفي بروكسي واحد. قد تحتاج لتمرير الاتصال عبر سلسلة من الخوادم (Proxy Chaining) للوصول إلى الإنترنت. هذا السيناريو شائع جداً في الشركات الكبيرة التي لديها فروع متعددة، أو عند الرغبة في إخفاء الهوية بطبقات إضافية. في هذا الدليل، سنتعلم كيفية ربط خادم Squid بخادم آخر (Parent Proxy).
ما هو Chained Proxy؟
تخيل أنك في الفرع "أ"، وتريد الوصول للإنترنت، لكن الجدار الناري يمنع كل شيء إلا الاتصال بالمقر الرئيسي "ب". الحل هو إعداد بروكسي في "أ" يقوم بتوجيه كل الطلبات إلى البروكسي في "ب"، والذي بدوره يتصل بالإنترنت. يسمى البروكسي في "ب" بالـ Parent Proxy.
إعداد Squid كـ Child Proxy
لنفترض أنك قمت بالفعل بـ تثبيت Squid على خادمك المحلي. الآن نريد إخباره: "لا تتصل بالإنترنت مباشرة، بل اطلب من الخادم الأب".
افتح ملف التكوين /etc/squid/squid.conf وأضف السطر التالي:
# الصيغة: cache_peer parent_ip type http_port icp_port options
cache_peer 192.168.100.1 parent 3128 0 no-query default
شرح المعاملات:
- parent: نوع العلاقة (أب).
- 3128: منفذ البروكسي الأب.
- 0: منفذ ICP (بروتوكول تواصل بين البروكسيات)، نضعه 0 لتعطيله إذا لم نكن نستخدمه.
- no-query: لا ترسل استعلامات ICP (لتقليل الزحام).
- default: استخدم هذا الأب كمسار افتراضي لكل شيء.
التحكم في المسارات (Routing)
قد لا تريد إرسال كل شيء للأب. ربما تريد الاتصال بالمواقع المحلية مباشرة.
استخدم never_direct و always_direct:
acl local_sites dstdomain .mycompany.local
always_direct allow local_sites
never_direct allow all
هذا يخبر Squid: "اتصل بالمواقع المحلية مباشرة، لكن أبداً لا تتصل بالإنترنت مباشرة (استخدم الأب)".
المصادقة مع الأب
إذا كان البروكسي الأب يتطلب مصادقة (اسم مستخدم وكلمة مرور)، أضف الخيار login:
cache_peer 192.168.100.1 parent 3128 0 no-query default login=user:password
تحذير: كلمة المرور ستكون مكتوبة بوضوح في ملف الإعدادات، لذا تأكد من حماية الملف:
chmod 600 /etc/squid/squid.conf.