إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

حصريا : اعداد خدمات السكويد Mini HOWTO

تقليص
هذا موضوع مثبت
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • حصريا : اعداد خدمات السكويد Mini HOWTO

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

    1- التأكد من وجود الsquid :
    و ذلك باستخدام الأمر التالي:
    كود:
    rpm -q squid
    2- تنزيل الsquid في حالة عدم وجوده:
    باستخدام الأمر rpm :

    كود:
    rpm -ivh squid-2.5.STABLE9-7.i386.rpm
    طبعاً يمكنك تنزيله من الانترنت من على :ftp://rpmfind.net/linux/fedora/core/...LE9-7.i386.rpm

    3- المجلد الخاص باعدادات السكويد هو /etc/squid و اسم الملف الرئيسي squid.conf .قم بفتح الملف بمحررك المفضل، الخطوة الأولى التي قد تريد عملها هي تغيير البورت الذي يستخدمه السكويد. و هو بالطبع 3128 . يمكن تغييره ليصبح مثلاً 8080 عن طريق السطر http_port بجعله على النحو التالي مثلاً:

    كود:
    http_port 192.168.0.254:8080
    طبعاً افترضنا ان الآي بي للجهاز الذي يعمل عليه السكويد هو 192.168.0.254 .
    4- قم بضبط الخصائص التالية او قم باضافتها:

    كود:
    httpd_accel_host virtual
    httpd_accel_port 80
    httpd_accel_with_proxy on
    httpd_accel_uses_host_header on
    السطر الأول ليجعل السكويد يعمل ك httpd accelerator
    السطر الثاني هو البورت الذي سيعمل كبروكسي
    السطر الثالث ليعمل السكويد ك httpd accelerator و ك بروكسي
    السطر الرابع لتفعيل خيار الهوست نايم من الurl

    5- من المعروف ان السكويد لا يسمح لأي جهاز بالدخول عليه (يمنع الجميع) لذا علينا اضافة بعض السطور لنسمح لشبكتنا المحلية باستعمال البروكسي. ابحث عن الظهور الثاني للجملة Recommended minimum configuration . سوف يأخذك للمنطقة الخاصة بما يسمى الaccess list control .اضف السطر التالي تحت جملة CONNECT method CONNECT :

    كود:
    acl my_network src 192.168.0.0/255.255.255.0
    طبعاً على اعتبار أن هذا هو مجال الشبكة المحلية.

    6- انزل لأسفل في نفس الملف حتى تصل الى للجملة : INSERT YOUR OWN RULE(S) HERE . ثم أضف السطر التالي مباشرة فوق السطر الخاص بالlocalhost acl :

    كود:
    http_access allow my_network
    7- قم بتشغيل السكويد:

    كود:
    service squid start
    نأتي الآن لاعدادات الشبكة و جهاز البروكسي...

    سنفترض وجود كرتين شبكة على البروكسي... eth0 متصل بالشبكة الداخلية ، و eth1 متصل بالشبكة الخارجية او بعبارة أخرى الانترنت..

    بطبيعة الحال فإنه يلزمك عمل NAT في الفايروول و ذلك من اعدادات الiptables حتى يقوم بتحويل الريكويست الخاصة بالhttp الى البورت المطلوب (8080 أو 3128).
    تسهيلا للموضوع سأقوم بوضع اعدادات ال iptables كاملة حتى نقوم بحذف القواعد القديمة :

    كود:
    #حذف القواعد بالكامل
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -t mangle -F
    iptables -t mangle -X
    #القاعدة الأساسية هي رفض الطلبات القادمة و السماح للصادرة
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    #السماح لل loop back
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    # السماح لبعض الخدمات مثل DNS و udp و passive ftp بالعمل
    iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
    #تعديل النظام ليعمل كراوتر
    iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
    iptables --append FORWARD --in-interface eth0 -j ACCEPT
    #اعطاء صلاحيات الدخول لكامل الشبكة المحلية
    iptables -A INPUT -i eth0 -j ACCEPT
    iptables -A OUTPUT -o eth0 -j ACCEPT
    #عمل DNAT للطلبات على البورت 80 الخاص بالhttp للبورت الخاص بالسكويد
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.254:8080
    #تحويل الطلب من الجهاز نفسه ايضا!!
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080
    # رفض باقي الأمور و تخزينها في log file
    iptables -A INPUT -j LOG
    iptables -A INPUT -j DROP
    طبعاً تعمدت استخدام long switches بدلا عن short في بعض المناطق ليفهم القارئ ما الغرض بالضبط من العملية. فمثلا --append تقابل -A .

    بس تخلص اعدادات ال iptables لا تنسى تحفظ شغلك...
    كود:
    service iptables save
    الآن قم بتفعيل الخيار ip forwarding بتغيير قيمة الخيار net.ipv4.ip_forward في الملف /etc/sysctl.conf لتصبح 1 بدلا من صفر.
    مبروك! لقد قمت بتجهيز اعدادات البروكسي. و الآن يجب أن نقوم بجعل المتصفح يستخدم هذا البروكسي للدخول الى الانترنت. طبعاً يمكن استخدام أي متصفح حتى الانترنت اكسبلورر في اجهزة مايكروسوفت ويندوز.

    في الانترنت اكسبلورر:
    اذهب الى Tools ثم اختر Internet Options .
    اختر التبويب Connections ثم اختر LAN Settings .
    اختر المربع الخاص باستخدام البروكسي User a proxy server... ثم أدخل الآي بي الخاص بالسيرفر و هو في مثالنا 192.168.0.254 , و البورت الذي سيستخدمه و هو 8080 . ثم اضغط OK .

    في الفايرفوكس:
    اختر من قائمة Edit الخيار Preferences .
    من الخيار General اختر الخيار Connections Settings .
    اختر Manual Proxy Configuration و من ثم ادخل عنوان الآي بي و المنفذ كما فعلنا مع المثال السابق. و يمكنك استخدامه لجميع انواع الاتصال الأخرى بتفعيل الخيار use the same proxy for all protocols

    يمكنك استخدام ال dhcp لاعطاء قيم الgateway للكلاينتس و تريح نفسك من الاعداد اليدوي... طبعاً ما حدا يسألني كيف؟!؟! هو ما في حد غيري؟؟؟ روح دور بتلاقي الجواب


    في هذا الجزء سنقوم بالتحكم بزمن الدخول باستخدام الخاصية time مع الhttp_access التي سبق و تكلمنا عنها في السكويد.
    هذا المثال سيوضح تقريباً الطريقة:

    كود:
    acl network1 src192.168.0.1/255.255.255.0
    acl network2 src 192.168.1.1/255.255.255.0
    acl shift1 time 8:00-13:00
    acl shift2 time 15:00-21:00
    http_access allow network1 shift1
    http_access allow network2 shift2
    http_access deny all
    في المثال السابق سمحنا للشبكة الأولى بالدخول في وقت المناوبة الأولى فقط و هي تمتد من الساعة الثامنة صباحا و لغاية الواحدة من بعد الظهر، و للشبكة الثانية في المناوبة الثانية أي من الساعة الثالثة و حتى التاسعة ليلاً .
    اذا أردت أن تعطي حسب أيام الأسبوع فهناك رمز لكل يوم مثل المثال التالي:
    كود:
    acl work_clients src 192.168.0.1/24
    acl work_days time ASMTW 8:00-14:00
    http_access allow work_clients work_days
    سمحنا للشبكة الخاصة بنا في استخدام البروكسي في أيام العمل ( السبت، الأحد ... الأربعاء) و من الساعة الثامنة صباحاً الى الساعة الثانية ظهراً.
    رموز الأيام كالتالي:
    S - Sunday M - Monday T - Tuesday W - Wednesday H - Thursday F - Friday A - Saturday

    هل ترغب في المزيد؟؟؟ حسنا سأعطيك كيفية التحكم بالمواقع المسموحة و حجب بعض المواقع كالاباحية مثلاً ...
    اولا قم بعمل ملف بإسم ok-sites مثلا و ضعه في مجلد معين مثل /usr/local/squid/etc/ , و ضع فيه أسماء المواقع المسموح العمل عليها اثناء الدوام مثلاُ ...
    كود:
    #OK Sites 
    www.google.com 
    www.yahoo.com 
    www.linuxac.org 
    www.newsforge.com 
    و كمل باقي المواقع...
    اضف acl جديدة تحت التي أنشاتها سابقا عل النحو التالي:
    كود:
    acl OKSites dstdomain "/usr/local/squid/etc/ok-sites"
    ثم اسمح بالدخول...
    كود:
    http_access allow OKSites
    سهلة صح؟؟؟
    طيب ماذا لو أردت حجب بعض المواقع؟؟؟ بسيطة نفس العملية ضع اسماء المواقع في ملف المواقع الممنوعة و نفس الآلية و لكن استخدم deny بدل عن allow . طبعا يمكنك ايجاد لوائح طويلة للمواقع ال black listed على الانترنت و هي جاهزة فقط ضعها في الملف المطلوب.

    الجزء الحالي سنقوم بعمل منع تنزيل بعض الملفات حسب امتدادها.. مثلا اردنا منع تنزيل ملفات ال avi و ال rar و ال zip او غيرها..

    كود:
    acl No_Video urlpath_regex -i \.avi$
    http_access deny No_Video
    و على غرارها باقي الامتدادات.. طبعا regex ترمز الى عبارة regular expression و يمكن استخدام نفس الطريقة لحجب مواقع بناء على الكلمات و ليس حسب اسم الموقع... مثلاً نريد منع مواقع تحوي في اسمها breast .. xxx ... sex او اي كلمة اخرى مثلاً... نضعهم في ملف لنقل مثلاً etc/squid/badwords
    كود:
    sex
    breast
    xxx
    etc...
    ملاحظة: قد يحتاج منك تغيير المجموعة المالكة والصلاحيات للملفات التي تقوم بوضع اسماء الدوماينز و الكلمات المراقبة فيها بالأمرين التاليين:
    كود:
    #chown root.squid /etc/squid/badwords
    #chmod 640 /etc/squid/badwords
    وفي ملف الكونف الاساسي نضيف التالي:
    كود:
    acl NO_SEX dstdom_regex -i "/etc/squid/badwords"
    http_access deny NO_SEX
    ملاحظة: الطريقة يمكن ان تمنع مواقع مفيدة لوجود بعض الكلمات في اسماءها مثل sexualdesease.com او غيرها ... في هذه الحالة استخدم طريقة حجب الموقع ككل في الاعلى..

    يكفي هذا لليوم... قريباً سأقوم بوضع كيفية عمل simple authentication للبروكسي ... لا نريد سوى دعواتكم لي في السر و استفساراتكم هي التي يمكن وضعها هنا :clap2:
    V.I.P

    (وَاصْبِرْ فَإِنَّ اللَّهَ لَا يُضِيعُ أَجْرَ الْمُحْسِنِينَ)
    هود 115

    Linux is user-friendly, but it happens to be selective about its friends

    "احذر أن تكون مثل البقية تأخذ وﻻتعطي ، فلن يكون هناك مصادر تعليمية على الشبكة، ﻻأكثر الله من أمثالهم"


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



  • #2
    هل يمكنك نقل هذا الموضوع الى الويكي؟

    تعليق


    • #3
      بارك الله فيك حبيبي على هذا المجهود المميز ، و لي ملاحظة و إستفسار

      ملاحظتي هي : أنه يمكن تنزيل السكويد بسهولة أكبر لأصحاب التوزيعات المعتمدة على ردهات مثل الفيدورا بالأمر

      Yum install squid

      و الإستفسار : لو أردت تفعيل NAT عبر ال IPTables على كافة كروت الشبكة (لنفرض أن لدي أكثر من واحد) فهل يكفي حذف المعلمة :
      -o eth0
      من الأوامر أعلاه ؟؟

      لا أعتقد أن تجربتي أثبتت فشل هذه الطريقة ...
      لا تصطد لي سمكة ، بل علمني كيف اصطاد سمكة :wink:

      تعليق


      • #4
        بالنسبة لبرنامج الyum فهو لا يأتي مع توزيعات ريدهات مثل RHEL و التي أركز الشروحات عليها، لذا وجب تعريف القارئ بكيفية حل المشكلة.

        لم أفهم ماذا تعني بسؤالك و لكن اليك هذا المثال الذي قد يوضح الصورة أكثر...
        لديك كرتين شبكة eth0 للشبكة الداخلية و eth1 الذي سيكون upstream او public ، يكفي تفعيل خيار ip forward من الملف sysctl.conf لتصبح قيمته 1 ، و ثم الأمر التالي في الiptables يفعل الNAT:

        iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

        طبعاً هذا الخيار يعمل ال NAT لكل البورتات و من وين ما جاءت للكرت eth1 ، يعني للتحقق من عملك اكتب الأمر التالي:
        iptables -t nat -L -v
        سيعطيك البولسي و كيف قمت بتعريفها.
        V.I.P

        (وَاصْبِرْ فَإِنَّ اللَّهَ لَا يُضِيعُ أَجْرَ الْمُحْسِنِينَ)
        هود 115

        Linux is user-friendly, but it happens to be selective about its friends

        "احذر أن تكون مثل البقية تأخذ وﻻتعطي ، فلن يكون هناك مصادر تعليمية على الشبكة، ﻻأكثر الله من أمثالهم"


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


        تعليق


        • #5
          تسلم يمناك على الشرح جاري التجربه ولي رجعه بأذن لله :-)

          تعليق


          • #6
            تسلم ايديك يا بطـل ..

            ان شاء الله في ميزان حسنـاتك أخي الكريـم
            حالة مستخدم الويندوز :tooth:

            http://www.up07.com/up7/uploads/e3d6df15e5.gif

            تعليق


            • #7
              ما شاء الله .... يعطيك العافيه أخي !
              هذا شرح رائع ايضا .....:


              تحياتي
              ابوعمار
              الحرية جيدة ... المظهر لا يغني عن القدرات ... لا يجب أن تحل مشكلة ما أكثر من مره ...!

              تعليق


              • #8
                عفوا عند استخدامي الامر التالي

                كود PHP:
                [root@xXXx ~]# iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATERD -j ACCEPT 

                يطلع عندي الخطء التالي

                كود PHP:
                iptables v1.3.5Bad state `RELATERD'
                Try 
                `iptables -h' or 'iptables --help' for more information. 

                تعليق


                • #9
                  يعطيك العافيه أخ سامر ، ويعطيك عافيه ثانيه على الكتب :onfire:

                  عندي استفسار بسيط عن واجهة الشبكه eth0

                  واجهتني مشكله في اعدادتها على جنتو وقلة خبرتي جعلتني اغير خطة التركيب بالكامل وانحلت المشكله

                  بس سؤالي هو :

                  انت ذكرت ان الجهاز يملك كرتين شبكة ، واحد للشبكة الداخليه والثاني للعالم الخارجي

                  هل هذا يعني انه ﻻزم وجود كرتين ؟ لا ، اعتقد كرت واحد كفيل بربط الجهاز بالشبكه الداخلية وبالعالم الخارجي

                  ولكن ماهو قصدك بكرتين شبكة ، وماهي الواجهات اللي لازم تنعمل

                  لان المشكله اللي واجهتها كانت في eth0 بحيث انه توجد واجهة اسمها lo فقط

                  والـ eth0 و eth1 لم تعمل وعند تشغيلها يقول لايوجد جهاز

                  ولماذا lo تحديداً ؟ لان اغلب المستندات حول موضوع الايثرنت تشرح على eth0 ولا يوجد طاري لـ lo

                  عشان كذا ماقدرت افهم شي وغيرت خطة التركيب كما ذكرت

                  اتمنى انك تكون فهمت اللبس في فهمي وتستطيع مساعدتي

                  شكرا لك قلب

                  تعليق


                  • #10
                    الله يعطيك العافيه اخ greyhunter على الشرح الجميل والمتقن

                    وجاري التجربه

                    تعليق


                    • #11
                      المشاركة الأصلية بواسطة dr_tux مشاهدة المشاركة
                      هل يمكنك نقل هذا الموضوع الى الويكي؟
                      لا احد التفت لردك.. و كانه لا يعنيهم:frown:

                      La vie est complexe car nous avons tous une partie réelle et une partie imaginaire....

                      تعليق


                      • #12
                        لا احد التفت لردك.. و كانه لا يعنيهم
                        الأخ أميزا او مهما يكن... لماذا تقول لا يعنيهم؟!؟! ماذا ادراك بأنه لا يعنينا؟؟ تتوقع من الشخص ان يقوم بالرد مباشرة و كأنه لا يوجد غير المنتدى؟؟؟

                        أخي dr_tux ان شاء الله سأقوم بنقله قريباً للويكي...

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

                        الأخ silent touch الموضوع خطأ املائي فقط... اجعل القيمة RELATED .
                        V.I.P

                        (وَاصْبِرْ فَإِنَّ اللَّهَ لَا يُضِيعُ أَجْرَ الْمُحْسِنِينَ)
                        هود 115

                        Linux is user-friendly, but it happens to be selective about its friends

                        "احذر أن تكون مثل البقية تأخذ وﻻتعطي ، فلن يكون هناك مصادر تعليمية على الشبكة، ﻻأكثر الله من أمثالهم"


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


                        تعليق


                        • #13
                          iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

                          يعطيك العافيه و شغال 100%

                          شكرا لردك السريع :-)

                          تعليق


                          • #14
                            مشكور أخوي على جهودك القيمة

                            طيب أخوي لو أريد أوقف عملية اللوج في السكويد ، يعني لو أريد تعطيل سجل المواقع التي يتم زيارتها عن طريق السكويد فما الخيار اللازم ؟؟ و شكراً لك
                            لا تصطد لي سمكة ، بل علمني كيف اصطاد سمكة :wink:

                            تعليق


                            • #15
                              الأخ PrivacyCo هل لي ان أسأل لماذا تريد تعطيل تلك الخاصية؟؟ على كل لم أسمع بهذا الأمر من قبل او الهدف منه لكن ربما بتغيير الخيارlog_fqdn في الملف squid.conf الى off تنجح الطريقة. فيصبح يخزن ال ip addresses بدلا من اسماء المواقع في الملف access.log .
                              V.I.P

                              (وَاصْبِرْ فَإِنَّ اللَّهَ لَا يُضِيعُ أَجْرَ الْمُحْسِنِينَ)
                              هود 115

                              Linux is user-friendly, but it happens to be selective about its friends

                              "احذر أن تكون مثل البقية تأخذ وﻻتعطي ، فلن يكون هناك مصادر تعليمية على الشبكة، ﻻأكثر الله من أمثالهم"


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


                              تعليق

                              يعمل...
                              X
                              😀
                              🥰
                              🤢
                              😎
                              😡
                              👍
                              👎