פרוייקט סינון אינטרנט :: עדכון 1
-
זה לא סוד שאני עובד על סינון אינטרנט חופשי ופתוח.
בניתי פרוקסי משוכלל שמסנן למי שלא ראה אפשר לראות פה.
https://github.com/magicode/NetFreeפניתי לחברת תקשורת שיטמיעו את זה אצלהם במערכת. אך בעיקר בעיקבות קושי בידיעה איך להטמיע את הפרוקסי בצורה שקופה. זה עד היום לא הוטמע.
עכשיו אני בונה מודל חדש של סינון על אותה מערכת . רק שהסינון יהיה מבוסס על חבילות תקשורת. בשכבה 3. זה עובד בצורה שאני קולט את שכבה 2 כמו ש wireshark קולט לפני שהחבילה מגיע לשכבה 3. ואני מוציא חבילה בלי שזה עובר דרך שכבה 3.
בשביל לראות את המבנה של השכבות אפשר לצפות כאן.
http://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svgשכבה 2 זה Link Layer שם אני קולט ושולח חבילות.
החבילות בשכבה 2. בנויות ממסגרת של 14 בתים 6x2 בתים מיצגים כתובות mac של מקור ויעד.ועוד 2 בתים שמיצגים את הסוג של התוכן , אפשר לשלוח חבילה עם איזה תוכן שרוצים. לאיזה כתובת mac שרוצים. למשל אם אני בוחר לשלוח בחיבור eth0 לשלוח לראוטר חבילה שבכתובת יעד זה 1 ולראוטר מחובר מחשבים דרך כבל נניח 4 מחשבים או דרך אלחוטי. אז אם הוא לא יודע מי מהמחשבים שמחוברים אילו זה mac 1 הוא ישלח את ההודעה לכולם. ומי שיחזיר לו תשובה עם כתובת מקור mac 1 אז הוא ידע שזה הוא והוא ישלח בפעם הבאה רק אליו.
ככה מתנהלת התקשורת דרך הרשת הפנימית וגם דרך הרשת החיצונית שמתחברים לספק. יש לספק כתובת mac שלשם שולחים את החבילות והוא שולח אותם הלאה. לפי התוכן של החבילה.
אני עשיתי שאם הוא קולט חבילה שבאה ממקור של כתובת mac ספציפית הוא שלוח את זה לשרת udp פנימי. כאילו עוטף את החבילה בudp. ושולח.
וגם הוא מאזין על פורט וip פנימי בפרוטוקול udp והוא מקבל חבילות לשליחה. כל מה שהוא מקבל הוא שולח ישר לשכבה 2.מה שיוצא שאני עושה תוכנה שמקבלת חבילות ושולחת חבילות . אם אני מקבל חבילה ולא שולח אז החבילה לא תגיע ליעד. אם כל חבילה שאני מקבל אני שולח אז יהיה גלישה רגילה לגמרי. בדקתי זה אותו מהירות או דבר בדיוק.
ממשתי את פרוקטול tcp בצורה בסיסת.
בצורה שהוא מחכה לחבילה הראשונה שיש בה מידע והוא בודק איזה סוג זה אם זה http אז הוא פותח 2 סוקטים.
עם הנתונים של החבילה סוקט אחד של התוכנה של הסינון מול הקלינט וסוקט אחד של התוכנה מול השרת.
וככה הוא עושה pipe בין הסוקטים כמו פרוקסי כזה. ואפשר דרך זה לסנן מה שרוצים.המימוש לא כזה מוצלח זה קצת איטי אבל הצלחתי לשפר את זה. בהתחלה זה היה מוריד 0.10Mbps לעומת 5.5 ברגיל.
למי שלא מכיר פרוטוקל Tcp מאפשר להעביר תקשורת זרימה בטוחה על גבי תקשורת חבילות לא בטוחה.
כלומר ששלוחים חבילה באינטרנט אין ודאות שהיא תגיע ליעדה לכן צריכים מנגנון שמקבל אישור על השליחה. ואם יש תקלה לשלוח שוב. וזה בעצם מה שפרוטוקול tcp עושה מאוחרי הקלעים.הוא שולח סדרה של חבילות ומחכה לאישור על כולם.
http://he.wikipedia.org/wiki/Transmission_Control_Protocol
מה אתם אומרים איך הייתם מציעים להתקדם עם זה.
תודה.
פורסם במקור בפורום CODE613 ב26/03/2014 15:17 (+02:00)