| IP-RULE(8) | Linux | IP-RULE(8) |
نام (NAME)
ip-rule - پایگاه داده خطمشی و قوانین مسیریابی (routing policy database)
خلاصه دستور (SYNOPSIS)
ip [ OPTIONS ] rule { COMMAND | help }
ip rule [ show [ SELECTOR ]]
ip rule { add | del } SELECTOR ACTION
ip rule { flush | save | restore }
SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ dscp DSCP[/MASK] ] [ fwmark FWMARK[/MASK] ] [ iif STRING ] [ oif STRING ] [ priority PREFERENCE ] [ l3mdev ] [ uidrange NUMBER-NUMBER ] [ ipproto PROTOCOL ] [ sport [ NUMBER[/MASK] | NUMBER-NUMBER ] ] [ dport [ NUMBER[/MASK] | NUMBER-NUMBER ] ] [ tun_id TUN_ID ] [ flowlabel FLOWLABEL[/MASK] ]
ACTION := [ table TABLE_ID ] [ protocol PROTO ] [ nat ADDRESS ] [ realms [SRCREALM/]DSTREALM ] [ goto NUMBER ] SUPPRESSOR
SUPPRESSOR := [ suppress_prefixlength NUMBER ] [ suppress_ifgroup GROUP ]
TABLE_ID := [ local | main | default | NUMBER ]
توضیحات (DESCRIPTION)
دستور ip rule قوانین موجود در پایگاه داده خطمشی مسیریابی (RPDB) را که الگوریتم انتخاب مسیر را هدایت و کنترل میکند، مدیریت مینماید.
الگوریتمهای مسیریابی کلاسیک که در اینترنت استفاده میشوند، تصمیمات مسیریابی را تنها بر اساس نشانی مقصد بستهها (و در تئوری، اما نه در عمل، بر اساس فیلد TOS) اتخاذ میکنند.
در برخی شرایط، ما میخواهیم بستهها را نه تنها بر اساس نشانی مقصد، بلکه با توجه به سایر فیلدهای بسته نیز به شکل متفاوتی مسیریابی کنیم: نشانی مبدأ، پروتکل IP، درگاههای پروتکل لایه انتقال، یا حتی بار داده (payload) بسته. به این وظیفه «مسیریابی مبتنی بر خطمشی» (policy routing) گفته میشود.
برای انجام این وظیفه، جدول مسیریابی سنتی مبتنی بر مقصد که بر اساس قانون طولانیترین تطابق (longest match) مرتب شده است، با یک «پایگاه داده خطمشی مسیریابی» (routing policy database یا RPDB) جایگزین میشود که مسیرها را با اجرای مجموعهای از قوانین انتخاب میکند.
هر قانون مسیریابی مبتنی بر خطمشی از یک انتخابگر (selector) و یک گزاره اقدام (action predicate) تشکیل شده است. پایگاه داده RPDB به ترتیب اولویت کاهشی پیمایش میشود (توجه داشته باشید که عدد کمتر نشاندهنده اولویت بالاتر است؛ توضیحات PREFERENCE در زیر را ببینید). انتخابگر هر قانون روی مجموعهای شامل {نشانی مبدأ، نشانی مقصد، رابط ورودی، tos، fwmark} اعمال میشود و اگر انتخابگر با بسته تطابق داشته باشد، اقدام مربوطه اجرا میگردد. گزاره اقدام ممکن است با موفقیت بازگردد. در این حالت، یا یک مسیر ارائه میدهد یا نشاندهنده شکست است و جستجوی RPDB خاتمه مییابد. در غیر این صورت، برنامه RPDB با بررسی قانون بعدی ادامه مییابد.
از نظر معنایی، اقدام طبیعی انتخاب جهش بعدی (nexthop) و دستگاه خروجی است.
در زمان راهاندازی، هسته سیستم پایگاه داده پیشفرض RPDB را متشکل از سه قانون پیکربندی میکند:
- 1.
- اولویت: 0، انتخابگر: تطابق با همهچیز، اقدام: جستجو در جدول مسیریابی local (شناسه ۲۵۵). جدول local یک جدول مسیریابی ویژه شامل مسیرهای کنترلی با اولویت بالا برای نشانیهای محلی و پخشی (broadcast) است.
- 2.
- اولویت: 32766، انتخابگر: تطابق با همهچیز، اقدام: جستجو در جدول مسیریابی main (شناسه ۲۵۴). جدول main جدول مسیریابی معمولی است که تمامی مسیرهای غیر مبتنی بر خطمشی را در بر میگیرد. این قانون میتواند توسط مدیر سیستم حذف شود یا با قوانین دیگر جایگزین گردد.
- 3.
- اولویت: 32767، انتخابگر: تطابق با همهچیز، اقدام: جستجو در جدول مسیریابی default (شناسه ۲۵۳). جدول default خالی است. این جدول برای پسپردازشهایی رزرو شده است تا در صورتی که هیچیک از قوانین پیشفرض قبلی بسته را انتخاب نکردند، به کار رود. این قانون نیز میتواند حذف شود.
هر مدخل در RPDB دارای ویژگیهای اضافی است. برای مثال، هر قانون یک اشارهگر به یک جدول مسیریابی دارد. قوانین NAT و ماسکگذاری (masquerading) دارای ویژگی برای انتخاب نشانی IP جدید جهت ترجمه یا ماسکگذاری هستند. علاوه بر این، قوانین دارای برخی ویژگیهای اختیاری هستند که مسیرها نیز دارند، از جمله realms. این مقادیر بر مقادیر موجود در جداول مسیریابی اولویت ندارند و آنها را باطل نمیکنند. این مقادیر تنها زمانی استفاده میشوند که مسیر هیچ ویژگی مشخصی را انتخاب نکرده باشد.
پایگاه داده RPDB میتواند شامل قوانینی از انواع زیر باشد:
blackhole - این قانون باعث میشود بسته بهطور خاموش دور انداخته (drop) شود.
unreachable - این قانون خطای «شبکه در دسترس نیست» (Network is unreachable) را تولید میکند.
prohibit - این قانون خطای «ارتباط از نظر مدیریتی ممنوع است» (Communication is administratively prohibited) را تولید میکند.
nat - این قانون نشانی مبدأ بسته IP را به مقدار دیگری ترجمه میکند.
- type TYPE (پیشفرض)
- نوع این قانون. فهرست انواع معتبر در زیربخش پیشین ارائه شد.
- from PREFIX
- پیشوند نشانی مبدأ را برای تطابق مشخص میکند.
- to PREFIX
- پیشوند نشانی مقصد را برای تطابق مشخص میکند.
- iif NAME
- دستگاه (رابط) ورودی را برای تطابق مشخص میکند. اگر این رابط لوپبک (loopback) باشد، این قانون تنها با بستههایی که از این میزبان سرچشمه میگیرند تطابق دارد. این بدان معناست که میتوانید جداول مسیریابی جداگانهای برای بستههای هدایتشده (forwarded) و بستههای محلی (local) ایجاد کرده و در نتیجه آنها را کاملاً تفکیک کنید.
- oif NAME
- دستگاه (رابط) خروجی را برای تطابق مشخص میکند. رابط خروجی فقط برای بستههایی در دسترس است که از سوکتهای محلی متصلشده (bound) به یک دستگاه سرچشمه میگیرند.
- tos TOS
- dsfield TOS
- مقدار TOS را برای تطابق مشخص میکند.
- dscp DSCP[/MASK]
- مقدار DSCP را با یک ماسک اختیاری برای تطابق انتخاب میکند. مقادیر DSCP را میتوان به صورت عددی (مقادیر معتبر بین ۰ تا ۶۳) یا با استفاده از نامهای نمادین مشخصشده در /usr/share/iproute2/rt_dsfield یا /etc/iproute2/rt_dsfield (در صورت وجود اولویت دارد) نوشت. با این حال، توجه داشته باشید که این فایل مقادیر کامل ۸ بیتی dsfield را تعیین میکند، در حالی که ip rule تنها از ۶ بیت بالاتر استفاده خواهد کرد. دستور ip rule show نیز در صورت امکان مقادیر DSCP را به عنوان نامهای نمادین قالببندی میکند. گزینه خط فرمان -N ترجمه نامها در نمایش را غیرفعال میسازد.
- fwmark MARK
- مقدار fwmark را برای تطابق انتخاب میکند.
- uidrange NUMBER-NUMBER
- محدوده شناسه کاربری (uid) را برای تطابق انتخاب میکند.
- ipproto PROTOCOL
- مقدار پروتکل IP را برای تطابق انتخاب میکند.
- sport NUMBER[/MASK] | NUMBER-NUMBER
- مقدار درگاه مبدأ را همراه با یک ماسک اختیاری برای تطابق انتخاب میکند. از محدوده درگاه نیز پشتیبانی میشود.
- dport NUMBER[/MASK] | NUMBER-NUMBER
- مقدار درگاه مقصد را همراه با یک ماسک اختیاری برای تطابق انتخاب میکند. از محدوده درگاه نیز پشتیبانی میشود.
- priority PREFERENCE
- اولویت این قانون. PREFERENCE یک مقدار عدد صحیح بدون علامت است که عدد بزرگتر در آن به معنای اولویت کمتر بوده و قوانین به ترتیب افزایش عدد پردازش میشوند. هر قانون باید یک مقدار اولویت یکتا داشته باشد که به طور صریح تعیین شده باشد. گزینههای preference و order مترادف با priority هستند.
- table TABLEID
- شناسه جدول مسیریابی برای جستجو در صورتی که انتخابگر قانون مطابقت داشته باشد. همچنین میتوان به جای table از lookup استفاده کرد.
- protocol PROTO
- پروتکل مسیریابی که قانون مورد نظر را نصب کرده است. به عنوان مثال، هنگامی که zebra قانونی را نصب میکند، مقدار RTPROT_ZEBRA را به عنوان پروتکل نصبکننده دریافت مینماید.
- suppress_prefixlength NUMBER
- رد کردن تصمیمات مسیریابی که طول پیشوند آنها برابر با NUMBER یا کمتر از آن است.
- suppress_ifgroup GROUP
- رد کردن تصمیمات مسیریابی که از دستگاه متعلق به گروه رابط GROUP استفاده میکنند.
- realms FROM/TO
- ناحیهها (Realms) برای انتخاب در صورتی که قانون مطابقت داشته و جستجوی جدول مسیریابی موفقیتآمیز باشد. ناحیه TO تنها زمانی استفاده میشود که مسیر هیچ ناحیهای را انتخاب نکرده باشد.
- nat ADDRESS
- پایه بلوک نشانی IP برای ترجمه (جهت نشانیهای مبدأ). مقدار ADDRESS میتواند ابتدای بلوک نشانیهای NAT (انتخاب شده توسط مسیرهای NAT) یا یک نشانی میزبان محلی (یا حتی صفر) باشد. در حالت آخر، مسیریاب بستهها را ترجمه نمیکند، بلکه آنها را به این نشانی ماسکگذاری (masquerade) مینماید. استفاده از map-to به جای nat همین مفهوم را دارد.
- flowlabel FLOWLABEL[/MASK]
- برچسب
جریان IPv6 (flow label)
را همراه با
یک ماسک
اختیاری
برای تطابق
انتخاب
میکند.
هشدار: تغییرات اعمالشده روی RPDB با این دستورات بلافاصله فعال نمیشوند. فرض بر این است که پس از پایان دستهای از بهروزرسانیها توسط یک اسکریپت، حافظه موقت (کَش) مسیریابی با دستور زیر پاکسازی شود: ip route flush cache.
- protocol PROTO
- پروتکل مبدأ را انتخاب میکند.
- ip rule show - فهرست کردن قوانین
- این دستور هیچ آرگومانی ندارد. گزینههای list یا lst مترادف با show هستند.
- ip rule save
- protocol PROTO
- پروتکل مبدأ را انتخاب میکند.
- ذخیره اطلاعات جدول قوانین در خروجی استاندارد (stdout)
- ip rule restore
- بازیابی اطلاعات جدول قوانین از ورودی استاندارد (stdin)
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
صفحه راهنمای اصلی توسط Michail Litvak <mci@owl.openwall.com> نوشته شده است.
| 20 Dec 2011 | iproute2 |