יום חמישי, 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

מגניב...

בהצלחה...