مجله ایرانیکاسرورآموزش سرور، هاست، وردپرس و شبکه
آموزشی

رفع خطای RTNETLINK answers: File exists در Linux؛ بررسی Route و Gateway

اگر هنگام تنظیم IP، Gateway، Route، VLAN، Tunnel یا شبکه سرور لینوکسی با خطای RTNETLINK answers: File exists روبه‌رو شده‌اید، معمولاً Kernel می‌گوید چیزی که قصد اضافه‌کردنش را دارید از قبل وجود دارد یا…

رفع خطای RTNETLINK answers: File exists در Linux؛ بررسی Route و Gateway
خلاصه سریع این آموزش

اگر هنگام تنظیم IP، Gateway، Route، VLAN، Tunnel یا شبکه سرور لینوکسی با خطای RTNETLINK answers: File exists روبه‌رو شده‌اید، معمولاً Kernel می‌گوید چیزی که قصد اضافه‌کردنش را دارید از…

۱۰ دقیقه مطالعه ۰ دیدگاه ۱۲ مهر ۱۴۰۵ آخرین به‌روزرسانی

اگر هنگام تنظیم IP، Gateway، Route، VLAN، Tunnel یا شبکه سرور لینوکسی با خطای RTNETLINK answers: File exists روبه‌رو شده‌اید، معمولاً Kernel می‌گوید چیزی که قصد اضافه‌کردنش را دارید از قبل وجود دارد یا با یک Route، Address یا Interface موجود تداخل دارد.

پاسخ سریع: قبل از حذف هر چیزی، وضعیت فعلی را با ip route show، ip address show و در صورت استفاده از Policy Routing با ip rule show بررسی کنید. اگر Route از قبل وجود دارد، به‌جای اضافه‌کردن دوباره آن، Route موجود را اصلاح کنید یا در صورت مناسب بودن از ip route replace استفاده کنید.

فهرست مطالب

RTNETLINK answers: File exists یعنی چه؟

RTNETLINK رابطی است که ابزارهایی مانند ip برای صحبت با بخش Networking کرنل Linux استفاده می‌کنند. وقتی دستور شما قصد ایجاد یک Route، Address یا Network Object را دارد که Kernel آن را موجود یا متعارض تشخیص می‌دهد، ممکن است پاسخ زیر را دریافت کنید:

RTNETLINK answers: File exists

این خطا الزاماً به یک فایل واقعی روی دیسک مربوط نیست. عبارت File exists نمایش خطای EEXIST است و Object موردنظر می‌تواند یک Route، IP Address، Link یا Tunnel باشد.

رایج‌ترین سناریو: Route از قبل وجود دارد

فرض کنید این دستور را اجرا می‌کنید:

sudo ip route add 10.20.0.0/24 via 192.168.1.1 dev eth0

اگر Route معادل از قبل در جدول Routing وجود داشته باشد، ممکن است با خطای File exists روبه‌رو شوید.

ابتدا Routeها را ببینید:

ip route show

برای IPv6:

ip -6 route show

مرحله ۱: Route دقیق مقصد را پیدا کنید

اگر مقصد موردنظر 10.20.0.0/24 است:

ip route show 10.20.0.0/24

یا کل Routing Table را بررسی کنید:

ip route show table all

این مرحله مهم است، چون Route ممکن است در Table دیگری غیر از main قرار داشته باشد.

مرحله ۲: مسیر واقعی یک IP را بررسی کنید

برای اینکه ببینید Kernel برای یک مقصد خاص چه Route‌ای انتخاب می‌کند:

ip route get 10.20.0.10

این دستور Route مؤثر را Resolve می‌کند و برای تشخیص Gateway و Interface واقعی بسیار کاربردی است.

مرحله ۳: استفاده از ip route replace به‌جای add

اگر هدف شما این است که Route موجود را اصلاح کنید یا در صورت نبودن آن ایجاد شود، می‌توانید در سناریوی مناسب از replace استفاده کنید:

sudo ip route replace 10.20.0.0/24 via 192.168.1.1 dev eth0

طبق مستندات iproute2، تفاوت به این شکل است:

🔹 ip route add: Route جدید اضافه می‌کند.

🔹 ip route change: Route موجود را تغییر می‌دهد.

🔹 ip route replace: Route را تغییر می‌دهد یا اگر وجود ندارد ایجاد می‌کند.

⚠️ روی VPS Remote، قبل از تغییر Default Route یا Gateway با replace مطمئن شوید مسیر SSH شما قطع نمی‌شود. یک Route اشتباه می‌تواند دسترسی سرور را فوراً از بین ببرد.

خطا هنگام اضافه‌کردن Default Route

برای مثال:

sudo ip route add default via 192.168.1.1 dev eth0

اگر Default Route از قبل وجود داشته باشد، ابتدا آن را ببینید:

ip route show default

ممکن است خروجی چیزی شبیه این باشد:

default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.10 metric 100

در این حالت اضافه‌کردن دستی همان Default Route معمولاً ضرورتی ندارد.

DHCP و Static Route هم‌زمان

یکی از علت‌های رایج این خطا این است که Interface از DHCP استفاده می‌کند و DHCP خودش Gateway و Route را ساخته است، اما شما همان Route را دوباره در Netplan یا Script دستی تعریف کرده‌اید.

ابتدا وضعیت Interface را بررسی کنید:

ip address show
ip route show

روی Ubuntu جدید:

netplan status --all

خطای RTNETLINK در Netplan

اگر خطا هنگام اجرای دستور زیر ظاهر می‌شود:

sudo netplan apply

احتمال دارد Route یا Gateway در بیش از یک محل تعریف شده باشد.

کانفیگ Merge شده Netplan را ببینید:

sudo netplan get

فایل‌ها را نیز بررسی کنید:

ls -l /etc/netplan/
sudo grep -R "routes:\|gateway4:\|gateway6:\|to: default\|0.0.0.0/0" /etc/netplan/

نمونه صحیح Default Route در Netplan

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      addresses:
        - 192.168.1.10/24
      routes:
        - to: default
          via: 192.168.1.1
          metric: 100

Netplan از تعریف Routeهای Static و Policy Routing پشتیبانی می‌کند. در یک Routing Table، Default Routeهای متعارض باید با دقت مدیریت شوند. :chatgpt-content-reference{index=”1″}

روی VPS Remote از netplan try استفاده کنید

اگر از راه دور به سرور متصل هستید، به‌جای Apply مستقیم تنظیمات شبکه می‌توانید ابتدا از:

sudo netplan try

استفاده کنید. Netplan تنظیم را موقتاً اعمال می‌کند و اگر آن را در زمان مشخص تأیید نکنید، برای جلوگیری از Lockout تلاش می‌کند تنظیم قبلی را برگرداند. :chatgpt-content-reference{index=”2″}

⚠️ حتی با netplan try نیز برای سرور Production بهتر است Console یا روش بازیابی خارج از SSH در دسترس داشته باشید. تغییر اشتباه IP، Gateway یا Route می‌تواند اتصال Remote را قطع کند.

خطا هنگام ip address add

RTNETLINK فقط مربوط به Routing نیست. ممکن است هنگام افزودن IP هم دیده شود:

sudo ip address add 192.168.1.10/24 dev eth0

ابتدا IPهای Interface را بررسی کنید:

ip address show dev eth0

مستندات iproute2 برای Address نیز فرمان‌های add، change و replace را در اختیار قرار می‌دهند. :chatgpt-content-reference{index=”3″}

Route خودکار ناشی از IP Address

وقتی IP با Prefix روی Interface قرار می‌دهید، Kernel معمولاً Route مربوط به همان Subnet را نیز به‌صورت خودکار ایجاد می‌کند.

مثلاً:

sudo ip address add 192.168.50.10/24 dev eth0

ممکن است Kernel خودش Route شبکه زیر را ایجاد کند:

192.168.50.0/24 dev eth0 proto kernel scope link

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

روی VPS تنظیمات شبکه سفارشی دارید؟

Static Route، چند IP، Tunnel، Docker Network و Policy Routing می‌توانند Routing Table سرور را پیچیده کنند. قبل از تغییر Gateway یا Route اصلی، بهتر است مسیر SSH و Routeهای فعال دقیق بررسی شوند.

تماس با پشتیبانی ایرانیکاسرور:
021-91302467

Policy Routing را فراموش نکنید

اگر سرور چند IP، چند Gateway یا چند Interface دارد، ممکن است Route در Table دیگری باشد.

Ruleها را ببینید:

ip rule show

و همه Tableها:

ip route show table all

اگر Route را در Table سفارشی اضافه می‌کنید، Table را صریح مشخص کنید:

sudo ip route add 10.20.0.0/24 via 192.168.1.1 dev eth0 table 100

چند Default Route با Metric متفاوت

اگر واقعاً چند Gateway دارید، Routeها باید طراحی مشخصی داشته باشند. برای مثال:

default via 192.168.1.1 dev eth0 metric 100
default via 192.168.2.1 dev eth1 metric 200

Route با Metric پایین‌تر ترجیح بیشتری دارد. Netplan نیز برای سناریوهای چند Gateway امکان تعریف Metric یا Routing Table مجزا را فراهم می‌کند. :chatgpt-content-reference{index=”4″}

بررسی NetworkManager

اگر سیستم از NetworkManager استفاده می‌کند، ممکن است Route داخل Connection Profile تعریف شده باشد و شما همان Route را دستی دوباره اضافه کنید.

Connectionها را ببینید:

nmcli connection show

Routeهای یک Connection:

nmcli connection show "CONNECTION_NAME"

NetworkManager نیز Route یکسان را به‌عنوان Route از قبل شناخته‌شده تشخیص می‌دهد. :chatgpt-content-reference{index=”5″}

خطا هنگام ساخت Tunnel یا Interface

اگر خطا بعد از دستوری مثل ip link add رخ می‌دهد، ممکن است Interface یا Tunnel با همان مشخصات از قبل وجود داشته باشد.

Interfaceها را ببینید:

ip link show

برای Interface خاص:

ip link show tun0

در Tunnelها فقط نام Interface مطرح نیست؛ ممکن است ترکیب Endpoint یا پارامترهای Kernel نیز Conflict ایجاد کند.

آیا باید Route قبلی را حذف کنیم؟

فقط اگر مطمئن هستید Route موجود اشتباه است.

مثال:

sudo ip route del 10.20.0.0/24 via 192.168.1.1 dev eth0

بعد می‌توانید Route درست را اضافه کنید.

⚠️ روی سرور Remote، Default Route را قبل از اطمینان از مسیر جایگزین حذف نکنید. حذف Gateway اصلی ممکن است همان لحظه Session SSH را قطع کند.

از ip route flush برای رفع سریع استفاده کنیم؟

روی VPS Remote معمولاً خیر. فرمان‌های Flush می‌توانند تعداد زیادی Route را هم‌زمان پاک کنند.

مثلاً اجرای کورکورانه این نوع فرمان:

ip route flush table main

می‌تواند شبکه سرور را مختل کند. Route مشکل‌دار را دقیق شناسایی و فقط همان مورد را اصلاح کنید.

Script شبکه دوبار اجرا می‌شود

گاهی مشکل از این است که Route یک بار توسط Netplan، NetworkManager یا systemd-networkd ساخته می‌شود و بار دوم توسط Script شما.

برای مثال یک Script Boot شامل:

ip route add 10.20.0.0/24 via 192.168.1.1

اگر هر بار بدون بررسی اجرا شود، اجرای دوم ممکن است Fail شود.

برای عملیات Idempotent در شرایطی که semantics آن برای شما مناسب است، می‌توانید از:

ip route replace 10.20.0.0/24 via 192.168.1.1 dev eth0

استفاده کنید یا قبل از Add وجود Route را بررسی کنید.

چک‌لیست سریع رفع خطا

سناریو اولین بررسی
ip route add خطا می‌دهد ip route show table all
Default Gateway اضافه نمی‌شود ip route show default
ip address add خطا می‌دهد ip address show dev INTERFACE
netplan apply خطا می‌دهد netplan get و بررسی Routeهای تکراری
چند Gateway دارید Metric، Table و ip rule
خطا در Tunnel یا Link ip link show

ترتیب امن عیب‌یابی

۱. خروجی ip address show را ذخیره کنید.

۲. خروجی ip route show table all را بررسی کنید.

۳. با ip rule show Policy Routing را بررسی کنید.

۴. مشخص کنید Route از DHCP، Netplan، NetworkManager یا Script آمده است.

۵. Route یا Address تکراری را شناسایی کنید.

۶. در صورت نیاز به تغییر Route موجود از replace یا اصلاح Config دائمی استفاده کنید.

۷. روی VPS Remote تغییرات Netplan را ترجیحاً با netplan try آزمایش کنید.

پرسش‌های متداول

RTNETLINK answers: File exists دقیقاً یعنی چه؟

یعنی عملیات Networking درخواست ایجاد Objectی را داده که Kernel آن را موجود یا متعارض تشخیص داده است. این Object می‌تواند Route، Address، Interface یا Tunnel باشد.

فرق ip route add و replace چیست؟

add Route جدید ایجاد می‌کند، ولی replace Route موجود را تغییر می‌دهد و اگر وجود نداشته باشد آن را ایجاد می‌کند.

چرا Default Route را نمی‌توانم اضافه کنم؟

ممکن است DHCP، Netplan یا NetworkManager قبلاً Default Route را ساخته باشد. ابتدا ip route show default را بررسی کنید.

آیا پاک‌کردن Route مشکل را حل می‌کند؟

فقط اگر Route موجود اشتباه باشد. روی سرور Remote حذف Default Route می‌تواند اتصال SSH را قطع کند؛ بنابراین ابتدا Route جایگزین و مسیر دسترسی را بررسی کنید.

چرا بعد از Reboot خطا دوباره برمی‌گردد؟

احتمالاً Route تکراری در Config دائمی مانند Netplan، NetworkManager، cloud-init یا یک Startup Script تعریف شده است. تغییر موقت Routing Table بدون اصلاح منبع اصلی بعد از Reboot از بین می‌رود.

آیا ip route flush راه‌حل خوبی است؟

برای VPS Remote معمولاً خیر. Flush ممکن است Routeهای ضروری را حذف و شبکه سرور را قطع کند. بهتر است فقط Route مشکل‌دار اصلاح شود.

منابع رسمی

🔹 مستندات ip-route در iproute2

🔹 مستندات ip-address در iproute2

🔹 مستندات Netplan CLI

🔹 مستندات netplan try و Rollback تنظیمات شبکه

جمع‌بندی

برای رفع RTNETLINK answers: File exists ابتدا Route، Address یا Interface موجود را پیدا کنید. بیشتر مواقع مشکل از اضافه‌کردن دوباره Route یا Gateway، تداخل DHCP با Static Config یا اجرای تکراری Script شبکه است. به‌جای پاک‌سازی گسترده Routing Table، فقط Object متعارض را اصلاح کنید و روی سرور Remote قبل از هر تغییر شبکه مسیر بازیابی را در نظر بگیرید.

خطای RTNETLINK هنوز برطرف نشده است؟

اگر سرور چند IP، Gateway، Tunnel یا Route سفارشی دارد و نمی‌خواهید با تغییر اشتباه دسترسی SSH قطع شود، می‌توانید برای بررسی Routing Table و تنظیمات شبکه درخواست فنی ثبت کنید.

تماس با پشتیبانی ایرانیکاسرور:
021-91302467

اشتراک‌گذاری مقاله
گفت‌وگو درباره آموزش

دیدگاه‌ها (۰)

هنوز دیدگاهی ثبت نشده است.

دیدگاه یا سؤال خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *