محتوای آموزشی وبلاگ نتآرام
روی سرور اوبونتو
apt update را اجرا میکنید و خطای 407 Proxy Authentication Required میگیرید. این عدد یعنی پراکسی میان سرور و مخزن، اطلاعات ورود لازم را دریافت نکرده یا نپذیرفته است. پراکسی مثل یک دروازه بین سرور شما و اینترنت است؛ ممکن است ورود خودش را بخواهد، حتی اگر خود مخزن هیچ رمز عبوری نخواهد.علت همیشه رمز اشتباه نیست. شاید یک تنظیم قدیمی سرور را به پراکسی نامربوط بفرستد، رمز بعد از تغییر بهروز نشده باشد، نوع احراز هویت پراکسی با APT سازگار نباشد یا فایل رمز برای میزبان دیگری تنظیم شده باشد. در ادامه هر حالت را جداگانه پیدا و اصلاح میکنیم.
این آموزش برای Ubuntu و APT و یک کاربر دارای SSH و مجوز sudo است. اگر سرور بخشی از شبکه سازمانی است، قبل از دور زدن پراکسی از سیاست شبکه مطمئن شوید. نامها و آدرسهای زیر نمونهاند؛ از مدیر شبکه اطلاعات معتبر بگیرید و رمز واقعی را در گفتگو، تیکت، تصویر یا خط فرمان عمومی نفرستید.
۱. مطمئن شوید پیام واقعاً از پراکسی است
کد / دستورsudo apt-get update
خط خطادار و نام مقصد را بخوانید.
407 به احراز هویت پراکسی اشاره دارد؛ 401 معمولاً به احراز هویت سرور مقصد مربوط است. خطای Connection refused یا timeout ممکن است نشان دهد پراکسی در دسترس نیست و قبل از بررسی رمز باید آدرس، پورت و مسیر آن را درست کنید. پیام EXPKEYSIG نیز مشکل امضای مخزن است؛ برای آن راهنمای کلید منقضی APT را بخوانید.ممکن است بعضی مخزنها با موفقیت بهروزرسانی شوند و یکی خطا بدهد. پس سطرهای هشدار انتهای خروجی را هم ببینید؛ وجود چند پیام
Hit به معنی سلامت همه مخزنها نیست.۲. تنظیم پراکسی APT از کجا آمده است؟
این دستور مسیر فایلهای تنظیماتی را که عبارت proxy دارند نشان میدهد، بدون چاپ محتوای آنها:
کد / دستورsudo grep -ril 'proxy' /etc/apt/apt.conf /etc/apt/apt.conf.d/ 2>/dev/null
اگر خروجی خالی است، ممکن است پراکسی از متغیر محیطی یا روش کشف خودکار آمده باشد. اگر نام فایلی ظاهر شد، آن را با ویرایشگر و مجوز مناسب باز کنید و دنبال
Acquire::http::Proxy، Acquire::https::Proxy، تنظیم مخصوص یک میزبان یا Proxy-Auto-Detect بگردید. بعضی فایلها رمز داخل آدرس دارند؛ خروجی یا تصویر آنها را برای دیگران نفرستید.برای دیدن تنظیمات مؤثر APT میتوانید این دستور را اجرا کنید:
کد / دستورapt-config dump | grep -i proxy
هشدار: این خروجی ممکن است نام کاربری و رمز ذخیرهشده را آشکار کند. آن را فقط روی صفحه خود ببینید و در تیکت یا چت نگذارید. تنظیم مربوط به یک میزبان یا ابزار کشف خودکار میتواند بر مقدار عمومی اثر بگذارد.
متغیرهای محیطی نشست فعلی را هم بررسی کنید:
کد / دستورenv | grep -i proxy
این خروجی نیز ممکن است رمز داشته باشد.
sudo بسته به تنظیماتش ممکن است بعضی متغیرهای محیطی را حذف یا نگه دارد؛ بنابراین خروجی کاربر عادی همیشه دقیقاً همان محیطی نیست که دستور APT با sudo میبیند. اگر لازم است، sudo env | grep -i proxy را فقط در نشست خصوصی خود ببینید. وجود یک مقدار قدیمی در http_proxy یا https_proxy را با تنظیمات فایلها مقایسه کنید.۳. اگر پراکسی دیگر لازم نیست، مسیر مستقیم را امتحان کنید
فقط وقتی مدیر شبکه تأیید میکند اتصال مستقیم مجاز است، میتوانید برای همین اجرای آزمایشی پراکسی عمومی HTTP و HTTPS را روی حالت مستقیم بگذارید:
کد / دستورsudo apt-get -o Acquire::http::Proxy=DIRECT -o Acquire::https::Proxy=DIRECT update
این دستور فایل تنظیمات را دائمی تغییر نمیدهد. اگر همان مخزن این بار بدون ۴۰۷ بهروزرسانی شد، پراکسی قبلی یا اطلاعات ورود آن احتمالاً علت بوده است. اگر هنوز خطا دارید، ممکن است اتصال مستقیم ممنوع باشد یا تنظیم مخصوص میزبان و کشف خودکار همچنان مسیر دیگری انتخاب کنند؛ شکست این آزمون بهتنهایی کافی نیست که وجود پراکسی را رد کنیم.
برای اصلاح دائمی، فایل واقعیای را که در مرحله قبل پیدا کردید با پشتیبان و ویرایش محدود اصلاح کنید. مثلاً اگر فقط یک خط قدیمی برای پراکسی داخل آن است، با هماهنگی مدیر شبکه همان خط را به مقدار مناسب یا
DIRECT تغییر دهید. اگر فایل شامل تنظیمات دیگری هم هست، حذف یا غیرفعال کردن کل فایل میتواند آن تنظیمات را نیز از کار بیندازد. سپس sudo apt-get update معمولی را تکرار کنید.۴. اگر پراکسی لازم است، آدرس را درست کنید
آدرس و پورت را از مدیر شبکه بگیرید. برای نمونه، اگر پراکسی HTTP شما
کد / دستورproxy.example.net با پورت ۳۱۲۸ است، در فایل تنظیم مربوط میتواند چنین خطهایی وجود داشته باشد:Acquire::http::Proxy "http://proxy.example.net:3128/";
Acquire::https::Proxy "http://proxy.example.net:3128/";
این نشانی فقط نمونه است.
http:// ابتدای آدرس، نوع اتصال به پراکسی را مشخص میکند؛ حتی برای مخزن HTTPS ممکن است سازمان از پراکسی HTTP استفاده کند. اگر شبکه شما پراکسی HTTPS ارائه میدهد، نوع و نشانی آن را طبق راهنمای مدیر شبکه و نسخه APT وارد کنید. تنظیم پراکسی جدید را بدون بررسی فایلهای موجود اضافه نکنید؛ تنظیمهای تکراری و مخصوص میزبان میتوانند نتیجه را گیجکننده کنند.دسترسی به پورت پراکسی را از سرور بررسی کنید. با جایگزین کردن نام و پورت واقعی:
کد / دستورgetent hosts proxy.example.net
اگر نام به IP ترجمه نشود، ابتدا DNS یا نام پراکسی را اصلاح کنید. برای مشاهده مسیر به IP واقعی پراکسی، IP نمونه را جایگزین کنید:
کد / دستورip route get 192.0.2.10
این دستور مسیر را نشان میدهد، اما ثابت نمیکند رمز درست است یا پورت باز است. اگر نام و مسیر درستاند ولی خطا
Connection refused است، وضعیت سرویس و دسترسی پورت باید در خود شبکه یا پراکسی بررسی شود.۵. نام کاربری و رمز پراکسی را امن وارد کنید
اگر پراکسی واقعاً به ورود نیاز دارد، نام کاربری و رمز معتبر و نوع احراز هویت را از مدیر آن بگیرید. قرار دادن رمز در URL داخل فایل عمومی APT یا در خود دستور ممکن است آن را در تاریخچه، فهرست پردازشها یا خروجی عیبیابی آشکار کند. APT برای این کار فایل محدودشده
auth.conf دارد.ابتدا پوشه مخصوص اطلاعات ورود را بسازید، اگر وجود ندارد:
کد / دستورsudo mkdir -p /etc/apt/auth.conf.d
برای ساخت یک فایل جدید با مجوز محدود، این دستور را اجرا کنید:
کد / دستورsudo sh -c 'umask 077; set -C; : > /etc/apt/auth.conf.d/70-proxy.conf'
اگر فایل از قبل وجود داشته باشد، دستور باید خطا بدهد و آن را خالی نکند. در این حالت ابتدا همان فایل را با مدیر شبکه بررسی کنید یا نام تازهای انتخاب کنید؛ یک فایل موجود و ناشناخته را رونویسی نکنید. سپس فایل تازه را باز کنید:
کد / دستورsudo nano /etc/apt/auth.conf.d/70-proxy.conf
در ویرایشگر، نشانی و مشخصات واقعی را جایگزین نمونه کنید:
کد / دستورmachine http://proxy.example.net:3128
login PROXY_USERNAME
password PROXY_PASSWORD
در nano با Ctrl+O و Enter ذخیره و با Ctrl+X خارج شوید. برای پراکسی HTTP، آوردن
http:// در خط machine مهم است؛ اگر پروتکل نوشته نشود، قاعده تطبیق پیشفرض فایل احراز هویت ممکن است با پراکسی HTTP مطابقت نکند. آدرس و پورت باید با پراکسی تنظیمشده یکی باشند. قالب فایل بر پایه token است؛ رمز دارای فاصله یا روشهایی مانند NTLM ممکن است به تنظیم سازگار دیگری نیاز داشته باشند. نوع پشتیبانیشده را با مدیر پراکسی بررسی کنید.مجوز فایل را بدون نمایش محتوا ببینید:
کد / دستورsudo stat -c '%a %U %G %n' /etc/apt/auth.conf.d/70-proxy.conf
برای فایل جدیدِ این مثال انتظار
600 root root داریم. اگر مالک یا مجوز متفاوت است، پیش از وارد کردن رمز علت را اصلاح کنید. توجه کنید که اگر اتصال به خود پراکسی با HTTP ساده باشد، اطلاعات احراز هویت میتواند در مسیر شبکه به پراکسی قابل مشاهده باشد؛ HTTPS بودن مخزن این بخش را لزوماً رمزگذاری نمیکند. برای اطلاعات حساس، از پراکسی HTTPS معتبر یا مسیر شبکه امنِ تأییدشده استفاده کنید.حالا دوباره دستور معمول را بزنید:
کد / دستورsudo apt-get update
اگر ۴۰۷ برطرف شد و فهرست همان مخزن بدون هشدار تازه شد، تنظیم به نتیجه رسیده است. اگر هنوز ۴۰۷ میبینید، بهترتیب نام و پورت machine، نام کاربری، بهروز بودن رمز، نوع احراز هویت و ساعت سیاستهای دسترسی را با مدیر پراکسی تطبیق دهید. از تلاشهای پیاپی با رمز حدسی پرهیز کنید؛ ممکن است حساب قفل شود.
۶. اگر مشکل فقط در یک برنامه یا پس از sudo است
موفق بودن مرورگر یا
curl بهتنهایی نشان نمیدهد APT از همان تنظیم پراکسی و همان حساب استفاده میکند. برعکس، اصلاح فایل APT هم لزوماً تنظیم همه برنامهها را عوض نمیکند. در Docker یا محیط جدا، تنظیمات داخل کانتینر و شبکه آن ممکن است با میزبان فرق کند.اگر پس از برطرف شدن ۴۰۷ پیام دیگری درباره امضا، DNS یا TLS دیدید، آن را جداگانه بررسی کنید. نام سرور، زمان خطا، نوع پیام و نتیجه آزمون مستقیم مجاز را بدون رمز در اختیار مسئول شبکه بگذارید. روی سرور مجازی ایران و سرور اختصاصی ایران روش تشخیص یکسان است، اما الزام استفاده از پراکسی به شبکه همان سرویس بستگی دارد.
جزئیات فرمت اطلاعات ورود و تنظیم پراکسی را در راهنمای auth.conf اوبونتو و مستند HTTP transport برای APT بخوانید.
اشتراکگذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.
مقاله بعدی
دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
