محتوای آموزشی وبلاگ نتآرام
دستور
apt update را روی سرور مجازی ایران اجرا کردهاید، اما عبارت Connecting برای مدت طولانی روی صفحه مانده است. گاهی هم پیام Network is unreachable یا Connection timed out میبینید. این مشکل همیشه به معنی قطع کامل اینترنت نیست: ممکن است سرور به مقصد از مسیر IPv4 برسد، اما مسیر IPv6 آن تا همان مقصد کار نکند.در این راهنما اول مشخص میکنیم کدام مسیر مشکل دارد، بعد یک راهحل موقت و قابل بازگشت برای APT به کار میبریم. اگر علت جای دیگری باشد، مسیرهای جایگزین را هم توضیح میدهیم. مثالها برای Ubuntu Server 22.04 و 24.04 هستند و در بسیاری از نسخههای جدید Debian نیز کاربرد دارند. نام مخزن، آدرس کارت شبکه و نحوه پیکربندی سرور شما میتواند متفاوت باشد.
قبل از شروع: کجا دستورها را وارد کنیم؟
از رایانه خود با SSH یا از طریق کنسول پنل ارائهدهنده به سرور وصل شوید. دستورها در ترمینال خود سرور اجرا میشوند، نه در مرورگر. حساب شما باید اجازه استفاده از
sudo داشته باشد. اگر سرور سرویس مهمی دارد، قبل از تغییر تنظیمات دائمی، زمان مناسبی انتخاب و از تنظیمات فعلی نسخه پشتیبان تهیه کنید. این آموزش نیازی به خاموش کردن فایروال یا غیرفعال کردن بررسی امضای بستهها ندارد.برای دیدن نسخه سیستمعامل، دستور زیر را اجرا کنید:
کد / دستورcat /etc/os-release
در خروجی به
VERSION_ID و VERSION_CODENAME توجه کنید. برای نمونه، نام نسخه Ubuntu 24.04 برابر noble و Ubuntu 22.04 برابر jammy است. اگر سرور AlmaLinux دارید، از APT استفاده نمیکند و باید عیبیابی مدیر بسته DNF را جداگانه انجام دهید.۱. اول متن خطا و نام مخزن را پیدا کنید
دستور معمول را اجرا کنید و چند خط آخر را بخوانید:
کد / دستورsudo apt-get update
اگر آدرسی شبیه
2001:... کنار خطا میبینید، APT در آن تلاش از IPv6 استفاده کرده است. آدرسهایی مثل 192.0.2.10 شکل IPv4 دارند. با این حال، دیدن یک خطای IPv6 بهتنهایی ثابت نمیکند همه تلاشهای IPv4 موفق شدهاند؛ APT ممکن است چند آدرس را امتحان کند. نام واقعی مخزنی را که در خط Err یا Failed to fetch آمده یادداشت کنید.برای پیدا کردن نشانی مخازن تنظیمشده، این دستور را بزنید:
کد / دستورgrep -R -E '^(URIs:|deb )' /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null
در اوبونتوهای جدید ممکن است مخازن در فایلهای
.sources باشند و در نسخههای دیگر در فایلهای .list. اگر دستور خروجی نداد، فایلهای آن پوشه را با ls /etc/apt/sources.list.d/ ببینید و قالب مخزن را بررسی کنید. در ادامه به جای archive.ubuntu.com از نام همان مخزنی استفاده کنید که واقعاً خطا داده است. اطلاعات محرمانه یا رمز احتمالی داخل آدرس پراکسی را در گزارش عمومی منتشر نکنید.۲. وضعیت مسیرهای شبکه را ببینید
این دو دستور مسیر پیشفرض هر خانواده آدرس را نشان میدهند:
کد / دستورip -4 route show default
ip -6 route show default
در خروجی ممکن است عبارتی مثل
default via ... dev ... ببینید. اگر برای IPv6 هیچ مسیر پیشفرضی نمایش داده نشد، این یک سرنخ است، نه حکم قطعی درباره همه انواع شبکه: بعضی شبکهها از مسیرها یا طراحی خاص استفاده میکنند. مهمتر آن است که نتیجه اتصال واقعی به همان مخزن را در مرحله بعد ببینیم. نام رابط پس از dev، مثلاً ens160، نام کارت شبکه این سرور است و ممکن است برای شما فرق کند.برای دیدن آدرسهای نصبشده روی رابطها:
کد / دستورip -br address
داشتن آدرس IPv6 محلی که با
fe80 شروع میشود به معنی داشتن اتصال عمومی IPv6 نیست. همچنین اگر سرور از ابتدا فقط IPv4 دارد، نبود IPv6 لزوماً ایراد سرویس نیست.۳. IPv4 و IPv6 را جداگانه امتحان کنید
اول مطمئن شوید نام مخزن به آدرس تبدیل میشود:
کد / دستورgetent hosts archive.ubuntu.com
اگر نام مخزن شما متفاوت است، آن را جایگزین کنید. دیدن یک یا چند آدرس یعنی تبدیل نام دستکم پاسخ داده است؛ این خروجی بهتنهایی ثابت نمیکند هر دو مسیر شبکه سالماند. اگر هیچ پاسخی ندارید یا پیام مربوط به حل نام میبینید، ابتدا راهنمای رفع مشکل DNS سرور را دنبال کنید.
اکنون با
کد / دستورcurl همان فایل را یک بار از هر مسیر درخواست کنید. نمونه زیر برای مخزن معمول Ubuntu 24.04 است؛ در Ubuntu 22.04 عبارت noble را به jammy تغییر دهید و اگر سرور از مخزن دیگری استفاده میکند، آدرس واقعی آن را بگذارید:curl -4 -I --connect-timeout 8 --max-time 20 http://archive.ubuntu.com/ubuntu/dists/noble/InRelease
کد / دستورcurl -6 -I --connect-timeout 8 --max-time 20 http://archive.ubuntu.com/ubuntu/dists/noble/InRelease
گزینه
-4 فقط IPv4 و -6 فقط IPv6 را انتخاب میکند. -I فقط سرآیند پاسخ را میگیرد و دو گزینه زماندار نمیگذارند آزمون برای مدت طولانی منتظر بماند. نتیجهها را اینطور بخوانید:- اگر IPv4 پاسخ HTTP مناسب میدهد ولی IPv6 با
Network is unreachableیا timeout شکست میخورد، مسیر IPv6 تا آن مقصد مظنون است. - اگر هر دو شکست میخورند، مشکل ممکن است از اینترنت سرور، پراکسی، فایروال، خود مخزن یا مسیر شبکه باشد. راهحل مخصوص IPv4 در بخش بعد احتمالاً بهتنهایی کافی نیست.
- اگر پاسخ
403یا404میگیرید، سرور مقصد پاسخ داده است؛ بهترتیب دسترسی به مخزن یا درست بودن آدرس و نام نسخه را بررسی کنید. این دو پاسخ را با قطع شبکه یکی ندانید. - اگر
curlنصب نیست، بدون نصبکردن عجولانه از نتیجه خود APT در مرحله بعد استفاده کنید؛ نصب ابزار جدید با APT خراب ممکن است همین خطا را تکرار کند.
پاسخ HTTP موفق نیز ثابت نمیکند امضای مخزن معتبر است. APT امضای مخزن را جداگانه بررسی میکند و باید نتیجه آن را در انتهای کار ببینید.
۴. راهحل سریع: فقط همین بار APT را از IPv4 اجرا کنید
اگر آزمون قبلی نشان داد IPv4 کار میکند، این دستور را اجرا کنید:
کد / دستورsudo apt-get -o Acquire::ForceIPv4=true update
این گزینه فقط برای همین اجرای APT است؛ تنظیم عمومی سیستم یا IPv6 سایر برنامهها را تغییر نمیدهد. اگر فهرست مخازن بدون خطای
Err، Failed to fetch یا هشدار استفاده از فهرست قدیمی بهروز شد، میتوانید به کارتان ادامه دهید. صرف نمایش پایان دستور یا حتی کد خروج موفق همیشه به معنی موفقیت تکتک مخازن نیست؛ خطوط هشدار را نیز بخوانید.برای دیدن بستههای قابل ارتقا بدون نصب آنها:
کد / دستورapt list --upgradable
برای دیدن برنامه احتمالی ارتقا، بدون اعمال تغییر:
کد / دستورsudo apt-get -s upgrade
حرف
-s یعنی شبیهسازی. اگر فهرست غیرمنتظرهای از تغییرات دیدید یا مخزنی هنوز خطا میدهد، ارتقای واقعی را فعلاً انجام ندهید. این دستور جای بررسی سازگاری سرویسها و تهیه بکاپ را نمیگیرد.۵. اگر مشکل تکرار میشود، تنظیم موقت اما ماندگار برای APT
این مرحله را فقط وقتی انجام دهید که IPv4 واقعاً کار میکند، سرور IPv4 خروجی دارد و میخواهید تا زمان رفع مسیر IPv6، APT از IPv4 استفاده کند. روی سروری که فقط IPv6 دارد یا به سازوکارهایی مثل NAT64 وابسته است، اجبار IPv4 ممکن است مشکل را بدتر کند.
ابتدا ببینید تنظیم مشابهی از قبل وجود دارد یا نه:
کد / دستورapt-config dump | grep -i 'Acquire::ForceIPv'
اگر تنظیمی از قبل وجود دارد، بدون شناخت کاربردش آن را بازنویسی نکنید. در غیر این صورت یک فایل تنظیم مجزا باز کنید:
کد / دستورsudo nano /etc/apt/apt.conf.d/99-netaram-ipv4
اگر فایل از قبل محتوا دارد، بهجای جایگزین کردن آن، ابتدا علت وجودش را بررسی کنید. در فایل جدید فقط این خط را بنویسید:
کد / دستورAcquire::ForceIPv4 "true";
نقطهویرگول آخر خط لازم است. در nano کلیدهای Ctrl+O و Enter را برای ذخیره و Ctrl+X را برای خروج بزنید. سپس بررسی کنید APT تنظیم را میخواند:
کد / دستورapt-config dump | grep -i 'Acquire::ForceIPv4'
حالا دوباره
sudo apt-get update را اجرا و تمام خطاها را بخوانید. این تغییر فقط رفتار دریافت APT را عوض میکند و تعمیر واقعی شبکه IPv6 نیست. جزئیات این گزینه در راهنمای رسمی تنظیمات APT اوبونتو آمده است.برای بازگشت، همان فایل را با
sudo nano /etc/apt/apt.conf.d/99-netaram-ipv4 باز کنید، ابتدای خط // بگذارید، ذخیره کنید و دوباره خروجی apt-config dump را ببینید. اگر هنوز مقدار true نمایش داده میشود، تنظیم مشابهی در فایل دیگری یا تنظیمات اصلی وجود دارد؛ آن را بدون شناخت اثرش حذف نکنید.۶. اگر با IPv4 هم درست نشد چه کنیم؟
خطای DNS: اگر نام مخزن حل نمیشود، DNS سرور یا دسترسی به DNS را رفع کنید؛ انتخاب IPv4 بدون حل نام مشکل را برطرف نمیکند.
خطای 403: نشانی مخزن، پیام کامل پاسخ و محدودیتهای شبکه یا مقصد را بررسی کنید. برای مخزن جایگزین فقط از نشانی معتبر و سازگار با نسخه سیستمعامل استفاده کنید و امضای بستهها را فعال نگه دارید. یک 403 بهتنهایی دلیل قطعی تحریم یا خرابی سرور نیست.
خطای Release file یا امضا: این خطا با اختلال مسیر فرق دارد. برای مسیر اشتباه مخزن از راهنمای خطای Release file کمک بگیرید. گزینههای غیرفعالکردن احراز هویت مخزن را برای عبور از خطا فعال نکنید.
هر دو مسیر timeout میشوند: با نام مخزن، زمان خطا و نتیجه آزمون IPv4 و IPv6، مسیر خروجی شبکه و وضعیت خود مخزن را بررسی کنید. اگر سرور پراکسی اجباری دارد، مقایسه مستقیم
curl لزوماً معادل مسیر APT از پراکسی نیست؛ تنظیم پراکسی APT را نیز با مدیر شبکه تطبیق دهید. در این وضعیت پاککردن همه قوانین فایروال میتواند امنیت و دسترسی را به خطر بیندازد.۷. راهحل اصلی و آزمون نهایی
اگر سرور شما باید IPv6 عمومی داشته باشد، آدرس، دروازه و روش تنظیم آن را از ارائهدهنده بگیرید و با تنظیمات فعلی مقایسه کنید. برای تغییر شبکه از کنسول خارج از باند استفاده کنید و بدون داشتن مسیر بازگشت، تنظیم SSH فعال را تغییر ندهید. در اوبونتوی دارای Netplan،
netplan try میتواند بعضی تغییرات را موقت آزمایش کند، اما جای دسترسی کنسول و بررسی محدودیتهای آن را نمیگیرد.پس از اصلاح مسیر، آزمونهای IPv4 و IPv6 مرحله ۳ را تکرار کنید، تنظیم موقت APT را برگردانید و
sudo apt-get update را اجرا کنید. وقتی مخازن موردنیاز بدون خطا و هشدار باقیماندن فهرست قدیمی دریافت شدند، مسئله APT حل شده است. اگر فقط IPv4 جواب میدهد، میتوانید تنظیم محدود به APT را موقت نگه دارید و عیبیابی IPv6 را جداگانه ادامه دهید.برای انتخاب زیرساخت متناسب با سیستمعامل و نیاز شبکه، مشخصات سرور مجازی ایران نتآرام را ببینید و پیش از سفارش درباره پشتیبانی IPv6 و تنظیمات شبکه همان پلن سؤال کنید.
برچسبها:
اشتراکگذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.
مقاله بعدی
دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
