همانطور که گفتم قبل از هر نوع کامپایل یا نصب اسکویید ( چه از طریق سورس کد چه از طریق بسته های rpm یا deb ) برای بالا بردن کارایی اسکویید باید تنظیماتی را در کرنل انجام داد.اگر چه برای داشتن یک اسکویید با کارایی بسیار بالا نیاز به تنظیمات پارامترهای بیستری داریم ولی فعلا به دوتا از آنها اکتفا می کنیم.
تنظیم File descriptor :
file descriptor ها مقدار عددی هستند که مشخص می کنند که هر پردازش در سیستم چه فایل ها و سوکت هایی را باز کرده اند . اولین فایل مقدار 0 دومین فایل مقدار 1 و به همین ترتیب مقدار دهی می شوند.سیستم عامل های خانواده یونیکس بر روی تعداد فایل ها و سوکت هایی که هر پردازش می تواند باز کند محدودیت می گذارند .
این محدودیت ممکن است در مواقعی کارایی اسکویید را کاهش دهد . چونهنگامی که اسکویید از تمامی تعداد file descriptor ها مجاز استفاده کرد دیگر قادر به برقراری اتصال با کاربران دیگر نیست . یا به عبارتی تمام شدن تعداد file descriptor های مجاز برای پردازش اسکویید باعث عمل Denial of service شده و اسکویید از برقراری اتصال های بیشتر با کاربران باز می ماند. در اینگونه مواقع اسکویید اخطاری را در فایل های لاگ ثبت می کند .می توان این مشکل را با افزایش تعداد file descriptor ها (قبل ار اجرای اسکریپت ./configure اسکویید) حل کرد .
با دستور ulimit –n می توان به تعداد file descriptor های مجاز در سیستم پی برد.

به عنوان تعداد file descriptor ها در سیستم من 1024 است . که تعداد کمی است پس آنرا به 8192 تغییر می دهیم.
توجه : این تعداد هنگام اجرای اسکریپت ./configure نیز نمایش داده می شود .
checking Maximum number of file descriptors we can open... 1024
برای تغییر این تعداد می توان پارامتر های کرنل ( در /etc/sysctl.conf ) را تغییر داد .
echo "fs.file-max = 64000" >> /etc/sysctl.conf
echo "* soft nofile 8192" >> /etc/security/limits.conf
echo "* hard nofile 8192" >> /etc/security/limits.conf
echo "ulimit -n 8192" >> /etc/profile
اکنون برای اعمال تغییرات کافی است یک بار از سیستم خارج ( logout ) شده و دوباره وارد شوید. ( نیازی به ریستارت کردن نیست .)

تنظیم رنج پورت های Ephemeral :
Ephemeral ports شماره پورت های محلی هستند که پشته tcp/ip به اتصالات خارجی نسبت می دهد. سخت شد نه؟ به زبان ساده تر می توان گفت که وقتی اسکویید با سرروهای در خواست کننده ی اتصال ، ارتباط برقرار می کند کرنل یک شماره پورت به سوکت محلی اختصاص می دهد .که تعداد این شماره پورت ها به طور پیش فرض محدود و در رنج خاصی است . به عنوان مثال در سیستم عامل Free BSD این رنج بین 1024 تا 5000 است . کم بودن این رنج میتواند در کارایی اسکویید های پر ترافیک (صدها درخواست در ثانیه ) تاثیر منفی داشته باشد. زیرا برخی اتصال ها بعد از بسته شدن به حالت TIME_WAIT می روند .و یک شمار پورت ephemeral وقتی اتصال در حالت TIME_WAIT است نمی تواند دوباره استفاده شود .
( شما می توانید تعداد اتصال هایی را که در حالت TIME_WAIT هستند با دستورزیر مشاهده کنید:
netstat –n | grep TIME_WAIT )
برای تغییر تعداد ephemeral port ها می توان از دستور زیر استفاده کرد .
echo "1024 65000" > /proc/sys/net/ipv4/ip_local_port_range
در دستور بالا این رنج را بین 1024 تا 65000 قرار دادیم که به اندازه کافی بزرگ انتخاب شده است .
نصب اسکویید از طریق سورس کد :
خوب بعد از تنظیمات کرنل نوبت به کامپایل و نصب اسکویید است . نصب اسکویید از طریق سورس کد همانند نصب بقیه نرم افزار ها از این طریق است . اگر تا به حال نرم افزاری را از طریق سورس کد نصب کرده اید ور نصب و کامپایل اسکویید نیز مشکلی نخواهید داشت . فقط برای فعال کردن برخی قابلیت های اسکویید نیاز دارید تا با پارامتر ها ی اسکریپت ./configure آن آشنا شوید .
ابتدا سورس کد اسکویید را که به صورت فشرده شده است از وبسایت آن دریافت کنید .به عنوان مثال من آنرا در دایرکتوری /tmp قرار دادم. سپس با فرمان tar –xzvf آنرا از حالت فشرده خارج کنید .
linux-notes:~ # cd /tmp
linux-notes:/ tmp# tar –xzvf squid-2.5.STABLE4-src.tar.gz
خوب حالا می توانید وارد دایرکتوری حاوی فایل های extract شده شوید و به ترتیب اسکریپت های ./configure سپس make و در آخر make install را اجرا کنید .
linux-notes:/ tmp/squid-2.5# ./configure
linux-notes:/ tmp/squid-2.5#make
linux-notes:/ tmp/squid-2.5#make install
اکنون Squid نصب شده است ولی بدون هیچ تغییری در تنظیمات پیش فرض . اگر بخواهید قابلیت های ویژه ای را به اسکویید اضافه کنید باید از پارامتر های مناسب به همراه اسکریپت ./configure استفاده کنید .برای دیدن لیستی از این پارامتر ها به همراه توضیح آنها می توانید از دستور ./configure --help استفاده کنید . در اینجا به برخی از پرکاربردترین این پارامتر ها اشاره کرده و بقیه پارامتر ها در قسمت های بعدی و هنگام فعال کردن قابلیت های مختلف اسکویید بیان می کنیم .
: --enable-delay-pools با این پارامتر می توان قابلیت delay pools را در اسکویید فعال کرد . از این قابلیت می توان برای کنترل پهنای باند برای رنج خاصی از آی پی ها یا برای کاربران خاصی استفاده کرد . بع عتوان مثال می توان پهنای باد آی پی 192.168.0.1 را بین ساعت 8 تا 10 صبح به 10 کیلو بیت بر ثانیه محدود کرد.
--enable-snmp : استفاده از این پارامتر باعث فعال شدن قابلیت snmp شده و تمامی کد های مربوطه از جمله کتابخانه ای مورد نیاز کامپایل و نصب می شود . snmp پروتوکلی است که از آن برای مانیتور کردن دستگاه های شبکه و گرفتن گراف پهنای باند استفاده می شود . برای نصب برنامه mrtg که برنامه ای برای گرفتن گراف از پهنای باند است فعال کردن این ویژگی ضروری است .
--enable-cachemgr -hostname [=hostname] : cache manager یک اسکریپت به زبان cgi است که می توان توسط آن به اسکویید query فرستاد و اطلاعاتی از وضعیت آن بدست آورد. به طور پیش فرض اسم hostname این اسکریپت خالی در نظر گرفته شده است . با این پارامتر می توان اسم hostname مناسب برای آن انتخاب کرد .
به عنوان مثال : ./configure --enable-cachemgr-hostname=linux-notes.sec.net
--enable-arp-acl : برای اعمال محدودیت های گونا گون توسط ACL ها در اسکویید بر روی کارت شبکه باید قابلیت arp-acl را فعال کرد. به عنوان مثال می توان کنترل پهنای باند را بر روی یک کارت شبکه اعمال کرد .
--enable-ssl : اگر در شبکه نیاز به برقراری اتصالات secure socket layer است باید از این پارامتر استفاده کرد .
--enable-auth [=LIST] : در اسکویید می توان بر کاربران مختلف محدودیت هایی اعمال کرد .به عنوان مثال محدودیت در کنترل پهنای باند آنها یا ساعاتی که می توانند به اینترنت متصل باشند . تعریف کردن لیست بزرگی از کاربران در فایل پیکربندی اسکویید علاوه بر پایین آوردن سطح امنیت ، کار نسبتا مشکلی است . با استفاده از این پارامتر می توان از الگوی های authentication لینوکس از جمله ntml و digest استفاده نمود .( به طور پیش فرض فقط الگوی basic فعال است . )
مثال : ./configure --enable-auth=digest,ntlm
--enable-storeio =LIST : نحوه ذخیره سازی فایل های کش شده و سیستم فایل مورد استفاده در کارایی کش اسکویید تاثیر بسزایی دارد . اسکویید از ماژول های مختلفی برای این منظور استفاده می کند . از جمله diskd ، aufs و ... که در حالت عادی از ماژول ufs استفاده می کند که ساده ترین حالت است ولی محدودیت هایی دارد که در برخی مواقع باعث پایین آمدن کارایی کش اسکویید می شود .
مثال : ./configure --enable-storeio=afus,diskd,ufs
دایرکتوری ها و فایل های مربوط به اسکویید :
پس از نصب اسکویید ، دایرکتوری هایی درمسیر های مختلف سیستم ایجاد می شود.که به مهمترین آنها اشاده می کنیم : ( مسیر این فایل ها در توزیع های مختلف یونیکس متفاوت است .)
/etc/squid : در این دایرکتوری فایل های زیر قرار دارد :
squid.conf : که فایل اصلی پیکربندی اسکویید است . که حاوی پارامتر های تنظیم اسکویید و توضیحات زیادی در مورد آنها است . بعد از خواندن توضیحات و تنظیم این فایل با توجه به نیاز های شبکه خودتان بهتر است توضیحات را حذف کنید تا عمل parse کردن آن با سرعت بیشتری انجام گیرد . ( تنظیم این فایل موضوع اصلی پست های بعدی است.)
squid.conf.default : همانطور که از اسم آن پیدا است این فایل یک کپی از تنظیمات پیش فرض اسکویید را در خود دارد . که می تواند در هنگام بروز رسانی نسخه اسکویید یا برگرداندن تغییرات مفید باشد.
mime.conf: این فایل که تغییر آن به ندرت لازم می شود. شامل انوع mimeاست که از از وبسایت های ftp و gopher بازیابی می شود . این فایل حاوی جدولی است که پسوند فایل ها را با این نوع mime ها مقایسه می کند .
Share : این دایرکتوری معمولا حاوی فایل های فقط خواندنی است که اسکویید از آنها استفاده می کند .از جمله این فایل ها می توان به موارد زیر اشاره کرد:
mib.txt :اسکویید خود از این فایل (SNMP Management Information Base ) استفاده نمی کند ولی برنامه های جانبی مانند MRTG ( Multi-Router Traffic Grapgher ) یا snmpget که برای مانیتور کردن اسکویید به کار می روند از این فایل برای شناسائی ابچکت های snmp که از اسکویید قابل دستیابی هستند استفاده می کنند.
share/erros : این دایرکتوری حاوی صفحات error است که به کاربران نمایش می دهد .
var : این دایرکتوری حاوی فایل هایی است که نیازی به تغییر یا پشتیبان گیری از آنها نیست .
var/logs : این دایرکتوری مسیر پیش فرض ذخیره فایل های لاگ است . قبل از اجرای اسکویید این دایرکتوری خالی است ولی با شروع کار اسکویید در صورت انجام تنظیمات لازم دز فایل squid.conf این فایل های لاگ ایجاد می شوند .
var/cache : این دایرکتوری مسیر پیش فرض ذخیره فایل های کش شده است .
اضافه کردن patch :
بعد از مدتی کار با اسکویید احتمالا نیاز خواهید داشت تا برای رفع باگ های احتمالی یا اضافه کردن قابلیت های اضافی به اسکویید patch اضافه کنید . برای اینکار وارد دایرکتوری اسکویید شوید و دستور زیر را اجرا کنید. به عنوان مثال اگر پچ در مسیر /tmp قرار دارد :
squid-2.5 /linux-notes:~ # cd /tmp
linux-notes:/ tmp/squid-2.5# patch < /tmp/patch_file
و سپس دستورات زیر :
linux-notes:~ #make clean
linux-notes:~ #make
کامپایل مجدد اسکویید :
ممکن بعد از مدتی نیاز به کامپایل دوباره اسکویید داشته باشید به عنوان مثال بعد از اعمال تغییراتی در کرنل یا اضافه کردن قابلیت هایی به اسکویید .
برای اینکار از دستور زیر استفاده کنید :
linux-notes:~ #./config.status --recheck
و سپس
linux-notes:~ #make clean
linux-notes:~ #make
توجه : برای برگرداندن حالت اسکویید به حالت قبل از اجرای اسکریپت ./configure می توان از دستور زیر استفاده کرد :
linux-notes:~ #make distclean
خوب اگرچه این پست یه خورده زیاد شد ولی مراحل کامپایل و نصب چند تا دستور بیشتر نبودن . بیشتر توضیحات اضافی بود که در مراحل بعدی خیلی کمک می کنه . در پست بعدی نحوه اجرای اسکویید و تنظیم آن برای کار کردن ( البته در حالت مینیمم )

