در محیط‌های ابری، با افزودن یک IP اینترنتی جدید به سرور لینوکس، ممکن است یک Default Route جدید ایجاد شود. در این حالت، سرور دو مسیر پیش‌فرض با اولویت یکسان خواهد داشت که باعث می‌شود ترافیک اینترنت تنها از یکی از این مسیرها عبور کند. برای مدیریت دقیق ترافیک خروجی، نیاز است روت‌های سیستم را به‌شکل دستی کنترل کنید.

این راهنما به شما کمک می‌کند تا با استفاده از دستور ip روتینگ سرور خود را مدیریت کنید.

راهکارهای مدیریت روتینگ

برای مدیریت چند IP اینترنتی و Default Route، سه سناریوی اصلی وجود دارد:

  • راهکار نخست؛ حذف IP اینترنتی اضافی: در این حالت می‌توانید از پنل آروان‌کلاد، منوی سرور ابری، بخش IP اینترنتی، آدرس اضافی را حذف کنید.

  • راهکار دوم؛ حذف Default Route اضافی و افزودن Static Route: در این روش، مسیر پیش‌فرض مربوط به IP دوم را حذف کرده و تنها برای مقصد‌های خاص، مسیر ایستای (Static Route) اختصاصی تعریف می‌کنید.

  • راهکار سوم؛ تغییر اولویت (Metric) مسیرهای پیش‌فرض: اگر نیاز به حفظ هر دو مسیر دارید، با تغییر مقدار Metric، اولویت یکی را نسبت به دیگری افزایش می‌دهید تا ترافیک به‌شکل پیش‌فرض از Interface دل‌خواه خارج شود.

در ادامه، مراحل پیاده‌سازی راهکارهای دوم و سوم را بررسی می‌کنیم.

مفاهیم پایه

  • اینترفیس (Interface): نام کارت شبکه‌ی شما در سیستم‌عامل است (مانند eth0 یا eth1).

  • گیت‌وی (Gateway): درگاه یا خروجی اصلی ترافیک شبکه است که سرور ترافیک را به آن ارسال می‌کند.

  • متریک (Metric): عددی است که اولویت یک مسیر را مشخص می‌کند. عدد کم تر یعنی اولویت بالاتر.

گام نخست: بررسی وضعیت فعلی شبکه

پیش از اعمال هرگونه تغییر، وضعیت فعلی IPها و Route‌های سرور را بررسی کنید.

۱. بررسی آدرس‌های IP سیستم

برای مشاهده‌ی تمام IPهای تخصیص داده شده به اینترفیس‌های شبکه، از دستور زیر استفاده کنید:

ip addr show
# یا خروجی خلاصه
ip --br a

این دستور لیستی از تمام اینترفیس‌ها (مانند eth0 ،eth1 و…) را نمایش می‌دهد. نام اینترفیسی که IP جدید به آن اضافه شده (مثلن eth1) را یادداشت کنید.

۲. بررسی جدول روتینگ سیستم

برای مشاهده تمام روت‌های تعریف شده، دستور زیر را اجرا کنید:

ip route show

توضیح خروجی:

  • Default Route: خطوطی که با کلمه default شروع می‌شوند، مسیرهای پیش‌فرض هستند.

  • Metric: به مقدار مقابل metric در هر دو خط دقت کنید. اگر این مقادیر برابر باشند، سیستم‌عامل تنها از یکی از آن‌ها (معمولن اولین مورد) برای ترافیک اینترنت استفاده می‌کند.

  • مقدار Gateway: عددی که بعد از عبارت via می‌آید (مثلن 192.168.1.1).

گام دوم: پیاده‌سازی راهکار

در این بخش، شیوه پیاده‌سازی راهکارها با استفاده از دستور ip و دایمی کردن آن‌ها را مرور می‌کنیم.

راهکار اول: حذف Default Route و افزودن Static Route

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

گام ۱: حذف Default Route اضافی

ابتدا Gateway مربوط به اینترفیس eth1 را از خروجی دستور ip route show پیدا و آن را حذف کنید:

sudo ip route del default via [Secondary_Gateway] dev eth1

گام ۲: افزودن Static Route جدید (اختیاری)

برای ارسال ترافیکِ یک مقصد خاص (مثلن 8.8.8.8) از طریق eth1، یک روت استاتیک اضافه کنید:

sudo ip route add [Destination_IP] via [Secondary_Gateway] dev eth1

راهکار دوم: تغییر اولویت (Metric) مسیرهای پیش‌فرض

برای حفظ هر دو مسیر و اولویت‌دهی به eth0، باید متریک آن را کم‌تر از متریک eth1 قرار دهید.

گام ۱: حذف مسیرهای موجود

sudo ip route del default via [Primary_Gateway] dev eth0
sudo ip route del default via [Secondary_Gateway] dev eth1

گام ۲: افزودن مجدد مسیرها با Metric دل‌خواه

متریک پایین‌تر به معنای اولویت بالاتر است:

# مسیر اصلی با اولویت بالاتر (متریک ۱۰۰)
sudo ip route add default via [Primary_Gateway] dev eth0 metric 100
# مسیر دوم با اولویت پایینتر (متریک ۲۰۰)
sudo ip route add default via [Secondary_Gateway] dev eth1 metric 200

برای دایمی کردن این تنظیمات، باید آن‌ها را در سرویس مدیریت شبکه توزیع لینوکس خود (مانند Netplan در Ubuntu یا NetworkManager در Rocky Linux) اعمال کنید. بدون انجام این کار با ری‌بوت شدن سرور، تنظیمات به حالت پیش‌فرض باز می‌گردد.

گام سوم: دایمی کردن تنظیمات (Persistence)

دستورهای بخش قبلی با ری‌بوت شدن سرور از بین می‌روند. برای دایمی کردن این تغییرات در توزیع‌های مختلف لینوکس، مراحل زیر را دنبال کنید:

۱. در سیستم‌عامل Ubuntu (سرویس Netplan)

فایل تنظیمات شبکه را در مسیر /etc/netplan/ (مانند 50-cloud-init.yaml) با یک ویرایش‌گر (مانند nano) باز کنید.

sudo nano /etc/netplan/50-cloud-init.yaml

بسته به راهکار انتخابی، یکی از الگوهای زیر را در بخش ethernet اعمال کنید:

الف) نمونه فایل برای سناریوی Static Route:

(ترافیک کل اینترنت از eth0 و ترافیک مقصدی خاص از eth1)

خطوط زیر را به انتهای فایل اضافه کنید:

eth1:
    addresses:
      - [Secondary_IP]/24
    routes:
      - to: [Destination_IP]/32
       via: [Secondary_Gateway]

ب) نمونه فایل برای سناریوی تغییر Metric:

(حفظ هر دو مسیر با اولویت‌بندی متفاوت)

خطوط زیر را به انتهای فایل اضافه کنید:

eth1:
    addresses:
      - [Secondary_IP]/24
    routes:
      - to: default
       via: [Secondary_Gateway]
         metric: 200

 

نکته: پیش از اعمال نهایی تنظیمات در Netplan، پیشنهاد می‌شود از دستور sudo netplan try استفاده کنید. این دستور تنظیمات را به‌شکل موقت اعمال کرده و اگر تایید نکنید، پس از ۱۲۰ ثانیه به حالت قبل بازمی‌گرداند تا اگر خطایی وجود داشته باشد، دسترسی شما به سرور قطع نشود.

پس از ذخیره فایل، برای اعمال تغییرات دستور زیر را اجرا کنید:

sudo netplan apply

۲. در سیستم‌عامل Rocky Linux و AlmaLinux (سرویس NetworkManager)

در این توزیع‌ها، به‌جای ویرایش مستقیم فایل، از ابزار nmcli استفاده می‌شود:

الف) برای راهکار Static Route:

# افزودن روت استاتیک به اینترفیس دوم
sudo nmcli connection modify "System eth1" +ipv4.routes "[Destination_IP]/32 [Secondary_Gateway]"
sudo nmcli connection up "System eth1"

ب) برای راهکار تغییر Metric:

# تنظیم متریک برای اینترفیس دوم
sudo nmcli connection modify "System eth1" ipv4.route-metric 200
sudo nmcli connection up "System eth1"