ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
magicodeלא בפורום כעת ת.הצטרפות: 07/11/2011 · הודעות: 42 ·
 

הודעה פורסם: 02/09/2014 - 08:18
נושא ההודעה: מסנן חבילות

אני בונה שרת vpn שיהיה מסונן ברמת החבילות.
שאני מדבר מסונן זה לא סינון כמו iptabels זה שינוי תוכן של חבילות, יצירת חבילות חדשות, וזריקה של חבילות.

התקנתי שרת pptp על המחשב. ואני מתחבר ממכונה וירטואלית virtualbox לשרת pptp.
כל חיבור לשרת יוצר interface חדש בשם ppp+ .

זה אומר שיש לי חיבור לנתב/לאינטרנט דרך eth0 ויש לי ppp0.
עכשיו כדי להעביר את מה שיוצא מppp0 ל eth0 ולהיפך עשיתי ככה.

קוד:

net.ipv4.ip_forward=1

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -p tcp --syn -s 192.168.0.0/24 -j TCPMSS --set-mss 1356


עכשיו בשביל לסנן את החבילות. אני צריך שכל מה שעובר ב FORWARD בין eth0 ל ppp0 אני לוקח ושזה לא יעבור הלאה.

אז עשיתי חוק כזה.

קוד:

sudo iptables -A FORWARD -i ppp+ -o eth0 -j NFQUEUE --queue-num 0
sudo iptables -A FORWARD -i eth0 -o ppp+ -j NFQUEUE --queue-num 0


ואני תופס את החבילות ע"י סוקט של NFQ. בתוכנה שכתובה ב C.
כדוגמת זה
https://github.com/prasannabe2004/pcapture/blob/d8f45d8bfbc780ea3b62c28afabb6d9a6247f22e/internet_nfq1.c

עכשיו החבילות לא עוברות הלאה הם רק נקלטות ע"י התוכנה שלי.

עכשיו אם אני רוצה להעביר אותם הלאה. מהתוכנה זה הקושי הגדול שלי.

ניסתי להשתמש בסוקט raw.

ככה.

קוד:


int outfd = socket( AF_INET , SOCK_RAW , IPPROTO_RAW );

struct iphdr *in_iphdr = (struct iphdr *)(buf);
struct sockaddr_in daddr;
daddr.sin_family = AF_INET;
daddr.sin_port = 0 ;
daddr.sin_addr.s_addr = in_iphdr->daddr;
 
rc = sendto( outfd,buf,rc,MSG_DONTWAIT, (struct sockaddr *)&daddr ,(socklen_t)sizeof(daddr));




הבעיה בזה הייתה שחבילות tcp וudp הוא משנה את הפורט מקור ל1. שמתי לב שזה דווקא. באותו זמן שעובר החבילה מה eth0 ל ppp0 . אם אני שומר את התוכן של החבילה. ושולח אותה כעבור זמן. זה נשלח בשלמות בלי שינוי.

אז ניסתי להתנהג כמו ppp0 אמרתי שהרי כל מה שיוצא מppp0 מופנה ואוטומטי למקום הנכון. אז אני יעשה התקן וירטואלי של tap. ואני יוציא משם מה שאני רוצה.

עשיתי התקן וירטואלי ככה.


קוד:


   int nffd = open("/dev/net/tun", O_RDWR);


   struct ifreq ifr;

   memset(&ifr, 0, sizeof(ifr));
   ifr.ifr_flags = IFF_TAP | IFF_NO_PI ;
   strncpy(ifr.ifr_name, "tap0", sizeof(ifr.ifr_name) - 1);
ioctl(nffd, TUNSETIFF, (void *) &ifr) < 0



ונוצר התקן חדש במערכת אני עושה לו up והוא שולח חבילות ואני יכול לראות את זה ב wireshark אבל אין FORWARD בכלל.

כלומר יוצאת חבילה tcp עם כתובת יעד חיצונית וכתובת מקור 192.168.0.100 וזה לא מנותב לשום מקום.


מה אפשר לעשות כדי לסנן ואם למישהו יש אולי רעיון לסנן בלי NFQ אלא לעשות ניתוב רק של ppp0 ל tap0 ו tap0 ל ppp0.

הבנתי שהגדרות ניתוב הם כלליות לפי ip ואין אפשרות לנתב if ספציפי ל if ספציפי.

אשמח לכל עזרה.
תודה מראש.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 02/09/2014 - 11:05
נושא ההודעה:

קצת בכיוון שונה - האם חשבת להשתמש ב bridge ?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
magicodeלא בפורום כעת ת.הצטרפות: 07/11/2011 · הודעות: 42 ·
 

הודעה פורסם: 02/09/2014 - 11:20
נושא ההודעה:

Anonymous :
קצת בכיוון שונה - האם חשבת להשתמש ב bridge ?


נתקלתי בזה. לא הבנתי מה זה אומר. ואיך זה יכול לעזור לי.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 02/09/2014 - 15:37
נושא ההודעה:

אם התוכנה שלך לא מכילה לוגיקה של העברה על בסיס חוקיות אלא רק העבר מהתקן א להתקן ב מספיק לשתף את שניהם תחת bridge (ראה brctl).
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
magicodeלא בפורום כעת ת.הצטרפות: 07/11/2011 · הודעות: 42 ·
 

הודעה פורסם: 02/09/2014 - 15:57
נושא ההודעה:

Anonymous :
אם התוכנה שלך לא מכילה לוגיקה של העברה על בסיס חוקיות אלא רק העבר מהתקן א להתקן ב מספיק לשתף את שניהם תחת bridge (ראה brctl).


אני צריך אפשרות ל
שינוי תוכן של חבילות, יצירת חבילות חדשות, וזריקה של חבילות.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
magicodeלא בפורום כעת ת.הצטרפות: 07/11/2011 · הודעות: 42 ·
 

הודעה פורסם: 02/09/2014 - 16:03
נושא ההודעה:

אני לא הבנתי לגבי הbridge אם צריך bridge בשביל שיהיה forward בין שני התקנים.
איך חבילות מהתקן ppp0 עוברות להתקן eth0 ?
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 03/09/2014 - 09:58
נושא ההודעה:

magicode :
אני לא הבנתי לגבי הbridge אם צריך bridge בשביל שיהיה forward בין שני התקנים.
איך חבילות מהתקן ppp0 עוברות להתקן eth0 ?


התקן גשר דומה לhub פיזי (ethernet hub) שאתה מחבר עליו כמה התקנים (לא משנה מה התוכן), כל הודעה שנששלחת בכל צד תעבור לצד השני.

אתה לא חייב את זה , זה רק פתרון נוח יותר מפעולת forward.

[quote="magicode"]
אני צריך אפשרות ל
שינוי תוכן של חבילות, יצירת חבילות חדשות, וזריקה של חבילות.
[/qoute]

אני לא יודע איך אפשר לבצע זאת באמצעות ה birdge עצמו אבל אני חושב שאם אחד ההתקנים יבצע זאת כבר (זרוק מבט איך openvpn עובד) אז לא תהיה שום בשיתוף ההתקנים.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. magicode
  2. אורח
  3. magicode
  4. אורח
  5. magicode
  6. magicode
  7. אורח