יום חמישי, 13 באוקטובר 2011

Bypass Between Networks

באחד הפרויקטים שלי רציתי לממש מחשב בקרה לתעבורה ושליטה על החיבורים ברשת, כלומר מחשב מרכזי בעל 2 כרטיסי רשת , הראשון עבור האינטרנט שמגיע מ Router מרכזי שמשרת גם רשתות אחרות והשני מעביר מידע רק לתא בתוך הרשת , בקיצור חתכתי את הרשת לתא של מחשבים מסויימים שיעברו בקרה של ה Packets לפני שהם עוברים ליעד , בנוסף רציתי להשתמש ב Packet Filter חזק על מנת לסנן את החיבורים, אין ספק שעבור פרויקט מסוג זה אני חייב לעבוד עם Linux.


שימו לב! הפרויקט תוכנן על Virtual Box ומערכת הפעלה מסוג Fedora במחשב הבקרה, מול מחשבי Xp.

על מנת לממש את התהליך ב Virtual Box יש להגדיר מכונה של Linux עם 2 כרטיסי רשת, הכרטיס הראשון מוגדר כ Bridge Adaptor על מנת שנקבל כתובת מה DHCP שמחובר לאינטרנט, הכרטיס השני מוגדר כ Internal Network ומשייך אותו לרשת הפנימית דרך ה Switch של הרשת.

NIC 1


NIC 2


 אחרי שסיימנו להגדיר את ה Virtual Box נפעיל את המכונות הוירטואיליות, תחילה נגדיר את המחשב Linux  ונבין מה אנחנו רוצים שהוא יבצע, למעשה מדובר בכמה פקודות שנעבור עליהם בקצרה:

תחילה נעבור למצב Root במכונה:
#: su root
נכניס סיסמא.

כרגע במכונה יש לנו 2 כרטיסים eth0, eth1 , אם אנחנו מחוברים ל Router עם DHCP ב eth0 נבדוק שהוא קיבל כתובת ושיוצאים לאינטרנט במקרה ונרצה להגדיר את ההגדרות ידנית נפתח את הקובץ:

 #: gedit /etc/sysconfig/network-scripts/ifcfg-eth0

הקובץ צריך להיראות כך:
DEVICE=eth0  //device name
ONBOOT=yes  //start on boot
BOOTPROTO=static  // boot mode static
IPADDR= xxx.xxx.xxx.xxx  // your static ip address
NETMASK= xxx.xxx.xxx.xxx // network mask
GATEWAY = xxx.xxx.xxx.xxx // the router gateway
HWADDR = 00:00:00:00:00:00 //optional mac address

בשלב זה סיימנו את העבודה על eth0 ונגדיר כתובת עבור eth1:
#: ifconfig eth1 10.10.10.1

לא נגדיר Netmask.

נגדיר Ip-Forwarding:
#: sysctl -w net.ipv4.ip_forward=1

הגדרת Ip-Forwarding היא קריטית היא בעצם מאפשרת לנו להעביר Packets ולהפוך ל Gateway בין רשתות.

IPTABLES:

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

תחילה נעשה Flush לחוקים ב Firewall:
#: iptables -F
#: iptables -t nat -F
# iptables -t mangle -F

נעשה Flush ל 3 טבלאות עיקריות , הכללית, של ה Nat ושל Mangle שאחראית על  ה Quality Of Servic  של Tcp  Header.

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

השלב האחרון הוא הגדרת חוקים חדשים ב Iptables שיאפשרו לנו להעביר את ה Packets בין הכרטיסים

#:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

פקודה זו מגדירה לנו את ה Source Nat 

הגדרת ה Forwarding  לכרטיס eth1

#: iptables -A FORWARD -i eth1 -j ACCEPT

זהו מחשב הלינוקס מוכן , נעבור למחשב ה Xp ונגדיר לו כתובת סטטית לדוגמה: 10.10.10.2 וה Gateway הוא הכתובת של המכונת לינקוס 10.10.10.1 , כרגע לא מוגדר לנו שרת DNS ע"ג המכונת Linux אז לא נוכל להגיע לכתובת Domain אלא רק לכתובת IP.

ניתן להגדיר באופן ידני את כתובות ה DNS על מחשבי ה XP במאפייני הרשת או ע"ג מכונת ה Linux ע"י עריכה של הקובץ :

#: gedit /etc/resolv.conf

nameserver xxx.xxx.xxx.xxx

מגניב...

בהצלחה...

3 תגובות:

  1. היי,

    שמחתי למצוא חומר מקצועי מעניין ואיכותי בעברית - דבר שאין הרבה ממנו.

    יש לי בלוג דומה בתחום בשם http://www.softwarearchiblog.com/

    הייתי שמח לשתף פעולה ולהחליף לינקים (נאמר ב side bar).

    אם מעניין אותך - צור קשר עם:
    baronlior[at]gmail[dot]com

    מצטער על דרך התקשורת העקומה - פשוט לא מצאתי דרך אחרת. אנא מחק תגובה זו לאחר הקריאה.

    תודה
    ליאור

    השבמחק
  2. אחלה
    עכשיו תוסיף פוסט המשך איך לעשות את אותו תהליך על לוח embedded שיש לו שני כרטיסי רשת

    השבמחק
  3. זה לא כלכך שונה ממה שמופיע במאמר, מדובר בכלי IPTABLES שהוא חלק מה BuildRoot של מערכת ההפעלה, וניתן להמיר אותו למערכות Embedded שמובססות על ארכיטקטורת שונות.

    השבמחק