مسیریابی بر اساس پارامترهای خاص
[b]مسیریابی بر اساس پارامترهای خاص[/b]
یکی از مسائلی که در بحث مسیر یابی در Router ها وجود داره ، استفاده از تکنیک های مسیریابی با استفاده از پارامتر های خاصی است ( به طور کلی Policy Routing گفته میشه ) . این پارامتر ها می توانند پارامتر های متنوعی باشند . به عنوان مثال مسیریابی بر اساس مبدا ، بر اساس TOS ، بر اساس پروتوکل مانند TCP یا UDP یا خیلی پارامتر های دیگر که در هر Packet وجود داره و شما می تونید بر اساس اونها تصمیم بگیرید .
به عنوان مثال در مورد مسیریابی بر اساس مبدا ( که یک نمونه پر کاربرد هستش و بر اساس همین نمونه می تونید بقیه رو هم متوجه بشید ) پارامتری که در مسیریابی مورد توجه قرار می گیرد مبدا تولید Packet می باشد .
فرض کنید یک Packet دست Router شما رسید ، در حالت عادی هر Router یه جدول مسیریابی ( Routing Table ) دارد که آدرسهای مقصد در آن به همراه مسیر آنها موجود است . در آخر این جدول یک گزینه Default Route وجود دارد که در صورتیکه آدرس مقصد در جدول مسیریابی پیدا نشد بر اساس مسیر Default Route عمل می کند . پس همانطور که می بینید همه تصمیمها بر اساس آدرس مقصد گرفته می شود و در مسیریابی عادی هیچ راهی برای تصمیم گیری بر اساس خصوصیات خود Packet نیست . به این معنا که همه یا شما مقصد آنرا می شناسید و بر اساس مسیر آن، آنرا هدایت می کنید ، یا اینکه در جدول مسیر یابی مسیر به خصوصی برای آن پیدا نمی کنید و آنرا تحویل مسیر Default Route خودتان می دهید .
حالا فرض کنید که شما یک دستگاه Router دارید ( خیال نکنید منظورم از Router مثلا Cisco یا دستگاه خاصی هستش ، router به مفهوم کلی می تواند یک دستگاه کامپیوتر معمولی هم باشد ) و دو ارتباط به اینترنت از طریق دو ISP مختلف و می خواهید از هر دوی این ارتباطات استفاده کنید . مشکلی که در این حالت عادی مسیر یابی وجود دارد این است که شما در مسیر یابی معمولی تنها می توانید یک default route داشته باشید ( حالا یا ملقمه ای از چند default route هنگامیکه Balance انجام می دهید ) در حالیکه در اینجا شما باید درخواستهایی که از مبدا آدرس های مربوط به هر کدام از ISP ها ایجاد شده را از طریق همان ISP مسیریابی کنید . پس ملاحظه می کنید که در اینجا مهمترین عامل در مسیریابی آدرس مبدا هستش . ( این حالت رو Source Routing هم می گویند )
حالا فرض کنید که Router شما یک دستگاه [url="http://www.cisco.com/"]Cisco[/url] باشد . این کار با راحتی با دستوراتی شبیه به زیر قابل انجام است :
[left]
route-map ISP permit 10
match ip address ISP1-ACCESS-LIST
set ip default next-hop ISP1-GATEWAY
!
route-map ISP permit 20
match ip address ISP2-ACCESS-LIST
set ip default next-hop ISP2-GATEWAY
!
[/left]
در اینجا شما باید یک access-list درست کنید که در آن مشخص کنید که آدرسهایی که از سمت ISP1 برای شما اختصاص یافته است چیست ( همچنین ISP2 ). سپس با گذاشتن IP Address مربوط به Gateway سرویس دهنده ISP1 می توانید دستور زیر را برای فعال سازی عمل Source Routing انجام دهید ( همچنین ISP2 ):
[left]
interface FastEthernet0/0
description Connected to Local Area Network
ip policy route-map ISP
....
[/left]
حال فرض کنید شما از یک دستگاه [url="http://www.linux.org/"]Linux[/url] برای این کار استفاده کنید . به همین سادگی یک rule ایجاد کنید :
[left]
ip ru add from ISP1-IP-CLASS/BITMASK to 0/0 table 101 pref 101
ip ru add from ISP2-IP-CLASS/BITMASK to 0/0 table 102 pref 102
[/left]
حالا می خواهیم source routing رو فعال کنیم :
[left]
ip route add table 101 via ISP1-GATEWAY
ip route add table 102 via ISP2-GATEWAY
[/left]
دیدید این Linux چه خدائیه تو این قضیه . به نظر من مفهمومش خیلی از Cisco قشنگتره در این زمینه .
حالا FreeBSD رو داشته باشد . در [url="http://www.freebsd.org/"]FreeBSD[/url] همه این گونه اعمال توسط IPFilter انجام میشه . در حقیقت از یک زاویه دیگه به مساله نگاه کرده که نسبت به دید Cisco و Linux فرق داره .
فرض می کنیم که در etc/rc.conf/ گزینه ipfilter_enable=YES رو دارید . حالا با اضافه کردن دو خط به etc/ipf.rules/ کار تمام است :
[left]
pass in quick on de0 to fxp0:ISP1-GATEWAY from ISP1-IP-CLASS/BITMASK to any
pass in quick on de0 to fxp1:ISP2-GATEWAY from ISP2-IP-CLASS/BITMASK to any
[/left]
کار تمام است . این هم برای خودش خدائی هستش . دقت کنید که در اینجا فرض کردم de0 در حقیقت interface مربوط به Local Area Network شما است و fxp0 هم Interface مربوط به ISP1 هستش و fxp1 هم مربوط به ISP2 هستش .
منبع: [url]http://weblog.iranetsol.com[/url]
نویسنده: حمید هاشمی