مسابقه 1 – Static Routing

سلام.
تصمیم داریم هر از گاهی مسابقه‌ای برگزار کنیم و با طرح سوالات مفهومی (نه بر اساس سناریوی configuration یا تکنولوژی Vendor خاصی)، و به بهترین پاسخ‌ها جایزه‌ی ناقابلی تقدیم کنیم. سوالات هم مختلف خواهد بود، گاهی احتمالاً خیلی ساده اما پایه‌ای، گاهی هم ممکنه مربوط به مباحث پیشرفته و جدید، یا حتی از مطالب وبلاگ.
امیدواریم که با پیش‌بردن این وبلاگ و اینگونه موارد اندک قدمی در راستای تعالی شبکه‌ها! در کشور عزیزمان داشته باشیم.

این مسابقه به اتمام رسیده و پاسخ سوالات با توضیحات زیر هر سوال درج شده است.
جهت اطلاع از مسابقات آتی لطفاً عضو خبرنامه وبلاگ و کانال تلگرام شبکه‌ها! شوید.

و اما اولین مسابقه:

  1. آیا بهتر است روت Static به سمت next-hop نوشته شود و یا به سمت Interface؟ چرا؟
    عرف پیاده‌سازی Static Routing به سه صورت است:
    • استفاده از Interface خروجی: در این حالت، در پیاده‌سازی اغلب وندورها روتر فرض را بر Connected بودن مقصد گذاشته و  در جدول مسیریابی Route را با Administrative Distance صفر درج می‌کند که در Best Practice های امروز اتفاق جالبی نیست.
      مهم تر از همه، استفاده از پورت خروجی، باعث ARP lookup های متعدد شده و در لینک‌های Broadcast منجر به پخش شدن بیهوده‌ی ترافیک ARP می‌شود. فرض کنید برای یک subnet بزرگ مثل 10.0.0.0/8، که احتمالاً شامل host های متعددی خواهد بود، روتر برای هر host یک lookup کند، و یک entry در ARP Table اضافه کند؛ این امر نه تنها باعث استفاده غیربهینه از Memory شده، بلکه تاثیر بسازیی در افزایش CPU Utilization تجهیز خواهد داشت.
    • استفاده از next-hop: در این حالت نسبت به مورد قبل، صرفاً یک ARP Entry برای یک Subnet بزرگ ثبت می‌شود اما فرض کنیم که به دلیلی پورتی که next-hop توسط آن reachable بود down شود؛ در این حالت درصورت وجود یک route برای آن next-hop، روت از جدول مسیریابی حذف نمی‌شود چرا که روتر بصورت recursive عمل مسیریابی به مقصد اصلی را انجام می‌دهد (که معمولاً اینکار ناخواسته هست، چرا که در این شرایط احتمالاً استفاده از Dynamic Routing Protocol ها استفاده می‌شد).
      این امر حتی ممکن است برخلاف سیاست‌های امنیتی باشد چرا که مثلاً ممکن است در مسیر next-hop، یک IPS یا فایروال یا هر تجهیزی که در لایه‌ی Network Interface (لایه 2 OSI) عملی روی packet انجام می‌داده bypass شود. همچنین در چنین شرایطی، روتر می‌بایست دائماً برای پیدا کردن next-hop جدول مسیریابی را بررسی کند که امری ناخواسته است. (نکته: فرض کنید در شبکه‌ای که بدرستی طراحی نشده، next-hop پس از down شدن interface، در Routing Table بصورت recursive با یک route دیگر match شود و packet به جایی فرستاده شود، که نباید!)
    • ترکیبی از هر دو مورد: در این حالت حتی اگر interface مرتبط با next-hop به هردلیلی down شود و next-hop توسط یک مسیر دیگر بصورت recursive قابل دسترسی باشد، Route از Routing Table حذف می‌شود و هیچکدام از معایب روش‌های قبل رخ نمی‌دهد. ضمناً این نوع تنظیم، در پیاده‌سازی اغلب وندورها همچون مورد قبل دارای Administrative Distance یک خواهد بود. این مورد نکته‌ی اصلی سوال و جواب مدنظر ما بود که کمتر به آن اشاره شد.
  2. فرض کنید در شبکه‌ی زیر، روی روتر R0 قصد دارید یک Static Route برای 10.0.0.0/8 تنظیم کنید. بهینه‌ترین حالت تنظیم این روت چگونه خواهد بود؟

در این سوال با توجه به ترسیم ساختار بصورت point-to-point، حتی با اینکه پورت xe یعنی 10GigabitEthernet، اما استفاده از هر سه حالت از لحاظ عملکرد و بار روی تجهیز تفاوتی ایجاد نخواهد کرد (بجز یک ARP Entry درصورت استفاده از interface که در دنیای امروز قابل چشم‌پوشی است)؛ اما شاید از دیدگاه نگهداری و مدیریت configuration، استثنائاً در این حالت استفاده از Next-hop به تنهایی بهتر باشد؛ شاید در شرایطی Network Engineer مسئول این شبکه، مجبور شد پورت تجهیز را تعویض کند، و لذا با توجه به استفاده از Next-hop، نیازی به پاک کردن و تنظیم روت جدید نخواهد بود. البته هر سه پاسخ قابل قبول است.
برخی دوستان اشاره کرده بودند که استفاده از /31 اشتباه است چرا که در این حالت Net ID و Broadcast Address درنظر گرفته نشده است. این تصور متاسفانه اشتباه هست. اینجا یک مطلب خوب در اینباره نوشته شده است. کلاً استفاده از /31 در این شکل هیچ دلیل خاصی نداشت و صرفاً جهت آشنایی و شاید اضافه کردن نمک به سوال بود 🙂

لطفاً پاسخ خود به هردو سوال را بعنوان نظر درج کنید. نظرات بمدت 48 ساعت از زمان انتشار مطلب منتشر نخواهند شد.
به اولین پاسخ کامل جایزه‌ی ناقابلی تعلق خواهد گرفت.

بروزرسانی 30 آبان

فکر می‌کنم شروع خوبی داشتیم و استقبال مناسبی شد، برای همین اول از همه از 34 عزیزی که در مسابقه شرکت کردند تشکر می‌کنیم.
برخی از پاسخ‌ها طولانی و حقیقتاً فاصله‌دار از جوابی بود که مدنظر ما بود. برخی از پاسخ‌ها نیز کلاً در رابطه با Static Routing و موارد دیگر توضیح داده اند اما به نکات اصلی سوال و یا جواب سوال دوم اشاره‌ای نشده بود.
پاسخ سوال همراه با توضیحات مناسب با رنگ سبز زیر هر سوال درج شده اند.

سه پاسخ نزدیک بهم و تقریباً درست دریافت کردیم، که باعث سخت شدن انتخاب بود، اما نهایتاً این پاسخ از آقای Mahmood Sebtonabi صحیح‌تر از دیگران بود و ایشون برنده‌ی اولین مسابقه‌ی شبکه‌ها هستن که با ایشون توسط ایمیل مکاتبه می‌کنیم.

بروزرسانی 16 آذر

در تصویر زیر آقای محمود سبط النبی برنده این مسابقه رو در کنار یادگاریِ خیلی خیلی ناقابل مسابقه می‌بینین.

ضمناً برای مطلع شدن از مسابقات بعدی فراموش نکنین که عضو خبرنامه وبلاگ و کانال تلگرام شبکه‌ها! بشین 🙂

نویسنده: محمّد مقدّس

مسافر. عکاس تفریحی طبیعت. فرشته‌سرمایه‌گذار. هواخواه #رمزارز و Blockchain. ساکن اینترنت. معمار و مشاور شبکه/امنیت در AT&T. در حال ساختِ زیگ.

44 دیدگاه برای “مسابقه 1 – Static Routing”

  1. با سلام. در لینک های پوینت تو پوینت مثل لینکهای سریال، صرفا اعلام اینترفیس خروجی کافیست. چون آن طرف لینک قطعا یک دریافت کننده وجود داره.
    اما در لینکهایی که ماهیت مالتی اکسس دارند، مثل اترنت، اعلام اینترفیس خروجی کافی نیست و روتر باید بداند بسته را به چ مقصدی بفرستد برای همین نیاز به آدرس آی پی مقصد وجود دارد.

    1. با عنایت به آدرس دهی لینک که /31 است. یعنی لینک لین دو روتر پوینت تو پوینت است. بنابراین میتوان به درج اینترفیس خروجی بسنده کرد.

  2. سلام مهندس.
    ممنون بابت زمانی که برای نشر علمتون قرار میدید.
    به نظر من باید روت استاتیک به سمت next hob نوشته بشه چون اگه سمت اینترفیس روتر خودمون بنویسیم که به سمت روتر بعدی نمیره!
    به نظر من اینجوری بنویسیم:
    destination add:10.0.0.0/8
    gateway:12.12.12.1

  3. قطعا next-hop
    یک دلیل میتونه این باشه که اگر next-hop رو مشخص نکنیم روتر هر بار که میخواد جریانی رو بدست مقصد برسونه بایذ arp بزنه و اصلاعات لایه دو مقصد رو بگیره در حالی که اگر next-hop مشخص باشه هر بار نیاز به arp نیست
    ضمن اینکه وقتی out int میدهیم که لینک p2p باشد و غیر از این مجبوریم next-hop بدهیم

  4. Hi
    In summary
    If you configured static route pointed to next hop IP address, for every destination forwarding router requires only L2 address of next hop IP address to rewrite the L2 frame

    If you configured static route point to outgoing interface, forwarding router assume destination address is directly connected to that interface and router will try to find the L2 address of the destination by sending ARP request out of the interface to the destination address in case of Ethernet or looking for a static/dynamic map entry in the mapping table in case of frame-relay.

  5. به دو دلیل استفاده از next-hop بهتره:
    1-در صورت استفاده از int و دان شدن روتر مقصد ، آن روت از جدول روتینگ پاک نمی شود و ولید باقی می ماند.
    2-در صورت استفاده از int باعث ایجاد پکت های arp زیاد و در نتیجه بار زیاد روی لینک و cpu روتر مبدا خواهد شد.

  6. بنظرم بهتر است که از ip next hop استفاده شود بدلایل زیر exit interface مناسب نیست
    1-ممکنه است arp مسدود شده باشد و دسترسی به شبکه مورد نظر امکان پذیر نباشه
    2- روت زمانی به روتینگ تیبل اضافه میشه که اینترفیس آپ باشه
    3-ممکن است arp flood cache پیش بیاد

  7. 1-به سمت next-hop چون ممکن است شبکه Multi-access باشد و روتر ما به چند روتر متصل شده باشد

    2- Ip route 10.0.0.0 255.0.0.0 12.12.12.1

  8. برای سوال دوم ظاهرا شما subnet لینک رو درست انتخاب نکردین.یکی از آدرس های لینک subnet number و اون یکی broadcast محسوب خواهد شد.

  9. جواب سوال 1 : کار بهینه برای استاتیک روت تنظیم بروی next hop می باشد و آدرس آن چرا که ممکن است پورت ما در لایه 2 upباشد ولی ارتباط لایه 3 با next hop نداشته باشیم.
    2:
    ip route 10.0.0.0 255.0.0.0 12.12.12.1

  10. 1-در شبکه های که مطمئین هستیم لینک ارتباطی مستقیم میباشد با زدن next hop with interfaceاز arp lockup اضافی جلوگیری میشود
    ولی در شبکه های که broadcast میباشد پیشنهاد میشود از ip addressاضافه شود زیرا ممکن چندیدن روتر و سویچ در ان شبکه باشد و همه دریافت خواهند کرد
    2-با توجه به subnet در نظر گرفته شده بهتر است از ip route 10.0.0.0 255.0.0.0 xe/1/0استفاده شود

  11. بهترین حالت استفاده از next hop است زیرا اگر اینترفیس قطع شود بایستی روت ۱۰/۰/۰ از روتینگ تیبل حذف شود

  12. 1-بهترین حالت نوشتن روت به سمت next hopeاست چرا ممکن است آن اینترفیس به علت مشکلی در دسترس نباشد اما اگر بر روی next hope نوشته شود روتر می تواند از طریق اینترفیس دیگری به آدرس مقصد دسترسی داشته باشد
    2-ip route 10.0.0.0 255.0.0.0 12.12.12.1

  13. 1) کاملا بستگی به شرایط دارد.هنگامی که ساختار به صورت خطی باشد و در طرف مقابل یک مسیر برای رسیدن به مقصد باشد، بهتر است روت به interface باشد، اما در حالتی که در طرف مقابل برای رسیدن به مقصد چند مسیر وجود داشته باشد، بهتر است آدرس Next hop مناسب نوشته شود.
    2) در این حالت چون ساختار خطی است بهتر است از حالت interface استفاده شود
    ip route 10.0.0.0 255.0.0.0 xe 0/1

  14. 1. آیا بهتر است روت Static به سمت next-hop نوشته شود و یا به سمت Interface؟ چرا؟
    البته بستگی دارد به اینک ارتباط p2p باشد یا multi-point .
    روتر برای ارسال بسته به سمت مقصد باید اینترفیس خروجی را مشخص و L2 Frame را بازنویسی کند. برای نوشتن L2 frame باید آدرس ip سمت مقابل را بوسیله ARP پیدا کند.
    حالا اگر Static route به next hop IP address باشد تنها نیاز به MAC آدرس سمت مقابل داریم.
    اما اگر static route به سمت اینترفیس خروجی باشد روتر فرض می کند که آدرس مقصد بصورت directly connected به روتر سمت مقابل متصل است پس با ارسال ARP request به دنبال MAC Address آن می گردد.
    در اینترفیس های p2p بدلیل اینکه دو تا روتر بصورت مستقیم به هم متصل هستند فرقی ندارد که شما static route رو به سمت Next-hop address میزنید یا اینترفیس خروجی چون روتر از MAC اینترفیس سمت مقابل برای تمام مقاصد استفاده می کند.
    اما در اینترفیس های Multipoint مانند Ethernet در صورتی کی static route به سمت اینترفیس خروجی باشد چندین ip می توانند به این دستگاه connected باشند. بنابرین برای هر prefix روتر نیاز دارد تا L2 and L3 resolution انجام دهد.
    ->For point to point interfaces, you can use static routes that point to the interface or to the next hop address. There is only one possible next hop and its L2 address will be used to build L2 frame.

    ->For multipoint/Broadcast interfaces, it is more suitable to use static routes that point to a next hop address to avoid the need for resolving every destination address to its L2 address. As you have seen above it is still possible to use static routes pointing to the interface but not a scalable solution.
    2. فرض کنید در شبکه‌ی زیر، روی روتر R0 قصد دارید یک Static Route برای ۱۰٫۰٫۰٫۰/۸ تنظیم کنید. بهینه‌ترین حالت تنظیم این روت چگونه خواهد بود؟

    Ip route 10.0.0.0 255.0.0.0 12.12.12.1

  15. Best practice cisco ine ke next hop ha be sorat ip next hop bashe va ham be sorat interface khoroji ba ham
    Chera ke dar barkhi mavarede faghat ip next hop mizarim momkene next hop fail beshe vali ye route ba mask kamtar bashe ba in match beshe va route down nemishe va agar masir back up bashe switch nemikone.
    Refrence : book ip routing in xr /xe/ios Ip route 10.0.0.0 255.0.0.0 12.12.12.1 xe 0/1/

  16. ١.به سمت next-hop، چون ممکنه ارتباط point-to-multipoint داشته باشیم.
    ٢. ip route 0.0.0.0 0.0.0.0 12.12.12.1

  17. بهتر است كه به سمت ip رىتر همسايه زده شود زيرا اگر interface ما دو تا ip داشته باشد و روتر مقابل در رنج secondry ip باشد ، وقتي روي interface روت زده شود با ip primary ترافيك خارج مي شود و به مشكل خواهيم خورد

  18. جواب سوال ۱ . بستگی به نوع شبکه دارد که ptp باشد با Ethernet در حالت اول بهتر است interface باشد حالت دوم next-hop
    جاب سوال ۲. Next-hop به سمت ۱۲.۱۲.۱۲.۱

  19. سلام.فکر میکنم بهینه ترین حالت نوشتن next-hop هست.
    به این دلیل که اگر لینک ما از جنس point-to-point بود. خیلی فرق نمیکرد. چون ما آدرس دهی لایه دو نداشتیم و به خاطر ذاتش خیلی فرقی بین نوع نوشتنش نبود و هرچی میفرستاد اون طرف میگرفت. ولی اگر غیر این مسئله باشه و از شبکه های به عنوان مثال ethernet استفاده بشه. با توجه به اون توضیحات و نیاز به آدرس لایه دو و ارسال arp بهتر هست از آدرس next-hop استفاده بشود….
    سپاسگزارم ازتون بابت این وقتی که میگذارید.

  20. 1- بهتر است به سمت Next-Hop نوشته شود زيرا در صوتي كه روت نوشته شده با Multi access روبرو شد دچار سردرگمي نشود و همچنين سرعت مسيريابي به دليل مشخص نمودن دقيق روتر بعدي بالاتر مي باشد
    2- ip route 10.0.0.0 255.0.0.0 interface Xe 1/0

  21. ۱- برای روت استاسیک next-hop بهتر است چرا که با کمی آینده نگری این احتمال وجود دارد که نیاز به روتینگ برای رنج نتورک های دیگری نیاز گردد.
    ۲- امکان نوشتن روت نخواهیم داشت چرا که subnet ۳۱ برای دو سمت اینترفیس ها قابل قبول نمیباشد و علت آن هم این است که در subnet /۳۱ بشتر از ۲ آدرس IP نمیتوان داشت که این دو آدرس هم برای NetID و Broadcast حذف میشود.

  22. ضمن سلام و تشکر از کار خوبتون.
    به نظر من تو لینک های ptp تفاوت خاصی بین حالت next-hop یا interface وجود نداره چون اون سر لینک فقط یک دیوایس وجود داره ، اما توحالت ptmp بهتره که از next-hop استفاده بشه که هر دفعه برای هر مسیر روتر درگیر arp نشه .تو حالت اینترفیس حتما باید اینترفیس خروجی آپ باشه تا روت نوشته شده تو روتینگ تیبل قرار بگیره ضمن اینکه تو این حالت روتر فکر میکنه روت نوشته شده به اینترفیس دایرکت کانکت هستن که ممکنه تو واقعیت اینطور نباشه . تو حالت next-hop اول روتر باید از تو جدول روتینگش بتونه اینترفیس خروجی رو پیدا کنه بعد هم با arp بتونه مک دیوایس مقابل رو کشف کنه و پکت رو نهایتا پس از reassemble کردن فوروارد کنه.
    نهایتا بهتره تو استاتیک روت اینترفیس خروجی و نکست هاپ رو با هم مشخص کنیم. البته تو لینکهای ptp مثل سریال اینترفیس ها نیازی نیست حتما نکست هاپ هم معرفی بشه.
    در جواب سوال دوم نکست هاپ و اینترفیس استفاده بشه
    IP route 10.0.0.0 255.0.0.0 12.12.12.1 xe0/1

  23. پاسخ 1: بهتر است static route به next hop نوشته شود. ممکن است سوییچی بعد از روتر ما وود داشته باشد که بعد از آن سوییچ دو مسیر متفاوت برای ما وجود داشته باشد، با توجه به این موضوع packet در مسیریابی دچار اختلال میشود. همچنین در بحث sub-interface ها هم اگر route به اینترفیس نوشته شود مسیریابی به درستی صورت نمیپذیرد.

    پاسخ2: ip route 10.0.0.0 255.0.0.0 12.12.12.1

  24. سلام
    امیدوترم بتونم منظورم و درست برسونم
    در مدل اول که ما next hop رو فرض میکنیم ما اگه به این صورت پیکربندی کنیم برای فروارد کردن پکت ها روتر به ادرس لایه دو ایی نیاز داره
    در مدل دوم که ما outgoing interface رو فرض میکنیم (( forwarding router assume destination address is directly connected to that interface and router will try to find the L2 address of the destination by sending ARP request out of the interface to the destination address in case of Ethernet or looking for a static/dynamic map entry in the mapping table in case of frame-relay ))

    در این سناریو چون point to point پیکربندی شده تفاوتی نداره که با next hop پیکربندی شه یا با outgoing interface به این دلیل که روتر ها از آدزس لایه دو ایی استفاده میکنن برای ارسال پکت به مقصد

  25. 1- بهتر: Static به سمت next-hop
    اگر روت به سمت next-hop نوشته شود در این صورت روتر از ARP برای پیدا کردن MAC آدرس آن سمت لینک برای برقرای ارتباط استفاده خواهد کرد. (در این حالت آدرس next-hop باید در جدول مسیر یابی باشد که خوب چون directly connected میباشد، در جدول نیز خواهد بود)
    اگر روت به سمت interface نوشته شود روتر شبکه مورد نظر را ARP خواهد کرد که در این صورت آدرس MAC روتر هایی (روتر هایی که در آنها Proxy Arp فعال است به این درخواست ARP پاسخ خواهند داد) را که به شبکه مورد نظر دسترسی دارند در ARP Tableخود نگه خواهد داشت. – این کار برای شبکه های point-to-point خوب است چون یک next-hop در طرف دیگر داریم ولی در شبکه هایی مثل broadcast باعث اشغال حجم ARP Table میشود.(در این روش نیز زمانی روت مورد استفاده قرار خواهد گرفت که inteface در حالت up باشد. همچنین اگر شبکه از نوع broad cast باشد باید proxy arp روی بقیه فعال باشد.)

    2- ip route 10.0.0.0 255.0.0.0 12.12.12.1
    البته میتوان از هر دو (inteface و next-hop) استفاده کرد.

    نکته: اگر ارتباط بین دو روتر point-to-point می باشد، گزینه مناسب استفاده از interface است. چون مطمعن هستیم که در طرف مقابل فقط یک روتر داریم. ولی اگر لینک broadcast باشد گزینه مناسب استفاده از interface به همراه next-hop میباشد.(چرا؟ چون اگر فرضاً در آینده روتر R0 مسیری به شبکه 12 داشته باشد و لینک مابین R0وR1 از دست رود با وجود اینکه لینک از دست رفته باز از static route نوشته شده استفاده خواهد شد که به 12.12.12.1 اشاره می کند! – چراکه شبکه 12 در جدول مسیر یابی موجود است.)
    استفاده از interface به همراه next-hop مانع وقوع این حالت خواهد شد.

    پی نوشت:
    منظور از شبکه 12: روت به 12.12.12.1 :
    12.0.0.0
    12.12.0.0 و …

  26. جواب۱: بهتر است به اینترفیس زده بشه چون احتمال اینکه next hop تغییر کند هست یا وسط به روتر جدید گذاشته شود

    جواب۲: به صورت زیر
    ip route 10.0.0.0 255.0.0.0 12.12.12.0

  27. Ip route 172.16.0.0 255.255.0.0 Ethernet 0
    Ip route 172.16.0.0 255.255.0.0 192.168.1.2

    اما یکی از تفاوت های اصلی این دو فرمان در نحوه نمایش route مورد نظر در routing table است. برای مشاهده static route های به تنهایی می توان از فرمان show ip route static استفاده کرد. هنگامی که از exit interface استفاده شود ، router به شکل Directly Connected در routing table نمایش داده می شود

    Prefix/mask is directly connected, exit-interface example: 172.16.0.0/24 is directly connected, Serial1/0

    اما زمانی که از next-hop استفاده شود ، route مورد نظر در جدول routing به شکل زیر نمایش داده می شود :

    prefix [AD/metric] via ip-next-hop example : 15.1.1.0 [1/0] via 172.16.0.2

    همانطور که از مثال بالا مشخص است metric مربوط به static route ها برابر صفر و AD آنها برابر 1 می باشد. اما علاوه بر نحوه نمایش ، استفاده از interface و next-hop در نوشتن static routes تفاوت های محسوسی با یکدیگر دارد. هنگامی در نوشتن static route از next-hop استفاده شود روتر به طور پیش فرض هر 60 ثانیه یکبار next-hop را چک می کند و در صورت عدم دریافت جواب route را از routing table حذف می کند . برای تغییر این زمان می توان از فرمان زیر استفاده کرد.

    Ip route static adjust-time number

    در دستور فوق ، number عددی بین 1 تا 60 ثانیه است. در صورت استفاده از exit-interface تنها زمانی route از routing table حذف می شود که exit interface به نحوی fail شود ( به طور مثال interface مربوطه shutdown شود).

    Static route هایی که به یک interface اشاره می کنند از طریق RIP ، EIGRP و سایر Dynamic Routing Protocol ها advertise خواهد شد بدون توجه به اینکه از فرمان redistribute static برای آن routing protocol ها تعریف شده باشد. دلیل این آنست که این interface به عنوان directly connected در نظر گرفته می شوند و در این حالت دیگر به عنوان یک static route مطرح نخواهند شد. به هر حال ، یک static route که در یک فرمان network تعریف نشده باشد ، قابل advertise کردن نمی باشد مگر اینکه از فرمان redistribute static استفاده کنیم.

    همانطور که اشاره شد در نوشتن static route می توان هم به exit interface ( مثل Serial0) و هم next-hop استفاده کرد. با استناد بر Cisco همیشه استفاده از next-hop به جای exit interface پیشنهاد می شود . در صورتی که static route به یک broadcast interface مثل Ethernet اشاره کند route مربوط به آن تنها زمانی در routing table قرار می گیرد که interface مربوط به آن up باشد. به علاوه router فرض می کند محدوده تمام ip هایی که از طریق static route اشاره شده به صورت directly connect هستند و روتر برای ارسال به هر destination که در static route به آن اشاره شده است یک ARP ارسال می کند. در این حالت روتر می بایست برای استفاده از proxy-arp تنظیم شده باشد. نمونه چنین route زیر می باشد :

    Ip route 0.0.0.0 0.0.0.0 Ethernet 0

    در صورتی که packet های زیادی برای دستیابی به destination های کثیری از این فرمان استفاده کنند ، CPU Utilization روتر بسیار بالا می رود و یک جدول arp cache بسیار بزرگ ایجاد می شود که می تواند حتی روتر را overload کند . اضافه کردن numerical address و به بیان واضح تر IP مربوط به next-hop دو مزیت عمده دارد. یکی از ارسال arp ها جلوگیری می کند. و دو اینکه در صورت down شدن آن interface از طریق recursive route سعی در پیدا کردن route دسترسی به آن ip می کند. برای نوشتن این نوع route می بایست که interface و next-hop هر دو نوشته شوند. مثال آن در زیر نوشته شده است.

    Ip route 0.0.0.0 0.0.0.0 Ethernet 0 172.16.0.2

    استفاده از exit interface به تنهایی فقط زمانی پیشنهاد می شود که نوع interface خروجی point-to-point می باشد. یکی از مرسوم ترین point-to-point interface ها serial interfaceها می باشد.

    یکی از مهم ترین نکاتی که در باید به آن پرداخت بیان تفاوت AD در static route در اشاره به interface و یا next-hop است. در اکثر مقالات نوشته شده که در static route هایی که به interface اشاره می کنند ، به دلیل اینکه به شکل directly Connected در routing table نمایش داده می شوند و چونکه AD مربوط به Directly Connected برابر با صفر است پس این static route ها نیز دارای metric صفر می باشند. اما این جمله همیشه صادق نیست. از IOS نسخه 12.2 تمامی static route ها دارای metric 1 هستند. اثبات این موضوع با استفاده دستورات وارد شده در router و خروجی آن نشان داده شده است.

    R1(config)#ip route 11.0.0.0 255.0.0.0 Serial1/0
    R1(config)#ip route 13.0.0.0 255.0.0.0 172.16.1.2
    R1(config)#do show ip route
    S 11.0.0.0/8 is directly connected, Serial1/0
    S 13.0.0.0/8 [1/0] via 172.16.0.2
    R1(config)#do sh ip route 11.0.0.0
    Routing entry for 11.0.0.0/8
    Known via “static”, distance 1, metric 0 (connected)
    Routing Descriptor Blocks:
    * directly connected, via Serial1/0
    Route metric is 0, traffic share count is 1
    R1(config)#do sh ip route 13.0.0.0
    Routing entry for 13.0.0.0/8
    Known via “static”, distance 1, metric 0
    Routing Descriptor Blocks:
    * 172.16.0.2
    Route metric is 0, traffic share count is 1

    یکی دیگر از کاربرد های static route استفاده در کنار Dynamic routing protocol می باشد و یک route جایگزین و redundantرا در صورت down شدن مسیر advertised شده معرفی می کند که در اصطلاح به آن floating static route گفته می شود . در حالت عادی static route ها دارای Administrative Distance (AD) عدد 1 می باشند که مقدم بودن آنها را بر Dynamic Routing Protocols را اثبات می کند. در صورتی که شما AD مربوط به route نوشته شده را به عدد بیشتری از AD مربوط به Dynamic route اختصاص دهید در صورت fail شدن آن route از از static route نوشته شده استفاده می کند. بطور مثال فزض کنید شما از پروتکل EIGRP در شبکه خود استفاده می کنید که دارای AD برابر با 90 می باشد . در صورتی که شما AD مربوط به static route خود را به عددی بزرگتر از 90 قرار دهید می تواند نقش floating route را برای شما ایفا کند. همانطورکه می دانید محدود قابل اختصاص AD عددی بین 0 تا 255 می باشد . اما به این نکته داشته باشید که اختصاص AD عدد 255 آن route رو به عنوان Unreachable route در نظر گرفته می شوند و لذا این route هیچگاه در routing table قرار نمی گیرد. برای تعیین metric مربوط به static route مورد نظر تنها نیاز است تا در ادامه دستورات قبلی ، عدد metric مورد نظر وارد شود.

    Ip route 172.16.0.0 255.255.0.0 192.168.1.2 150

    با کمک کلمه name می توان برای route یک نام تعیین کرد. استفاده از نام تعیین شده کمک می کند تا زمانی که route های زیادی داریم به راحت تر آنرا در configuration file پیدا کنیم. مثال زیر کاربرد این فرمان را نشان می دهد.

    ip route 172.0.0.0 255.0.0.0 10.0.0.1 name Tehran2Shiraz
    show running-config | in Tehran2Shiraz

    استفاده از کلمه permanent در ip route این امکان را می دهد که در صورت shutdown شدن exit interface همچنان route در routing table باقی بماند و remove نشود.

    ip route 10.1.1.1 255.255.255.255 serial0 permanent

  28. جواب سوال ۱ باید برای اینتر فیس بنویسیم
    جواب سوال ۲ اگر امنیت روت برامون مهم نیست میتونیم ار روتر ۰ شروع کنیم روتینگ بنویسم که از پورت ۰/۰ اگر آپی ۰.۰.۰.۰ اومد ارجاع بده به پورت ۰/۱ بعد تو پورت ۰/۱ مینویسیم اگر ایپی ۰.۰.۰.۰ اومد ارجاع بده به آی پی ۱۲.۱۲.۱۲.۰ در روتر بعدی هم مشابه همین کارو میکنیم
    نکته: آپی ۰.۰.۰.۰ به این معنا استفاده شد که هر آپی که اومد

  29. یکی از مقوله های بسیار کاربردی و پایه در زمینه routing در IOS سیسکو ، نوشتن static route می باشد. کابرد های static route بسیار زیاد است اما پرکاربردترین آن زمانی است که شما برای فرستادن ترافیک به یک destination از یک routing protocol استفاده نمی کنید و یا routing protocol شما یک feasible route به آن مقصد ندارد. برای نوشتن static route باید به configuration mode رفته و مطابق با دستور زیر آن را نوشت:

    Ip route prefix mask { next-hop | interface [ip address] } [disctance] [name next-hop-name] [permenant]

    در ساده ترین حالت برای نوشتن یک ip route نوشتن سه مشخصه از این دستور اجباری می باشد .

    * 1.Prefix
    * Mask .2
    * Next-hop | interface .3

    برای نوشتن یک دستور ip route ساده تنها نیاز است که فرمان ip route را نوشته و ابتدا آدرس network و یا host مقصد (prefix) را وارد کنیم. در ادامه باید که subnet mask مربوط به مقصد (mask) را نوشت.
    لازم به تذکر است که برای یک host خاص باید که subnet mask مربوط به آن را 255.255.255.255 بنویسیم .
    در صورتی که subet خود را برای ip یک host هر subnet بجز /32 وارد شود پیغام خطای %Inconsistent address and mask نشان داده خواهد شد . در گام بعدی می بایست ip address مربوط به روتر next-hop و یا interface که packet ها می توانند برای رسیدن به next-hop استفاده کنند نوشته شود.
    دستور زیر یک مثال ساده از نوشتن Ip route می باشد :

    Ip route 172.16.0.0 255.255.0.0 Ethernet 0
    Ip route 172.16.0.0 255.255.0.0 192.168.1.2

    اما یکی از تفاوت های اصلی این دو فرمان در نحوه نمایش route مورد نظر در routing table است. برای مشاهده static route های به تنهایی می توان از فرمان show ip route static استفاده کرد. هنگامی که از exit interface استفاده شود ، router به شکل Directly Connected در routing table نمایش داده می شود
    Prefix/mask is directly connected, exit-interface example: 172.16.0.0/24 is directly connected, Serial1/0

    اما زمانی که از next-hop استفاده شود ، route مورد نظر در جدول routing به شکل زیر نمایش داده می شود :
    prefix [AD/metric] via ip-next-hop example : 15.1.1.0 [1/0] via 172.16.0.2

    همانطور که از مثال بالا مشخص است metric مربوط به static route ها برابر صفر و AD آنها برابر 1 می باشد. اما علاوه بر نحوه نمایش ، استفاده از interface و next-hop در نوشتن static routes تفاوت های محسوسی با یکدیگر دارد. هنگامی در نوشتن static route از next-hop استفاده شود روتر به طور پیش فرض هر 60 ثانیه یکبار next-hop را چک می کند و در صورت عدم دریافت جواب route را از routing table حذف می کند . برای تغییر این زمان می توان از فرمان زیر استفاده کرد.

    Ip route static adjust-time number

    در دستور فوق ، number عددی بین 1 تا 60 ثانیه است. در صورت استفاده از exit-interface تنها زمانی route از routing table حذف می شود که exit interface به نحوی fail شود ( به طور مثال interface مربوطه shutdown شود).

    Static route هایی که به یک interface اشاره می کنند از طریق RIP ، EIGRP و سایر Dynamic Routing Protocol ها advertise خواهد شد بدون توجه به اینکه از فرمان redistribute static برای آن routing protocol ها تعریف شده باشد. دلیل این آنست که این interface به عنوان directly connected در نظر گرفته می شوند و در این حالت دیگر به عنوان یک static route مطرح نخواهند شد. به هر حال ، یک static route که در یک فرمان network تعریف نشده باشد ، قابل advertise کردن نمی باشد مگر اینکه از فرمان redistribute static استفاده کنیم.

    همانطور که اشاره شد در نوشتن static route می توان هم به exit interface ( مثل Serial0) و هم next-hop استفاده کرد. با استناد بر Cisco همیشه استفاده از next-hop به جای exit interface پیشنهاد می شود . در صورتی که static route به یک broadcast interface مثل Ethernet اشاره کند route مربوط به آن تنها زمانی در routing table قرار می گیرد که interface مربوط به آن up باشد. به علاوه router فرض می کند محدوده تمام ip هایی که از طریق static route اشاره شده به صورت directly connect هستند و روتر برای ارسال به هر destination که در static route به آن اشاره شده است یک ARP ارسال می کند. در این حالت روتر می بایست برای استفاده از proxy-arp تنظیم شده باشد. نمونه چنین route زیر می باشد :

    Ip route 0.0.0.0 0.0.0.0 Ethernet 0

    در صورتی که packet های زیادی برای دستیابی به destination های کثیری از این فرمان استفاده کنند ، CPU Utilization روتر بسیار بالا می رود و یک جدول arp cache بسیار بزرگ ایجاد می شود که می تواند حتی روتر را overload کند . اضافه کردن numerical address و به بیان واضح تر IP مربوط به next-hop دو مزیت عمده دارد. یکی از ارسال arp ها جلوگیری می کند. و دو اینکه در صورت down شدن آن interface از طریق recursive route سعی در پیدا کردن route دسترسی به آن ip می کند. برای نوشتن این نوع route می بایست که interface و next-hop هر دو نوشته شوند. مثال آن در زیر نوشته شده است.

    Ip route 0.0.0.0 0.0.0.0 Ethernet 0 172.16.0.2

    استفاده از exit interface به تنهایی فقط زمانی پیشنهاد می شود که نوع interface خروجی point-to-point می باشد. یکی از مرسوم ترین point-to-point interface ها serial interfaceها می باشد.

    یکی از مهم ترین نکاتی که در باید به آن پرداخت بیان تفاوت AD در static route در اشاره به interface و یا next-hop است. در اکثر مقالات نوشته شده که در static route هایی که به interface اشاره می کنند ، به دلیل اینکه به شکل directly Connected در routing table نمایش داده می شوند و چونکه AD مربوط به Directly Connected برابر با صفر است پس این static route ها نیز دارای metric صفر می باشند. اما این جمله همیشه صادق نیست. از IOS نسخه 12.2 تمامی static route ها دارای metric 1 هستند. اثبات این موضوع با استفاده دستورات وارد شده در router و خروجی آن نشان داده شده است.

    R1(config)#ip route 11.0.0.0 255.0.0.0 Serial1/0
    R1(config)#ip route 13.0.0.0 255.0.0.0 172.16.1.2
    R1(config)#do show ip route
    S 11.0.0.0/8 is directly connected, Serial1/0
    S 13.0.0.0/8 [1/0] via 172.16.0.2
    R1(config)#do sh ip route 11.0.0.0
    Routing entry for 11.0.0.0/8
    Known via “static”, distance 1, metric 0 (connected)
    Routing Descriptor Blocks:
    * directly connected, via Serial1/0
    Route metric is 0, traffic share count is 1
    R1(config)#do sh ip route 13.0.0.0
    Routing entry for 13.0.0.0/8
    Known via “static”, distance 1, metric 0
    Routing Descriptor Blocks:
    * 172.16.0.2
    Route metric is 0, traffic share count is 1

    یکی دیگر از کاربرد های static route استفاده در کنار Dynamic routing protocol می باشد و یک route جایگزین و redundantرا در صورت down شدن مسیر advertised شده معرفی می کند که در اصطلاح به آن floating static route گفته می شود . در حالت عادی static route ها دارای Administrative Distance (AD) عدد 1 می باشند که مقدم بودن آنها را بر Dynamic Routing Protocols را اثبات می کند. در صورتی که شما AD مربوط به route نوشته شده را به عدد بیشتری از AD مربوط به Dynamic route اختصاص دهید در صورت fail شدن آن route از از static route نوشته شده استفاده می کند. بطور مثال فزض کنید شما از پروتکل EIGRP در شبکه خود استفاده می کنید که دارای AD برابر با 90 می باشد . در صورتی که شما AD مربوط به static route خود را به عددی بزرگتر از 90 قرار دهید می تواند نقش floating route را برای شما ایفا کند. همانطورکه می دانید محدود قابل اختصاص AD عددی بین 0 تا 255 می باشد . اما به این نکته داشته باشید که اختصاص AD عدد 255 آن route رو به عنوان Unreachable route در نظر گرفته می شوند و لذا این route هیچگاه در routing table قرار نمی گیرد. برای تعیین metric مربوط به static route مورد نظر تنها نیاز است تا در ادامه دستورات قبلی ، عدد metric مورد نظر وارد شود.

    Ip route 172.16.0.0 255.255.0.0 192.168.1.2 150

    با کمک کلمه name می توان برای route یک نام تعیین کرد. استفاده از نام تعیین شده کمک می کند تا زمانی که route های زیادی داریم به راحت تر آنرا در configuration file پیدا کنیم. مثال زیر کاربرد این فرمان را نشان می دهد.

    ip route 172.0.0.0 255.0.0.0 10.0.0.1 name Tehran2Shiraz
    show running-config | in Tehran2Shiraz

    استفاده از کلمه permanent در ip route این امکان را می دهد که در صورت shutdown شدن exit interface همچنان route در routing table باقی بماند و remove نشود.

    ip route 10.1.1.1 255.255.255.255 serial0 permanent

  30. برای سوال اول بهتره next hop بدهیم چوت سابنت 10.0.0.0/8 بر روی اینترفیس xe 1.0 نیست
    برای سوال دوم بهتره بزنیم :(تو محیط gobal configuration )
    en
    conf t
    ip route 10.0.0.0 255.0.0.0 12.12.12.1

  31. عاقا اعتراض دارم !
    توی جواب سوال مسابقه شماره ۱ گفته شده:
    “این امر حتی ممکن است برخلاف سیاست‌های امنیتی باشد چرا که مثلاً ممکن است در مسیر next-hop، یک IPS یا فایروال یا هر تجهیزی که در لایه‌ی Network Interface (لایه ۲ OSI) عملی روی packet انجام می‌داده bypass شود.”

    وقتی فایروال را به صورت لایه ۲یی (transparent) ست میکنیم؛‌ فرقی نداره روتینگ دو طرف به صورت اینترفیسی یا next-hopی تعریف بشن؛ توی این حالت وظیفه فایروال اینه که هر پکتی که بهش میرسه را کپچر و اگه پالسی براش وجود داره روش اعمال بکنه. هیچ bypass شدنی هم در کار نیست. اگه جاییش را اشتباه میگم بگید مام بدونیم.
    در ضمن اینجا نوشتم چون کامند های اون پستا غیر فعال کرده بودید.
    ممنون

    1. سلام. با اجازه اتون نظرتون رو منتقل کردم زیر همین مطلب. نظرات هم مجددا فعال شد.
      شاید در توضیح پاسخ به وضوح بیان نشده:منظور این است که شاید بین دو روتر، یک فایروال/IPS/IDS و … بصورت لایه 2 فعال است… یا حتی شاید همون next-hop خود تجهیزی ازین قبیل بوده است که آن interface ورودی در zone خاصی قرار داشته و روی بسته کار خاصی انجام میداده یا یک عمل مرتبط با QoS و set کردن فیلد خاصی در packet و خیلی “یا” های مختلف 🙂
      کلاًمنظور از هرگونه عملی روی بسته در مسیر لایه2 تا next-hop و یا هرگونه عملی روی بسته در Next-hop بوده است، که در این شرایط بسته یه اون next-hop نمیرسه و از سیاست های مدنظر bypass شده و ممکنه به جاهایی بره که نباید…
      ممنون از پیامتون 🙂

      1. سلام؛ خیلی ممنون که جواب دادید.
        اجازه بدید قانع نشم!
        وقتی فایروال به صورت transparent ست میشه؛ مثه این میمونه که یه پکت کپچرر به صورت passive اطلاعات را sniff بکنه. مثه این که شما روی یکی از اینترفیس های کامپیوترتون wireshark یا ethercap اجرا بکنید.
        حالا ممکنه شما بگید که خوب اینجا broadcast ها و multicast ها چی میشن؟ و این که جواب ARP که برای مشخص کردن مک next-hop استفاده میشه این وسط چی میشه ؟
        جواب اینه که؛ تمام برودکست و مالتیکست ها رد مشن! اگر ARPی فرستاده بشه که مربوط به next-hop باشه از transparent firewall رد میشه و جوابی هم که next-hop (روتر مقابل) به این ARP request میده هم بازم از فایروال رد میشه.
        آقا اصا خیالتونا راحت کنم؛ تو مد transparent به صورت پیشفرض تمام پکت های 0x600 با خیال آسوده از فایروال رد میشن 🙂
        در ضمن تو مد transparent پالسی های QoS را که شما اشاره کردید را اصا نمیشه اعمال کرد. (جزو محدودیت های مد transparent یکیش همینه)
        ممنون 🙂

        1. سلام. ممنون.
          دوستِ من، اصلاً مشکل در این ها نیست فرمایشات شما صحیح.
          منظورِ ما خیلی ساده تر هست: صرفاً شرایطی که اصلا packet نمیره اون جایی که باید بره و دیگه به دست اون تجهیز نمیرسه…

          فرض کنین در این شکل next-hop بصورت recursive بدست اومده، چون از شبکه ی همسایه روتی برلی 12.12.0.0/16 وجود داره و حالا در شبکه ی همسایه هم یک روت برای 10.0.0.1 وجود داره و الی آخر. البته این شرایط یم طراحی بد و اشتباهه اما ممکنه پیش بیاد.

          موفق باشید.

  32. When an exit interface is specified, although the
    entry in the routing table indicates “directly connected,” it is still a static route with an
    administrative distance of 1 and not a directly connected network with an administrative
    distance of 0

  33. سلام دوستان
    میخواستم بدونم میشه static route رو به شکلی طراحی کرد که اگر next hop یا interface ان در دسترس نبود از جدول روتینگ پاک نشه؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.