همانطور که از نام اون مشخصه کار Caching را برای ما انجام خواهد داد که Squid این قابلیت را به خوبی پشتیبانی میکند . به این صورت که به عنوان مثال کلاینت سایتی را درخواست میکند پروکسی سرور Object هایی که در وب سایت به عنوان Object های Static معرفی شده است را در دیسک خود ذخیره میکند و اگر کلاینت دیگری همین سایت را درخواست کند پروکسی سرور Object هایی که به صورت Static میباشند و در دیسک خود ذخیره کرده است را دیگر از سرور مقصد نخواهد گرفت و آنها را از Cache خود به کلاینت تحویل میدهد . این کار دو ویژگی مهم دارد :
- افزایش 30 تا 50 درصدی باز کردن صفحات سایت .
- مصرف کمتر پهنای باند
راه اندازی پروکسی سرور در حالت 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
خب در اینجا تنظیمات مربوط به 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 وارد تنظیمات شوید و طبق مراحل زیر جلو بروید
در اینجا فقط فایرفاکس از پروکسی سرور استفاده میکند و مابقی نرم افزارها به صورت عادی از اینترنت استفاده میکنند. جهت اینکه تمامی سیستم شما از پروکسی استفاده کند راه های مختلفی وجود دارد که مثلا در سیستم عامل لینوکس با استفاده از 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 میباشد و کارهای خاصی که انجام میدهد به عنوان مثال اگر دچار مشکلی شد اولین فایلی که نگاه خواهید کرد این فایل خواهد بود .
در بخش های بعدی راجع به لاگ فایل ها و همچنین شخصی سازی آن بیشتر و با جزییات بیشتر بحث خواهیم کرد.با توجه به طولانی شدن این بخش آموزش احراز هویت را در جلسه بعدی خواهیم گفت .
فیلم اموزش نصب Squirrelmail
اتصال اسکوئید(Squid) به IBSng
آموزش نصب Squid,Tunnel در Centos