سرورها و دسکتاپهای لینوکسی برای تعیین مسیر حرکت بستههای شبکه بین واسطها (interfaces) و مقصدها به جدولهای مسیردهی (routing tables) متکی هستند. پیکربندی نادرست مسیردهی میتواند منجر به مشکلات اتصال، مسیرهای غیربهینه و حتی از کار افتادن سرویسها شود. با تنظیم درست مسیردهی، میتوانید کنترل کنید که کدام واسط شبکه ترافیک خاصی را مدیریت کند، دروازه (gateway) تعیین کنید و در محیطهای پیچیده، سیاستهای پیشرفتهتری را اعمال نمایید.
پیکربندی مسیردهی با دستور ip
مرحله ۱: نمایش جدول مسیردهی فعلی برای بررسی مسیرها و تغییرات لازم.
برای این کار، در ترمینال دستور زیر را اجرا کنید:
ip route show
این دستور همه مسیرها را فهرست میکند، از جمله دروازه پیشفرض و مسیرهای مربوط به واسطهای خاص. بررسی خروجی این دستور به شما کمک میکند تا از ایجاد تداخل در هنگام افزودن مسیرهای جدید جلوگیری کنید.
مرحله ۲: افزودن مسیر جدید برای هدایت ترافیک یک زیرشبکه مشخص از طریق یک دروازه خاص.
مثلاً برای هدایت ترافیک مربوط به شبکه ۱۹۲.۱۶۸.۱۰.۰/۲۴ از طریق دروازه ۱۰.۰.۰.۱ بر روی واسط eth1، از این دستور استفاده کنید:
sudo ip route add 192.168.10.0/24 via 10.0.0.1 dev eth1
این دستور به لینوکس میگوید بستههایی که برای این زیرشبکه هستند را از طریق دروازه و واسط تعیینشده ارسال کند. مقادیر subnet، gateway و interface را متناسب با شبکه خود تغییر دهید.
مرحله ۳: تغییر دروازه پیشفرض سیستم برای هدایت کل ترافیک خروجی از مسیر خاص.
برای تعیین یک دروازه پیشفرض جدید از دستور زیر استفاده کنید:
sudo ip route replace default via 192.168.1.1 dev eth0
این دستور مسیر پیشفرض فعلی را با مسیر جدید جایگزین میکند. فقط یک مسیر پیشفرض باید وجود داشته باشد تا از بروز تداخل جلوگیری شود.
مرحله ۴: دائمی کردن تنظیمات مسیردهی.
مسیرهایی که با دستور ip تنظیم میشوند موقتی هستند و پس از ریبوت پاک میشوند. برای دائمی کردن آنها، باید فایلهای پیکربندی شبکه را ویرایش کنید. در بیشتر توزیعها:
- در Debian/Ubuntu: مسیرهای استاتیک را به فایل
/etc/network/interfaces
اضافه کنید. - در CentOS/RHEL: از فایل
/etc/sysconfig/network-scripts/route-ethX
استفاده کنید (ethX را با نام واسط خود جایگزین کنید).
مسیردهی مبتنی بر سیاست (Policy-Based Routing) با دستور ip rule
مسیردهی مبتنی بر سیاست به شما اجازه میدهد تا قوانین مسیردهی را بر اساس آدرس مبدأ، واسط یا معیارهای دیگر تعریف کنید؛ نه فقط بر اساس IP مقصد. این روش برای سیستمهایی با چند واسط شبکه یا پیکربندیهای پیچیده مفید است.
مرحله ۱: ایجاد جدول مسیردهی سفارشی.
فایل /etc/iproute2/rt_tables
را ویرایش کرده و یک ورودی جدید اضافه کنید:
۱۰۰ customtable
این خط، جدول شماره ۱۰۰ را با نام customtable
تعریف میکند.
مرحله ۲: افزودن مسیر به جدول سفارشی.
برای مثال، برای مسیردهی ترافیک مربوط به ۱۰.۲۰.۳۰.۰/۲۴ از طریق دروازه ۱۹۲.۱۶۸.۲.۱ روی eth2:
sudo ip route add 10.20.30.0/24 via 192.168.2.1 dev eth2 table customtable
این مسیر در جدول customtable
ثبت میشود، نه در جدول اصلی.
مرحله ۳: تعریف یک قانون مسیردهی برای استفاده از جدول سفارشی.
برای مثال، برای هدایت همه ترافیک مبدأ از ۱۹۲.۱۶۸.۱۰۰.۵ از طریق جدول سفارشی:
sudo ip rule add from 192.168.100.5/32 table customtable
این قانون به لینوکس میگوید برای این آدرس مبدأ، جدول customtable
را بررسی کند. میتوانید چند قانون مشابه برای سناریوهای پیچیده تنظیم کنید.
مرحله ۴: مشاهده همه قوانین مسیردهی سیاستمحور و بررسی ترتیب اجرای آنها.
ip rule show
قوانین بهترتیب اجرا میشوند، بنابراین ترتیب آنها در عملکرد مسیردهی تأثیرگذار است. در صورت نیاز میتوانید با گزینه priority
ترتیب را تغییر دهید.
پیکربندی مسیردهی با دستور route (روش قدیمی)
دستور route
ابزاری قدیمی برای مدیریت مسیرها است که در بسیاری از سیستمها هنوز موجود است، اما بهطور کلی با ip
جایگزین شده است. در صورت نیاز، میتوانید از آن به شکل زیر استفاده کنید:
مرحله ۱: نمایش مسیرهای فعلی:
route -n
این دستور یک جدول عددی از مسیرهای فعلی ارائه میدهد.
مرحله ۲: افزودن مسیر به یک شبکه خاص:
sudo route add -net 192.168.10.0 netmask 255.255.255.0 gw 10.0.0.1 dev eth1
این دستور عملکردی مشابه با ip route add
دارد، اما از نحو قدیمیتر استفاده میکند.
نکته: برای دائمی کردن مسیرهای تنظیمشده با
route
نیز باید آنها را در فایلهای پیکربندی شبکه اضافه کنید (همانند روش قبلی).
با پیکربندی صحیح مسیردهی، سیستمهای لینوکسی میتوانند ترافیک را به شکل مؤثر هدایت کرده، پیکربندیهای چندگانه شبکه را پشتیبانی کنند و از مشکلات رایج در شبکه جلوگیری نمایند. بررسی و بهروزرسانی منظم جدولهای مسیردهی به تطبیق با تغییرات شبکه و حفظ ارتباط بهینه کمک میکند.