دستور route در لینوکس

دستور route در لینوکس

 route دستوریست که توسط آن در سیستم عامل های مبتنی بر یونیکس برای نمایش و ایجاد جدول Route یا Route Table استفاده می شود. در فضای اینترنت ماشین ها و رایانه های متصل به هم از طریق روتر ها به هم متصل هستند. شاید برای ارسال یک بسته از سیستم شما در تهران به سیستمی دیگر در اصفهان بسته های شما از روتر هایی خارج از ایران، هم، رد بشوند. در یک شبکه Lan کوچک اگر دو شبکه داشته باشیم و نخواهیم از روتر های سخت افزاری استفاده کنیم، می توانیم از یک توزیع لینوکسی بعنوان یک روتر استفاده کرد، بطوریکه بسته ها از یک شبکه به این سیستم فرستاده شده و این سیستم بسته ها را به شبکه دیگر می فرستد. دستور route را می توانید برای مشاهده و تغییر در جدول روت استفاده کنید.ساده ترین شکل استفاده، اجرای آن به تنهایی است. اگر فقط دستور route را اجرا کنید فهرست خروجی جدول روت است.

route

خروجی بالا نشان می دهد که مقصد یا Destination شبکه 192.168.1.0 با netmask 255.255.255.0 است. در زیر فیلد Gateway علامت * را می بینید که نشان دهنده این است Default Gateway نداریم. منظور خط  این است که مقصد بسته های خود شبکه مشابه آن است زیرا که برای ارسال یک بسته از ماشین های هم شبکه نیازی به Default Gateway نیست. با اجرای دستور ifconfig را روی ماشینی که دستور route را روی آن اجرا کردیم، آدرس IP آن از Range آدرس های شبکه 192.168.1.0 است.

 Destination : آدرس شبکه مقصد

Gateway : آدرس Gateway یا اگر * باشد یعنی بدون Gateway

Genmask : آدرس Netmask شبکه مقصد

Flags : می تواند یکی از گزینه های زیر باشد.

  • U : مسیر فعال است. Route is Up
  • H : هدف یک هاست است. Target is Host
  • G : استفاده Gateway
  • R : reinstate route for dynamic routing
  • D : dynamically installed by daemon or redirect
  • M : modified from routing daemon or redirect
  • A : installed by addrconf
  • C : cache entry
  • reject route : !

Metric : فاصله تا هدف. یک عدد است و نشان دهنده الویت بین روتر هاست. فرض کنید یک بسته برای رسیدن به مقصد بعدی می تواند از چندین روتر بگذرد. بسته ها برای تصمیم گیری گذر از کدام روتر از این عدد استفاده می کنند.

Ref : در هسته سیستم عامل لینوکس استفاده نمی شود.

Use : مقدار جستجو برای روت.

Iface : نام اینترفیس (Interface)

دو سیستم برای ار تباط با هم نیاز به دانستن IP های هم دارند به همین خاط ماشین مبدا توسط پروتکل ARP و با MAC Address، آدرس MAC ماشین مقصد را پیدا می کند و با این کار پی به آدرس IP ماشین مقصد را پیدا می کند. البته بصور پیش فرض در خروجی دستور route نام ماشین ها می اید برای اینکه خروجی آدرس های IP باشد ا سوئیچ n- استفاده کنید.

route  -n

اضافه کردن Default Gateway به اینترفیس شبکه :

Default Gateway برای این استفاده می شود تا بسته ها را از شبکه ای به شبکه دیگر انتقال بدهیم. به زبان ساده بسته هایی که درون شبکه نیستند به Default  Gateway سپرده می شوند. Default Gateway ها (gw) هم Range شبکه شان هستند. فرمت کلی افزودن gw به یک کارت شبکه بصورت زیر است.

route  add default gw IP_ADDR  Interface_name

بجای IP_ADDR باید آدرس gw را برای کارت شبکه تنظیم کنیم. بطور مثال برای تنظیم gw شبکه 192.168.1.0 به آدرس 192.168.1.254 بصورت زیر انجام می دهیم.

route  add  default  gw  192.168.1.254  eth0

پس از انجام خط بالا، دستور زیر را اجرا کنید تا خط اضافه شده به جدول روت را ببنید.

route  -n

route

شکل بالا تفاوت در خروجی route و route  -n را نشان می دهد که در ستون Destination فیلد های 0.0.0.0 و default یکی هستند. و در ستون Gateway فیلد های * و 0.0.0.0 همسان هستند. اگر روی ماشینی با آدرس 192.168.1.100 با netmask 255.255.255.0 بخواهیم ماشینی با آدرس 192.168.2.100 با همان netmask را ping کنیم قطعن امکان ندارد چونکه از دو شبکه متفاوت هستند. برای اینکار باید از یک روتر سخت افزاری یا لینوکس را بعنوان روتر استفاده کنیم که اینکار با نوشتن Static Route و تغییر Route Table انجام می شود. دستور ping ابتدا بسته ای را به مقصد می فرستد و در صورت برقراری ارتباط بین مبدا و مقصد، پاسخی به مبدا داده می شود در نتیجه یک ارتباط درست و بدون اشکال باید تعداد بسته های ارسالی و دریافتی یکی باشد. ping از پروتکل ICMP استفاده می کند که پروتکلی است بدون (شماره) پورت.

عکس add در دستور های بالا del است که gw را از اینترفیس پاک می کند. شکل کلی آن بصورت زیر است.

route  del  default  gw  IP_ADDRE  Interface_name

route  del  default  gw  192.168.1.254  eth0

اگر روی سیستمتان فقط یک کارت شبکه دارید آوردن نام اینترفیس لازم نیست ولی اگر چندین اینترفیس (کارت شبکه دارید) حتمن باید نام کارت های شبکه آورده شوند.

اطلاعات Cache :

هسته سیستم عامل لینوکس اطلاعات Routing را برای استفاده بعدی بصورت سریعتر Cache می کند. برای دیدن Cache باید از سوئیچ C- استفاده کنیم. (دقت کنید C بزرگ است.

route  -Cn

route -C

ستون های خروجی مانند قبل هستند تنها ستون source اضافه می شود که یعنی بسته از کجا (مبدا-Source) به کجا (مقصد-Destination) رفته است.

رد کردن مسیریابی برای یک هاست/شبکه خاص :

گاهی اوقات می خواهیم مسیر یابی را برای یک هاست/شبکه خاص رد شود یعنی بسته ها به مقصد نرسند. شکل کلی اینکار بصورت خط زیر است.

route  add  -host  IP_ADDR_DESTINATION  reject

route  add   -host  192.168.1.101  reject

وقتی هاست/شبکه ای را Reject می کنید در صورت ping کردن آدرس IP مقصد خطای زیر نشان داده می شود.

connect: Network is unreachable

برای خنثی کردن آن باید از فرمت کلی زیر استفاده کنید.(بجای add باید از del استفاده شود)

route  del  -host  IP_ADDR_DESTINATION  reject

route  del   -host  192.168.1.101  reject

و اگر می خواهید ping یک شبکه مانند 192.168.1.0/24 را رد کنید باید از فرمت زیر استفاده کنید.

route  add  -net  NET_ADDR  netmask  SUBNETMASK   reject

route  add  -net  192.168.1.0  netmask  255.255.255.0  reject

برای خنثی کردن آن از فرمت زیر استفاده کنید.

route  del  -net  NET_ADDR  netmask  SUBNETMASK   reject

route  del  -net  192.168.1.0  netmask  255.255.255.0  reject