מבוא
למי המדריך מיועד ?
שרת הפרוקסי שאציג במדריך זה מתאים לארגונים מכל הגדלים ולמשתמשים פרטיים המעוניינים במערכת המספקת את היתרונות הבאים :
- האצת מהירות הגלישה תוך חיסכון של כ- 40% בניצול רוחב פס האינטרנט, על ידי ביצוע Caching לאתרים בהם ביקרו המשתמשים.
- מנגנון המאפשר שליטה וניתור הגישה לאינטרנט.
- מנגנון לחסימת תחנות, משתמשים, אתרים ספציפיים ואתרים המכילים מילות מפתח שנקבעו מראש.
- מערכת הפקת דוחות מפורטים על האתרים שביקרו בהם המשתמשים עבור כל מחשב, עבור הארגון כולו ועבור כל אתר בו ביקרו משתמשים.
- מערכת ניתור ביצועי השרת והפקת דוחות המסכמים את נתוני הגלישה.
תפקיד שרת פרוקסי
שרת הפרוקסי משמש כמתווך בין המשתמשים לאינטרנט, כל בקשות הגלישה של המשתמשים מנותבות אליו והוא עונה לבקשות בהתאם למדיניות שנקבעה. במידה והבקשה מאושרת השרת בודק בטבלת קבצי ה- Cache האם האובייקט המבוקש נמצא בספריית ה –.Cache במידה וכן, השרת בודק את זמן התפוגה של אותו אובייקט (Expiration Time), במידה והאובייקט עדיין בר-תוקף השרת משתמש בו.
במידה והאובייקט אינו נמצא בספריית ה- Cache או שפג תוקפו, השרת מוריד אותו מהאינטרנט, מאחסן אותו בספריית ה – Cache ועונה לבקשת הלקוח. כפי שציינתי הבקשות מאושרות או נדחות בהתאם למדיניות שנקבעה. שרת פרוקסי שיוצג במדריך זה מאפשר גמישות רבה בקביעת המדיניות, ניתן לחסום אתרים על ידי שימוש במילות מפתח (כגון : Sex, MP3), ניתן לחסום את הגישה לאינטרנט בהתבסס על שמות Host או כתובות IP. ניתן לאפשר גישה לאתרים מסוימים רק לחלק מהתחנות ולחסום את הגישה לשאר.
כפי שניתן להבין האפשרויות רבות ומאפשרות כמעט כל קומבינציה בין אתרים, קבצים ותחנות המשתמשים.
Squid
שרת Squid הינו שרת פרוקסי מבוסס קוד פתוח, המיועד לשרתי לינוקס ויוניקס. Squid נחשב לאחד משרתי הפרוקסי המובילים בעולם בזכות הגמישות הרבה והיציבות המאפיינים אותו. ניתן למצוא שרתי Squid בארגונים גדולים וחברות ISP, שם הם משרתים נאמנה אלפי משתמשים.
לשרת Squid יש מוניטין של שרת בעל מגוון עשיר של תצורות. במאמר זה אני אציג תצורת שרת אשר יכולה להתאים לרוב הארגונים או המשתמשים הפרטיים, והיא יכולה לספק בסיס מצויין לתצורות רבות אחרות.
זכויות יוצרים
כל הזכויות שמורות (C)
[2004] [אבינועם לבקוביץ] המדריך נכתב על ידי אבינועם לבקוביץ Avinoam_AT_Rambam.health.gov.il
הערת המחבר
אשמח לקבל משוב ולשמוע את דעתך על המדריך בכתובת Avinoam_AT_Rambam.health.gov.il
חומרה :
להלן מספר דגשים בנוגע לחומרה הדרושה להקמת שרת פרוקסי משובח:
דיסק קשיח:
הדיסק הקשיח נושא ברוב העומס, כל תהליך ה – Caching מתבצע על הדיסק הקשיח וכתוצאה מכך ביצועי השרת מושפעים ישירות מביצועי הדיסק. אחד הפרמטרים החשובים הינו מהירות הגישה של הדיסק (Disk random seek time ),פרמטר זה מייצג את מהירות שליפת הנתונים מהדיסק וכפי שכבר ציינתי כל תהליך ה –caching מבוצע על הדיסק כך שלפרמטר זה יש השפעה ישירה על מהירות התגובה של השרת לבקשות המופנות אליו. כיום לדיסקים מסוג IDE יש ביצועים טובים כך שניתן לבנות שרת פרוקסי מצוין בעזרת דיסקים IDE, מה שמוזיל מאוד את עלויות השרת. מומלץ להקצות דיסק נפרד לשימוש ה –Cache ולהשתמש בדיסק נוסף לשאר המחיצות של מערכת ההפעלה. גודל הדיסק לשימוש ה –Cache משתנה בהתאם לצרכי הארגון, גודלו וכמות התעבורה של המשתמשים. מכיוון שעלות דיסקים מסוג IDE הינה נמוכה מאוד רצוי להשתמש בדיסק גדול ( 40GB נחשב גדול ) ובכך להבטיח אפשרות גידול עתידי של המערכת.
זיכרון(RAM):
על מנת ששרת הפרוקסי יוכל לבדוק במהירות מרבית האם האובייקט המבוקש נמצא ב - Cache שלו, שרת הפרוקסי מתחזק בזיכרון הראשי את טבלת האובייקטים המאוחסנים בספריית ה –Cache . נתון זה הינו קריטי לביצועי השרת, במידה ולא מתאפשרת גישה מהירה לטבלה הנ”ל (במידה וחלק מהטבלה נמצא ב- swap file ) אנו נהיה עדים לירידה דראסטית בביצועי השרת, מכיוון שהזמן שייקח לשרת לשלוף את הנתונים מה- swap file הינו גדול מאוד ביחס לזמן שליפת הנתונים המאוחסנים בזיכרון הראשי (RAM).
קצת מספרים: על מנת לחשב את גודל הזכרון שהמערכת זקוקה לו יש לקחת בחשבון את הנתונים הבאים:
- הגודל הממוצע של אובייקט ב- Cache הינו 17K.
- כל אובייקט ב- Cache דורש כ- 100 Byte בזיכרון הראשי (RAM).
- מערכת עם Cache בגודל 12GB יכולה לאחסן כ- 700K אובייקטים.
המסקנה : גודל הזיכרון (RAM) הדרוש למערכת עם Cache בגודל 12GB הינו מינימום.128MB מומלץ להשקיע בזיכרון לפי העיקרון של יותר זיכרון - יותר טוב, הדבר בהחלט יורגש בביצועי השרת.
מעבד (CPU):
שרת הפרוקסי אינו זקוק למעבד חזק, עיקר השימוש במעבד הינו לשליפת אובייקטים. מה – Cache ובבניית טבלת האובייקטים בזיכרון בזמן האתחול (פעולה המאמצת את המעבד אך לזמן קצר בלבד) מעבד Pentium 200MHZ אמור לספק את המערכת , אך בעידן של מעבדים מהירים רצוי להשתמש במעבד חזק יותר.
תוכנה :
RedHat 9 : המדריך נכתב תוך שימוש ב- RedHat,אך ניתן להקים את שרת הפרוקסי (Squid)
עם כל הפצה אחרת, במקרה כזה יש לשנות את המסלול לקבצים השונים המתוארים במדריך זה כך שיתאים להפצה בה הינך משתמש. בכל שאר החלקים ההתקנה זהה.
המלצה: מכיוון ששרת הפרוקסי זקוק לרכיבים בסיסיים בלבד של מערכת לינוקס מיותר להתקין התקנה מלאה אשר תגזול משאבי מערכת. מומלץ להסתפק בהתקנה מותאמת (custom installation) של שרת הלינוקס.
הערה: על מנת להשיג ביצועים מרביים רצוי להקצות דיסק נפרד עבור המחיצה שתאחסן את ספרית ה- Cache. במדריך זה אני אשתמש בברירת המחדל של המערכת המגדירה את ספריית ה -Cache במסלול /var/spool/squid/ , ולכן המחיצה var/ תמוקם בדיסק נפרד.
Apache: שרת האינטרנט המגיע בחבילת ההתקנה של RedHat 9
Squid: שרת הפרוקסי המגיע בחבילת ההתקנה של RedHat 9
Calamarisx: חבילת תוכנה זו מנתחת את קבצי הלוג של שרת הפרוקסי ומייצרת דוחות פרטניים של ביצועי השרת וסיכומים בנוגע לצורות הגישה, שעות שיא וכ”ו.
Sarg : חבילה זו מספקת מערכת הפקת דוחות מפורטים בנוגע להרגלי הגלישה של המשתמשים תוך דגש על פירוט האתרים אליהם גלשו המשתמשים, רשימת האתרים הפופולאריים ביותר ועוד.. המערכת מספקת דוחות יומיים שבועיים וחודשיים בפורמטHTML.
התקנה
מערכת ההפעלה :
בסיום התקנת Redhat, יש לוודא את ההגדרות במספר קבצים בסיסיים.
הקובץ etc/hosts/: הקובץ etc/hosts/ מכיל מיפוי של שמות host לכתובות IP. קובץ hosts לדוגמא :
קוד PHP:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.1.4 S-Proxy.My-Domain S-Proxy
השורה הראשונה הינה הכרחית לפעילות השרת ובשום מקרה אין למחוק אותה.
בשורה השנייה מוגדר שרת הפרוקסי, יש לשנות את הפרמטרים הנ”ל כך שיתאימו לשרת המותקן.ולכתוב את השורה בפורמט:
קוד PHP:
< Server IP Address> < Server Host name> < Server name>
הקובץ etc/resolv.conf/: קובץ זה מכיל את כתובות ה – IP של שרתי ה – DNS שישמשו את שרת הפרוקסי. קובץ etc/resolv.conf/ לדוגמא :
קוד PHP:
search
nameserver 192.168.1.48
nameserver 212.150.48.168
עבור כל שרת DNS יש להגדיר שורה חדשה בקובץ בפורמט :
קוד PHP:
nameserver < DNS server IP >
התקנת החבילה squid: החבילה הדרושה להתקנת שרת הפרוקסי, נמצאת בתקליטורי ההתקנה של RedHat. על מנת לוודא שהחבילה אכן מותקנת, יש להריץ את הפקודה :
קוד PHP:
# rpm -qa | grep squid
במידה ושרת הפרוקסי הותקן במערכת אנו נקבל פלט בסגנון : squid-2.5.STABLE1-2 במידה ולא התקבל פלט. שרת הפרוקסי אינו מותקן במערכת ועלינו להתקין אותו מתקליטור ההתקנה הראשון של RedHat.
קובץ ההגדרות squid.conf
הקובץ etc/squid/squid.conf/ : זהו קובץ ההגדרות הראשי של שירות squid. הקובץ הינו גדול ומורכב ומכיל כ – 140 הגדרות שונות והסברים מפורטים לגבי כל הגדרה. עבור רוב ההגדרות בקובץ קיימת אפשרות ברירת מחדל שתתאים בערך ב- 92.9% מהמקרים. כך שעל מנת שהשרת יפעל בתצורה הבסיסית יש צורך לשנות רק מספר קטן של הגדרות. לאחר ביצוע שינויים בקובץ יש לאתחל את שירות squid על מנת שהשינויים שביצענו יכנסו לתוקף.
המלצה :רצוי לעבוד עם הקובץ squid.conf במשנה זהירות. תוך ביצוע מספר שינויים קטן ואתחול השירות squid על מנת לבדוק את השינויים הללו. במידה ומבוצעים בקובץ שינויים רבים יתכן שאתחול שירות squid לא יצליח וקשה יהיה לדעת מה מהשינויים שביצענו גורם לבעיה. בכול מקרה מומלץ בחום לגבות את הקובץ המקורי לפני ביצוע השינויים הבאים.
גיבוי קובץ ההגדרות המקורי: מומלץ לגבות את קובץ ההגדרות המקורי לפני ביצוע השינויים, כך שבמידה והעניינים מסתבכים נוכל תמיד לחזור לנקודת ההתחלה. לביצוע הגיבוי יש להריץ את הפקודה הבאה :
קוד PHP:
cp /etc/squid/squid.conf /etc/squid/squid.conf.orig
לאחר ביצוע הגיבוי יש לפתוח את הקובץ etc/squid/squid.conf/ בעורך האהוב עליך. וקדימה, בואו נתחיל לעבוד.
הגדרת הפורט אליו יאזין שירות squid :
TAG: http_port הגדרה זו קובעת לאיזה פורט יאזין שרת הפרוקסי. ניתן לבחור כל פורט פנוי מעל 1024,כך שיש אפשרות לבחור מספר יותר ידידותי לסביבה מברירת המחדל 3218,ההגדרה השכיחה הינה 8080 מטעמי נוחות מובנים. שרת squid יכול להאזין למספר פורטים במקביל כך שניתן להשאיר את ברירת המחדל ולהוסיף את פורט 8080. במקרה כזה יש לשנות את הגדרת ברירת המחדל:
קוד PHP:
#Default:
# http_port 3128
ולהוסיף את פורט 8080!
קוד PHP:
#Default:
http_port 3128 8080
תחלופת האובייקטים ב- Cache.
TAG: cache_swap_low (percent, 0-100)l
TAG: cache_swap_high (percent, 0-100)l
פרמטרים אלו מסמנים ל squid את נפח הדיסק באחוזים שספריית ה- Cache יכולה למלא לפני ש -squid יתחיל לבצע תחלופה של אובייקטים, הגדרת ברירת המחדל הינה:
קוד PHP:
#Default:
# cache_swap_low 90
# cache_swap_high 95
המשך בהודעה הבאה :
[IMG]http://www.iatraf.co.il/image/gif,GIF89a%12%00%12%00%B3%00%00%FF%FF%FF%F7%F7%EF%CC%CC%CC%BD%BE%BD%99%99%99ZYZR UR%00%00%00%FE%01%02%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00 %00%21%F9%04%04%14%00%FF%00%2C%00%00%00%00%12%00%12%00%00%04X0%C8I%2B%1D8%EB%3D% E4%00%60%28%8A%85%17%0AG*%8C%40%19%7C%00J%08%C4%B1%92%26z%C76%FE%02%07%C2%89v%F0 %7Dz%C3b%C8u%14%82V5%23o%A7%13%19L%BCY-%25%7D%A6l%DF%D0%F5%C7%02%85%5B%D82%90%CBT%87%D8i7%88Y%A8%DB%EFx%8B%DE%12%01%00% 3B[/IMG]