IP-RULE(8) Linux IP-RULE(8)

ip-rule - پایگاه داده خطمشی و قوانین مسیریابی (routing policy database)


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 ]

دستور 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 می‌تواند شامل قوانینی از انواع زیر باشد:

unicast - این قانون مسیری را که در جدول مسیریابی ارجاع داده شده یافته است، بازمی‌گرداند.

blackhole - این قانون باعث می‌شود بسته به‌طور خاموش دور انداخته (drop) شود.

unreachable - این قانون خطای «شبکه در دسترس نیست» (Network is unreachable) را تولید می‌کند.

prohibit - این قانون خطای «ارتباط از نظر مدیریتی ممنوع است» (Communication is administratively prohibited) را تولید می‌کند.

nat - این قانون نشانی مبدأ بسته IP را به مقدار دیگری ترجمه می‌کند.

نوع این قانون. فهرست انواع معتبر در زیربخش پیشین ارائه شد.
پیشوند نشانی مبدأ را برای تطابق مشخص می‌کند.
پیشوند نشانی مقصد را برای تطابق مشخص می‌کند.
دستگاه (رابط) ورودی را برای تطابق مشخص می‌کند. اگر این رابط لوپ‌بک (loopback) باشد، این قانون تنها با بسته‌هایی که از این میزبان سرچشمه می‌گیرند تطابق دارد. این بدان معناست که می‌توانید جداول مسیریابی جداگانه‌ای برای بسته‌های هدایت‌شده (forwarded) و بسته‌های محلی (local) ایجاد کرده و در نتیجه آن‌ها را کاملاً تفکیک کنید.
دستگاه (رابط) خروجی را برای تطابق مشخص می‌کند. رابط خروجی فقط برای بسته‌هایی در دسترس است که از سوکت‌های محلی متصل‌شده (bound) به یک دستگاه سرچشمه می‌گیرند.
مقدار TOS را برای تطابق مشخص می‌کند.
مقدار DSCP را با یک ماسک اختیاری برای تطابق انتخاب می‌کند. مقادیر DSCP را می‌توان به صورت عددی (مقادیر معتبر بین ۰ تا ۶۳) یا با استفاده از نام‌های نمادین مشخص‌شده در /usr/share/iproute2/rt_dsfield یا /etc/iproute2/rt_dsfield (در صورت وجود اولویت دارد) نوشت. با این حال، توجه داشته باشید که این فایل مقادیر کامل ۸ بیتی dsfield را تعیین می‌کند، در حالی که ip rule تنها از ۶ بیت بالاتر استفاده خواهد کرد. دستور ip rule show نیز در صورت امکان مقادیر DSCP را به عنوان نام‌های نمادین قالب‌بندی می‌کند. گزینه خط فرمان -N ترجمه نام‌ها در نمایش را غیرفعال می‌سازد.
مقدار fwmark را برای تطابق انتخاب می‌کند.
محدوده شناسه کاربری (uid) را برای تطابق انتخاب می‌کند.
مقدار پروتکل IP را برای تطابق انتخاب می‌کند.
مقدار درگاه مبدأ را همراه با یک ماسک اختیاری برای تطابق انتخاب می‌کند. از محدوده درگاه نیز پشتیبانی می‌شود.
مقدار درگاه مقصد را همراه با یک ماسک اختیاری برای تطابق انتخاب می‌کند. از محدوده درگاه نیز پشتیبانی می‌شود.
اولویت این قانون. PREFERENCE یک مقدار عدد صحیح بدون علامت است که عدد بزرگتر در آن به معنای اولویت کمتر بوده و قوانین به ترتیب افزایش عدد پردازش می‌شوند. هر قانون باید یک مقدار اولویت یکتا داشته باشد که به طور صریح تعیین شده باشد. گزینه‌های preference و order مترادف با priority هستند.
شناسه جدول مسیریابی برای جستجو در صورتی که انتخاب‌گر قانون مطابقت داشته باشد. همچنین می‌توان به جای table از lookup استفاده کرد.
پروتکل مسیریابی که قانون مورد نظر را نصب کرده است. به عنوان مثال، هنگامی که zebra قانونی را نصب می‌کند، مقدار RTPROT_ZEBRA را به عنوان پروتکل نصب‌کننده دریافت می‌نماید.
رد کردن تصمیمات مسیریابی که طول پیشوند آن‌ها برابر با NUMBER یا کمتر از آن است.
رد کردن تصمیمات مسیریابی که از دستگاه متعلق به گروه رابط GROUP استفاده می‌کنند.
ناحیه‌ها (Realms) برای انتخاب در صورتی که قانون مطابقت داشته و جستجوی جدول مسیریابی موفقیت‌آمیز باشد. ناحیه TO تنها زمانی استفاده می‌شود که مسیر هیچ ناحیه‌ای را انتخاب نکرده باشد.
پایه بلوک نشانی IP برای ترجمه (جهت نشانی‌های مبدأ). مقدار ADDRESS می‌تواند ابتدای بلوک نشانی‌های NAT (انتخاب شده توسط مسیرهای NAT) یا یک نشانی میزبان محلی (یا حتی صفر) باشد. در حالت آخر، مسیریاب بسته‌ها را ترجمه نمی‌کند، بلکه آن‌ها را به این نشانی ماسک‌گذاری (masquerade) می‌نماید. استفاده از map-to به جای nat همین مفهوم را دارد.
برچسب جریان IPv6 (flow label) را همراه با یک ماسک اختیاری برای تطابق انتخاب می‌کند.

هشدار: تغییرات اعمال‌شده روی RPDB با این دستورات بلافاصله فعال نمی‌شوند. فرض بر این است که پس از پایان دسته‌ای از به‌روزرسانی‌ها توسط یک اسکریپت، حافظه موقت (کَش) مسیریابی با دستور زیر پاک‌سازی شود: ip route flush cache.

پروتکل مبدأ را انتخاب می‌کند.
این دستور هیچ آرگومانی ندارد. گزینه‌های list یا lst مترادف با show هستند.
پروتکل مبدأ را انتخاب می‌کند.
ذخیره اطلاعات جدول قوانین در خروجی استاندارد (stdout)
این دستور رفتاری مشابه ip rule show دارد، با این تفاوت که خروجی آن داده‌های خام و مناسب برای ارسال به دستور ip rule restore است.
بازیابی اطلاعات جدول قوانین از ورودی استاندارد (stdin)
این دستور انتظار دارد جریان داده‌ای را بخواند که از ip rule save بازگردانده شده است. این دستور تلاش می‌کند اطلاعات جدول قوانین را دقیقاً به همان شکلی که در زمان ذخیره‌سازی بوده بازیابی کند. هر قانونی که از قبل در جدول وجود داشته باشد بدون تغییر باقی می‌ماند، و موارد تکراری نیز نادیده گرفته نمی‌شوند.

ip(8)

صفحه راهنمای اصلی توسط Michail Litvak <mci@owl.openwall.com> نوشته شده است.

20 Dec 2011 iproute2