26-06-2012, 20:47
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,776
|
|
טוב, אז ככה.
בעצם, אותנו מעניינת רק התעבורה שלא הולכת ל DGW (כי זו שכן, אנחנו פשוט לא נוגעים - נותנים לה לזרום כפי שהיא.)
לא ברור ממה שכתבת, אז אני אניח ש 192.168.183.1 הוא ה DGW הנוכחי, והוא היחיד שיישאר כברירת מחדל. אתה תבחר אם להחליף את זה בהתאמה להוראות ההמשך.
גם לא ברור לי מה הסיפור של האזנה ל 8080 או 80 (?!) אבל זה לא ממש משנה, כי מה שמעניין אותנו זה מאיזה פרוקסי יוצאים החיבורים, ולא איך הגיעו אליו.
כמו כן, לא כתבת באיזה יוזרים רצים כל אחד מה squid-ים (שמת לב שכתבתי שהם צריכים לרוץ בשני יוזרים שונים, נכון?) - לכן אניח שהיוזרים הם squid עבור זה שיוצא כרגיל דרך ה DGW שאני הגדרתי שרירותית שהוא 192.168.183.1, ושהיוזרים האחרים, הם המוגבלים, עוברים דרך squid שרץ תחת שם המשתמש squid-restricted.
אנחנו צריכים להתחיל ביצירת טבלת ניתוב חלופית, שאליה אפשר יהיה להפנות את התעבורה המבוקשת. ניצור הגדרה של טבלה שהמזהה שלה יהיה (שרירותית) 250, ושמה יהיה wan2 (גם שרירותית) :
קוד:
echo "250 wan2" >> /etc/iproute2/rt_tables
ניצור בטבלה זו חוק ניתוב עבור ה GW של המשתמשים המוגבלים:
קוד:
/sbin/ip route add default via 192.168.183.2 table wan2
נצבע את התעבורה שיצאה מהמשתמש squid-restricted לכיוון ממשק ה WAN בלבד עם המזהה 2 (שרירותית).
קוד:
/sbin/iptables -t mangle -I OUTPUT -o eth0 -m owner --uid-owner squid-restricted -j MARK --set-mark 0x2
אחרי שצבענו את כל התעבורה שהגיעה מהמשתמש squid-restricted עם המזהה 2, אנחנו מעוניינים שהקרנל ידע שתעבורה שסומנה כך, יש להשתמש עבורה בטבלת הניתוב המיוחדת שיצרנו, wan2:
קוד:
/sbin/ip rule add prio 200 fwmark 0x2 lookup wan2
כדי לוודא שכל מה שהכנסנו נראה תקין, ניתן להשתמש בפקודות הבאות (ואם לא עובד, דיבוג יהיה באמצעות הפלט שלהן, אז, צרף אותו) :
קוד:
/sbin/ip route show table wan2
/sbin/iptables -t mangle -L OUTPUT -vn
/sbin/ip rule
אני חושב שזהו.
לאחר שתסיים, תוכל לעשות su ליוזר squid-restricted, להריץ משם traceroute נניח ל 8.8.8.8 ולראות אם הוא יוצא החוצה דרך 192.168.183.2 כפי שאתה מצפה...
הצרה היא שלא ממש בדקתי את כל מה שכתבתי כאן. הכל בשלוף...
|