تنظیماتIP و شبکه در گنو / لینوکس

در هرشبکه بطورمعمول نخستین لایه یعنی سخت افزار از یک کارت شبکه یا اترنت تشکیل شده و برای اینکه این کارت بعنوان یک رابط درمحیط شبکه بکارگرفته شود بایستی اولا آدرس واحدی تحت عنوان IP address به آن اختصاص یافته و ثانیا"بسته ها یا packet های اطلاعاتی برای رسیدن به این رابط مسیر دهی شوند که به این عمل routing گفته میشود.

در اغلب توزیعهای لینوکس راههای خاصی برای انجام تنظیمات رابط یا کارت شبکه گنجانده شده که در اینجا روش ساده استفاده از فرامین متنی در محیط shell   بررسی میشود :

باید دانست که هسته یا کرنل سیستم عامل لینوکس بطورپیش فرض از یک رابط مجازی یا loopback interface  (lo) بعنوان یک ابزار مجازی برای ارتباط با خود سیستم استفاده میکند .

این ابزار مجازی بطور معمول IP  127.0.0.1 و نام localhost را برمی گزیند و در هنگام بوت سیستم بطور ازپیش تعریف شده فعال میگردد .

قسمت اصلی سخت افزار شبکه یک رایانه کارت شبکه network interface میباشد که در محیط گنو/لینوکس معمولا با اسامی  eth0   یا  eth1  و ... بسته به تعداد کارتهای شبکه متصل به سیستم آدرس دهی و نامگذاری میشود.

برای تنظیم IP   یک کارت شبکه بافرض اینکه این کارت اولین و تنها کارت شبکه نصب شده در سیستم است تنها چیزی که لازم داریم برنامه ifconfig  (interface configure) میباشد و میبایست بعنوان مثال از دستور زیر در محیط shell  با مجوز کاربر ریشه استفاده کنیم :

 

/sbin/ifconfig eth0 192.168.3.9 broadcast 192.168.3.255 netmask 255.255.255.0 #

 

همانطوریکه ملاحظه میشود در اینجا یک IP  کلاس C  شامل آی پی اختصاص یافته به کارت شبکه 192.168.3.9  و یک پوشانه زیر شبکه کلاس c شامل 255.255.255.0 به کارت شبکه ما eth0   اختصاص می یابد . و آی پی broadcast  نیز شامل IP خاصی است که کلیه کامپیوترهای شبکه به آن پاسخ  میدهند و معمولا آخرین شماره آی پی یک کلاس شبکه میباشد .

در ادامه برای بررسی صحت عملیات انجام شده و عملکرد کارت شبکه از دستور ifconfig  به تنهائی استفاده کرده و پاسخ سیستم را که چیزی مشابه زیر خواهد بود مشاهده میکنیم :

/sbin/ifconfig #

 

eth0

Link encap:Ethernet HWaddr 00:00:E8:3B:2D:A2

inet addr:192.168.3.9 Bcast:192.168.3.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:1359 errors:0 dropped:0 overruns:0 frame:0

5 TX packets:1356 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

Interrupt:11 Base address:0xe400

Lo

Link encap:Local Loopback

10 inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:3924 Metric:1

RX packets:53175 errors:0 dropped:0 overruns:0 frame:0

TX packets:53175 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

دراین گزارش حتی آدرس سخت افزاری کارت شبکه eth0 هم  مشخص شده 00:00:E8:3B:2D:A2 که در نوع خود با توجه با سادگی دستورات داده شده نتایج جالبی به نظر میرسد .

در این مرحله کارت شبکه فعال گردیده و آماده بکار میباشد و چون هیچ چیزی وجود ندارد که به هسته لینوکس بگوید که کدام بسته اطلاعاتی ارسال شده برروی شبکه به کدام کارت شبکه ارائه شود میبایست در ادامه برای آدرس دهی routing اینترفیس مربوطه در شبکه از دستور زیر یا مشابه آن باتوجه به آی پی مورد نظر هر کاربر استفاده کرد :

/sbin/route  add  -net  192.168.3.0  netmask  255.255.255.0  eth0 #

و سپس برای تست کردن این دستور  از فرمان rout –n  میتوان بهره گرفت که بایستی نتایج مشابه زیر را دربر داشته باشد :

 

# /sbin/route -n

 

Kernel IP routing table

Destination        Gateway        Genmask                 Flags      Metric     Ref     Use    Iface

127.0.0.0           0.0.0.0          255.0.0.0                 U           0            0         0       lo

192.168.3.0       0.0.0.0          255.255.255.0          U           0            0         0       eth0

 

شکل کامل دستورات مسیر دهی به شرح زیر میباشد که برای اختصار توضیحات بیشتر داده نمیشود :

# /sbin/route add -net <network-address> netmask <netmask> gw <gateway-ip-address> <interface>

یا به طور خلاصه :

# /sbin/route add default gw <gateway-ip-address> <interface>

 

# /sbin/route add -net 0.0.0.0 netmask 0.0.0.0 gw <gateway-ip-address> <interface>

 

این نتایج به این معناست که کلیه packet  های دارای آدرس مقصد 127.0.0.0   و زیر شبکه 255.0.0.0  بایستی به اینترفیس مجازی سیستم یا localhost ارسال و کلیه packet  ها با مقصد 192.168.3.0/255.255.255.0 میبایست به نخستین کارت شبکه سیستم  eth0  ارسال شوند .

بدیهی است که انجام این تنظیمات در هر بار راه اندازی سیستم کاری خسته کننده و ملال آور خواهد بود و به همین لحاظ کلیه توزیع کننده های لینوکس از روش startup scripting  برای خودکار سازی این روند بهره جسته اند . شما میتوانید تنظیمات Ip  و netmask  و gateway  و hostname  و ... سایر تنظیمات شبکه را در اسکریپتها و فایلهای  راه انداز موجود در مسیرهای زیر مشاهده و بنا به دلخواه خود تنظیم نمائید :

 برای کارت شبکه اول

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network

/etc/init.d/network

/etc/rc.d/init.d/network

برای کارت شبکه دوم

/etc/sysconfig/network-scripts/ifcfg-eth1

 

نکته :

درتوزیعهای لینوکسی مثل دبیان debian linux مسیر فایلهای پیکربندی و اسکریپتها کمی متفاوت است که بطور اختصار در زیر آورده شده است :

 

/etc/network/interfaces

/etc/network/options

/etc/init.d/networking

نکته : Interface aliasing

اگر ما فقط یک کارت شبکه داشته باشیم و بخواهیم چندین شماره آی پی به آن اختصاص دهیم روش کار بسیارساده خواهد بود . برای اینکاراز دستور ifconfig  استفاده کرده و کارت شبکه را به سادگی  eth0:n  نامگذاری میکنیم و بجای حرف n هر عددی را از صفر با بالا میتوانیم اختصاص دهیم . و در این مورد محدودیتی در استفاده از دستور از نظر تعداد وجود ندارد و هرچند بار که بخواهیم میتوانیم آنرا تکرار و آی پی جدیدی را به کارت اختصاص دهیم .

مثالی برای شکل کلی دستورات به شرح زیرمیباشد :

/sbin/ifconfig eth0:0 192.168.4.1 broadcast 192.168.4.255 netmask 255.255.255.0

/sbin/ifconfig eth0:1 192.168.5.1 broadcast 192.168.5.255 netmask 255.255.255.0

/sbin/ifconfig eth0:2 192.168.6.1 broadcast 192.168.6.255 netmask 255.255.255.0

بطور کلی اختصاص چند آدرس آی پی به یک اینترفیس شبکه در مواردی صورت میگیرد که یک کارت بخواهد همزمان با چند شبکه LAN  ارتباط برقرار کند و نبایستی فراموش کرد که پس از اختصاص یک آی پی جدید بایستی مسیردهی صحیح به این شبکه های جدید  یا همان  routing  بصورت فوق الذکر بدرستی صورت پذیرد .