آموزش :: آموزش راه اندازی Cache سرور Squid قسمت دوم : راه اندازی Squid در حالت Full Proxy و Cache Server
درخواست های ارتباط
جستجو
    لیست دوستان من
    صندوق پیام
    همه را دیدم
    • در حال دریافت لیست پیام ها
    صندوق پیام
    رویدادها
    همه را دیدم
    • در حال دریافت لیست رویدادها
    همه رویدادهای من
    تخفیف های وب سایت
    همه تخفیف ها

    عضویت در

    کانال تلگرام

    توسینسو

    اطلاعات مطلب
      مدرس/نویسنده
      مهرداد سامی
      امتیاز: 3917
      رتبه:109
      0
      9
      14
      87
      "Linux SysAdmin" پروفایل کاربر

      آموزش راه اندازی Cache سرور Squid قسمت دوم : راه اندازی Squid در حالت Full Proxy و Cache Server

      تاریخ 33 ماه قبل
      نظرات 8
      بازدیدها 1684
      با سلام خدمت شما دوستان ITPRO عزیز ، در ادامه آموزش مربوط به squid , راه اندازی پروکسی سرور در حالت Full Proxy و Cache Server را خواهیم گفت .در ابتدا باید راجع به اینکه Full Proxy چیست یک توضیحی بدهیم : حالت Full Proxy به این صورت میباشد که کلاینت درون مرورگر خود یا درون نرم افزارهای Proxy Client آدرس پروکسی سرور را زده و به آن متصل خواهد شد , در این حالت کاربر متوجه خواهد شد که به پروکسی سرور متصل است .

      Cache Server چیست ؟


      همانطور که از نام اون مشخصه کار Caching را برای ما انجام خواهد داد که Squid این قابلیت را به خوبی پشتیبانی میکند . به این صورت که به عنوان مثال کلاینت سایتی را درخواست میکند پروکسی سرور Object هایی که در وب سایت به عنوان Object های Static معرفی شده است را در دیسک خود ذخیره میکند و اگر کلاینت دیگری همین سایت را درخواست کند پروکسی سرور Object هایی که به صورت Static میباشند و در دیسک خود ذخیره کرده است را دیگر از سرور مقصد نخواهد گرفت و آنها را از Cache خود به کلاینت تحویل میدهد . این کار دو ویژگی مهم دارد :

      1. افزایش 30 تا 50 درصدی باز کردن صفحات سایت .
      2. مصرف کمتر پهنای باند

      راه اندازی پروکسی سرور در حالت Full Proxy


      نصب Squid را در جلسه اول توضیح دادیم .برای راه اندازی در حالت Full Proxy ابتدا فایل کانفیگ را با دستور
      Vim /etc/squid/squid.conf
      
      سپس در خطوط ابتدایی خطهایی که Access list جهت رنج شبکه میباشد را Comment کرده و رنج شبکه خود را وارد کنید . به عنوان مثال رنج شبکه من که قرار است از proxy serverاستفاده کنند 192.168.1.0/24 میباشد
      # Example rule allowing access from your local networks.
      # Adapt to list your (internal) IP networks from where browsing
      # should be allowed
      acl localnet src 10.0.0.0/8         # RFC1918 possible internal network
      #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
      #acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
      #acl localnet src fc00::/7       # RFC 4193 local private network range
      #acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
      acl localnet src 192.168.1.0/24
      
      توجه داشته باشید که در اینجا هر آی پی به غیر از این رنج به پروکسی سرور درخواست بفرستد جوابی نخواهد گرفت.گام بعدی مشخص کردن مسیر جهت Cache Server . جهت این کار خط 62 را از uncomment کنید .در اینجا میتوانید پارامتر ها را بسته به نیاز خود تغییر دهید . توضیح پارامتر ها در جلسه اول به صورت کامل گفته شده است.
      # Uncomment and adjust the following to add a disk cache directory.
      cache_dir ufs /var/spool/squid 100 16 256
      
      توجه داشته باشید که اگر این خط را Uncomment نکنید باز هم عملیات Cache صورت خواهد گرفت ولی برروی مموری ذخیره خواهد شد که اینکار معایب خود را دارد و پیشنهاد میشود اگر میخواهید سرورتان عملیات Caching را نیز انجام دهد حتما کانفیگ مورد نظر را انجام دهد و در غیر اینصورت جهت متوقف کردن عملیات Cache دستور زیر را در انتهای فایل کانفیگ اضافه کنید .
      cache deny all
      

      مورد بعدی اضافه کردن نام سیستم خود در انتهای فایل کانفیگ میباشد , این نام برای نمایش ارورها و آمارها به کار میاید به خصوص زمانی که شما چندین پروکسی سرور دارید .طبق تجربه شخصی من پیشنهاد میکنم که حتی اگر یک پروکسی سرور هم داشتید حتما این مورد رو اضافه کنید .در اینجا نام سرور من centos7 میباشد.

      visible_hostname centos7
      
      آموزش راه اندازی Cache سرور Squid قسمت دوم : راه اندازی Squid در حالت Full Proxy و Cache Server



      خب در اینجا تنظیمات مربوط به Squid ما برروی سرور به اتمام رسید .

      • نکته مهم : فایروال لینوکس به صورت پیش فرض روی سرور فعال میباشد و اجازه ارسال و دریافت پکت ها را از پورت 3128 نخواهد داد , جهت حل این مورد دستورات زیر را در پروکسی سرور خود وارد کنید .

      firewall-cmd --zone=public --permanent  --add-service=squid
      

      در Cent OS7 سرویس جدیدی به نام firewalld معرفی شده است که میتوان گفت جایگزین iptables شده است .تنظیمات مربوط به سرور به اتمام رسیده است و میتوانید با دستور زیر پروکسی سرور خود را راه اندازی کنید .
      systemctl restart squid 
      
      دستور زیر را هم جهت اینکه squid در زمان بوت به صورت اتومات فعال شود وارد کنید .
      systemctl enable squid
      

      تنظیمات مربوط به کلاینت


      جهت استفاده از پروکسی سرور در کلاینت در مرورگر خود تغییرات زیر را اعمال کنید ، مرورگر من در اینجا فایرفاکس میباشد و آی پی سرور من 192.168.1.10 میباشد .ابتدا وارد صفحه تنظیمات شوید که در لینوکس از منوی Edit ---> Preferences و در ویندوز از منوی Tools ----> Option وارد تنظیمات شوید و طبق مراحل زیر جلو بروید
      آموزش راه اندازی Cache سرور Squid قسمت دوم : راه اندازی Squid در حالت Full Proxy و Cache Server

      آموزش راه اندازی Cache سرور Squid قسمت دوم : راه اندازی Squid در حالت Full Proxy و Cache Server


      در اینجا فقط فایرفاکس از پروکسی سرور استفاده میکند و مابقی نرم افزارها به صورت عادی از اینترنت استفاده میکنند. جهت اینکه تمامی سیستم شما از پروکسی استفاده کند راه های مختلفی وجود دارد که مثلا در سیستم عامل لینوکس با استفاده از environment ها و در ویندوز نیز با استفاده از نرم افزارهایی مثل proxyfire میتوانید استفاده کنید .

      • نکته : توجه داشته باشید که در زمانی که شما پروکسی سرور در شبکه استفاده میکنید کلاینتی که به پروکسی سرور متصل میشود نیازی ندارد که اینترنت داشته باشد و فقط کافیست که پروکسی سرور را ببیند تا بتواند به اینترنت متصل شود .

      بعد از اعمال کانفیگ ها میتوانید نام سایتی را وارد کرده تا ببینید که پروکسی سرور درست کار میکند یا خیر .

      لاگ ها در Squid


      برای دیدن لاگ در پروکسی سرور وارد مسیر زیر شوید
      cd /var/log/squid
      

      در اینجا 2 فایل خواهید دید :
      access.log
      cache.log
      

      فایل access.log : این فایل شامل اطلاعات درخواست ها میباشد و میتوان گفت اصلی ترین فایل لاگ در Squid میباشد .

      Syntax این فایل به صورت زیر میباشد
      Timestamp Elapsed Client Action/Code Size Method URI Ident Hierarchy/From Content
      
      • Timestamp : زمان بسته شدن سوکت میباشد در واقع زمانی که درخواست رفته است و جوابی دریافت کرده است که براساس میلی ثانیه از تاریخ ۱ ژانویه ۱۹۷۰ که مبدا تاریخ سیستم های یونیکسی میباشد محاسبه شده است .
      • Elapsed : براساس میلی ثانیه میباشد و زمانی است که از درخواست گذشته
      • Client : آی پی کلاینت درخواست کننده را مشخص کرده است
      • Action : مشخص کننده کاری میباشد که برروی درخواست صورت گرفته است
      • Code : منظور HTTP Reply Code میباشد .
      • Size : مقدار دیتا داده شده به کلاینت
      • Method : نوع درخواست میباشد .
      • URI :آدرس درخواست شده از سمت کلاینت میباشد
      • Ident : نتیجه بررسی RFC931/ident برای یوزر کلاینت میباشد که پروتکلی جهت احراز هویت است . در حالت پیش فرض غیرفعال میباشد و در لاگ با علامت − مشخص شده است .
      • Hierarchy : توضیحات راجع به اینکه Object درخواست شده چگونه و از کجا تحویل داده شده است به عنوان مثال از Cache داده شده یا مستقیم از سرور گرفته شده .
      • From : نشان دهنده IP سرور Object میباشد .
      • Content : نشان دهنده mime type درخواستی میباشد .
      • cache.log : نشان دهنده ارور های Squid میباشد و کارهای خاصی که انجام میدهد به عنوان مثال اگر دچار مشکلی شد اولین فایلی که نگاه خواهید کرد این فایل خواهد بود .

      در بخش های بعدی راجع به لاگ فایل ها و همچنین شخصی سازی آن بیشتر و با جزییات بیشتر بحث خواهیم کرد.با توجه به طولانی شدن این بخش آموزش احراز هویت را در جلسه بعدی خواهیم گفت .

      پایان بخش دوم
      مهرداد سامی
      موفق و پیروز باشید

      برچسب ها
      ردیفعنوان
      1آموزش راه اندازی Cache سرور Squid قسمت اول : نصب Squid و تحلیل فایل config
      2آموزش راه اندازی Cache سرور Squid قسمت دوم : راه اندازی Squid در حالت Full Proxy و Cache Server
      3آموزش راه اندازی Cache سرور Squid قسمت سوم : راه اندازی Basic Authenticate
      4آموزش راه اندازی Cache سرور Squid قسمت چهارم : راه اندازی Squid در حالت Transparent
      دورهمجموعه کل دوره
      مطالب مرتبط

      در حال دریافت اطلاعات

      نظرات
      • من خودم به شدت پیگیری این سری مقالات هستم ، امیدوارم با جدیت ادامه پیدا کنه و در کنار هم یه مجموعه کامل بشیم
      • مرسی محمد جان .... حتما همینطوره ....
      • درود
        مهندس مهرداد عزیز خسته نباشید، یه سوال برام پیش اومده
        چطور میشه در کش سرور تعریف کنیم که فایل های با حجم x مگابایت یا با پسوند خاصی رو کش نکنه ؟ چند شبه فکرم رو مشغول کرده
      • سلام وحید جان

        یکی از روش هایی که شما میتونید با اون براساس سایز محدودیت بذارید دستور زیر هستش :
        maximum_object_size 10 MB
        
        مثلا ما در اینجا فقط Object هایی که کمتر از 10 مگ هستن رو کش میکنیم. به صورت پیش فرض روی 4 مگ هستش.

        در مورد محدودیت با پسوند هم شما میتونید از کد زیر استفاده کنید
        acl mp3_file url_regex -i \.mp3$
        cache deny mp3_file
        

        در اینجا فایل های mp3 دیگه کش نخواهند شد .



      • درود

        مهندس اگر فقط بخوام کش سرور رو راه اندازی کنم تا کجای آموزش شمارو باید انجام بدم ؟ یه سوال دیگه هم اینکه فرضا سروری که میخوام روش کش سرور رو راه بندازم 4 تا هارد 1 ترابایت داشته باشه، اگر بخوام از هر 4 تا هارد برای ذخیره سازی فایل های کش شده استفاده کنم ، آیا اینکار شدنیه ؟ اگر شدنیه لطفا بفرمایید به چه نحو
      • دوستان لطفا سئوالات رو جداگونه در وب سایت مطرح کنید ، ساختار حفظ بشه و سئوال جواب دادن هم برای کاربرامون امتیاز محسوب بشه.
      • سلام وحید جان .....

        در مورد سوال اول باید بگم که تا همین جلسه شما کش سرور را راه اندازی کردید و میتوانید از اون استفاده کنید اگر هم میخواهید که کاربرها متوجه نشوند که پشت پروکسی هستند و نخواهیم مستقیما تنظیمات را روی مرورگر کاربر وارد کنیم باید squid را در حالت Transparent راه اندازی کنیم که در جلسه ۴ نحوه راه اندازی به این صورت را آموزش میدیم .

        در مورد سوال دومت هم شما میتونی چندین cache_dir تعریف کنی و به هرکدام ادرس های مختلف بدی فقط به این نکته توجه کن که زمانی که دایرکتوری را ساختی یوزر squid را owner اون کنی .و نکته آخر هم اینکه SElLinux به این مورد الارم میده و برای حل این مشکل هم دستور زیر را وارد کن
        semanage fcontext -a -t squid_cache_t DIRECTORY-ADDRESS
        
      • سلام
        من وقتی دستور systemctl restart squid رو وارد میکنم با پیغام زیر مواجه میشم مشکل کجاست؟
        bash: systemctl: command not found
        در ضمن این پیام رو میده
        Job for squid.service failed because the control process exited with error code. See "systemctl status squid.service" and "journalctl -xe" for details.
        و وقتی دستور systemctl status squid.service رو وارد میکنم این وضعیت رو نشون میده

        squid.service - Squid caching proxy
        Loaded: loaded (usrlibsystemdsystem/squid.service; enabled; vendor preset: disabled)
        Active: failed (Result: exit-code) since Thu 2016-11-03 00:53:31 IRST; 1min 59s ago
        Process: 31447 ExecStartPre=usrlibexecsquidcache_swap.sh (code=exited, status=2)

        Nov 03 00:53:31 MyFedora systemd[1]: Starting Squid caching proxy...
        Nov 03 00:53:31 MyFedora cacheswap.sh[31447]: initcache_dir varspool/squid...
        Nov 03 00:53:31 MyFedora systemd[1]: squid.service: Control process exited, code=exited status=2
        Nov 03 00:53:31 MyFedora systemd[1]: Failed to start Squid caching proxy.
        Nov 03 00:53:31 MyFedora systemd[1]: squid.service: Unit entered failed state.
        Nov 03 00:53:31 MyFedora systemd[1]: squid.service: Failed with result 'exit-code'.


      برای ارسال نظر ابتدا به سایت وارد شوید