وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

رفع خطای unable to resolve host در sudo؛ نام سرور اوبونتو را درست کنیم

آموزش بررسی hostname، فایل hosts و ترتیب نام‌یابی برای رفع پیام unable to resolve host در سرور اوبونتو و لینوکس.

انتشار:
توسط تیم فنی نت‌آرام
۶ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله رفع خطای unable to resolve host در sudo؛ نام سرور اوبونتو را درست کنیم در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
دستور ساده‌ای مثل sudo apt update را اجرا می‌کنید و پیش از خروجی آن، پیامی شبیه sudo: unable to resolve host my-vps می‌بینید. ممکن است خود دستور همچنان اجرا شود، ولی این هشدار یعنی سیستم نتوانسته نام فعلی خودش را به آدرس مناسب تبدیل کند. یک علت رایج، ناهماهنگی نام سرور با تنظیم محلی نام‌هاست؛ گاهی هم ترتیب جست‌وجوی نام‌ها یا تنظیمات پلتفرم باعث مشکل می‌شود.
این راهنما نام سرور را در Ubuntu بررسی می‌کند و برای بسیاری از سرورهای Debian نیز قابل استفاده است. در AlmaLinux مسیرها مشابه‌اند، اما روش مدیریت نام و ترتیب سرویس‌ها ممکن است متفاوت باشد. دستورها را در ترمینال سرور پس از ورود با SSH یا کنسول اجرا کنید. نیازی به خرید دامنه یا تغییر رکورد عمومی DNS برای هر خطای sudo نیست.

۱. هشدار را با خطای دسترسی اشتباه نگیرید

ابتدا یک دستور بی‌خطر اجرا کنید:
کد / دستورsudo true
اگر فقط هشدار نام میزبان را دیدید و دستور بعد از واردکردن رمز به خط فرمان برگشت، مشکل اصلی به احتمال زیاد نام‌یابی است. اگر پیام متفاوتی مانند not in the sudoers file یا رمز اشتباه می‌بینید، دسترسی sudo موضوع جداگانه‌ای است و باید ابتدا آن را رفع کنید. متن خطا را دقیق بخوانید؛ وجود کلمه sudo در پیام، به‌تنهایی به معنی خرابی مجوز مدیر نیست.

۲. نامی را که سیستم واقعاً استفاده می‌کند ببینید

کد / دستورhostname
فرض کنید خروجی my-vps است. شما باید در ادامه از خروجی واقعی سرور خود استفاده کنید، نه از همین نمونه. برای دیدن اطلاعات بیشتر:
کد / دستورhostnamectl status
عبارت Static hostname معمولاً نام ثابت تنظیم‌شده را نشان می‌دهد. اکنون محتوای فایل نام میزبان را بخوانید:
کد / دستورcat /etc/hostname
در اوبونتو معمولاً این فایل نام ثابت را نگه می‌دارد. اگر hostname و محتوای فایل متفاوت‌اند، ممکن است نام موقت، پیکربندی پلتفرم یا یک تغییر قبلی در کار باشد. پیش از تغییر نام، اثر آن بر برنامه‌ها، گواهی‌ها و تنظیمات سازمان را بررسی کنید؛ هدف این مقاله هماهنگ‌کردن نام موجود است، نه تغییر نام همه سرویس‌ها.

۳. حل‌شدن نام فعلی را امتحان کنید

کد / دستورgetent hosts "$(hostname)"
اگر خطی شامل آدرس و نام سرور چاپ شد، سیستم برای این نام پاسخی پیدا کرده است. اگر خروجی خالی است، نام از روش‌های تنظیم‌شده برای نام‌یابی پاسخ نگرفته است. گاهی دستور با تأخیر پاسخ می‌دهد؛ این نیز سرنخی برای بررسی ترتیب جست‌وجو یا دسترس‌پذیری منبع نام است. نتیجه به تنظیم NSS سیستم وابسته است و صرف داشتن DNS عمومی سالم تضمین نمی‌کند نام محلی سرور حل شود.
اکنون نگاشت‌های محلی را ببینید:
کد / دستورcat /etc/hosts
در یک پیکربندی ساده اوبونتو ممکن است چیزی مانند نمونه زیر ببینید:
کد / دستور127.0.0.1 localhost 127.0.1.1 old-vps
اگر نام واقعی خروجی مرحله قبل my-vps است و این فایل تنها old-vps را دارد، این ناهماهنگی می‌تواند علت هشدار باشد. آدرس‌های 127.* به خود همان سیستم اشاره می‌کنند و IP عمومی سرور نیستند. قبل از ویرایش، کاربرد خط‌های موجود و وابستگی برنامه‌های خود را در نظر بگیرید.

۴. پیش از ویرایش از فایل فعلی نسخه بگیرید

کد / دستورsudo cp -an /etc/hosts /etc/hosts.before-hostname-fix
گزینه -n از جایگزینی فایل موجود جلوگیری می‌کند. اگر قبلاً نسخه‌ای با این نام دارید، نام تازه‌ای انتخاب کنید و بعد وجود و محتوای نسخه پشتیبان را ببینید:
کد / دستورsudo ls -l /etc/hosts.before-hostname-fix
این نسخه برای بازگشت از تغییر فعلی است و جای بکاپ خارج از سرور را نمی‌گیرد. اگر sudo هشدار نام می‌دهد ولی اجازه اجرا دارید، ممکن است همین هشدار را هنگام کپی نیز ببینید.

۵. نام واقعی را در hosts هماهنگ کنید

فایل را در ویرایشگر باز کنید:
کد / دستورsudo nano /etc/hosts
اگر سرور شما پیکربندی ساده‌ای مانند مثال دارد و نام واقعی آن my-vps است، خط مربوط به نام سرور می‌تواند به این شکل باشد:
کد / دستور127.0.0.1 localhost 127.0.1.1 my-vps
به‌جای my-vps دقیقاً نامی را بگذارید که دستور hostname نشان داد. اگر خط 127.0.1.1 از قبل وجود دارد، نام درست را با توجه به کاربرد خط اصلاح کنید؛ چند خط متناقض برای یک نام نسازید. بقیه رکوردهای لازم و خط localhost را حذف نکنید. در nano با Ctrl+O و Enter ذخیره کنید و سپس Ctrl+X بزنید.
این نمونه برای نام محلی یک سرور ساده است. اگر سرور بخشی از کلاستر، ایمیل یا برنامه‌ای است که به آدرس مشخص برای نام کامل خود نیاز دارد، پیش از نگاشت آن نام به loopback با تنظیمات همان برنامه تطبیق دهید؛ تغییر نگاشت ممکن است مقصد اتصال محلی برنامه را عوض کند. همچنین نام دامنه عمومی سایت را بی‌دلیل به 127.0.1.1 وصل نکنید. راهنمای نام‌های ثابت در مستندات Ubuntu نمونه‌های کاربردی را نشان می‌دهد.

۶. نتیجه را بدون ریبوت آزمایش کنید

کد / دستورgetent hosts "$(hostname)"
اکنون باید برای نامی که تنظیم کرده‌اید پاسخ متناسب ببینید. سپس:
کد / دستورsudo true
اگر هشدار دیگر ظاهر نشد، نام‌یابی موردنیاز sudo در این آزمون درست شده است. یک دستور کاری معمول خود را هم اجرا کنید و مطمئن شوید سرویس‌هایی که به نام میزبان وابسته‌اند همچنان سالم‌اند. معمولاً برای خوانده‌شدن تغییر فایل hosts نیازی به ریبوت کامل نیست، هرچند برنامه‌هایی با کش مستقل ممکن است رفتار متفاوتی داشته باشند.

۷. اگر فایل درست است ولی هنوز هشدار دارید

ترتیب روش‌های نام‌یابی را بخوانید:
کد / دستورgrep '^hosts:' /etc/nsswitch.conf
این خط تعیین می‌کند سیستم برای نام‌ها از چه منابعی و با چه ترتیبی استفاده کند. برای نمونه، files به فایل hosts مربوط است، اما وجود ماژول‌های دیگری مانند resolve، عبارت‌های شرطی و myhostname می‌تواند نتیجه را تغییر دهد. خط را با یک نمونه تصادفی از اینترنت جایگزین نکنید؛ ابتدا تنظیم پیش‌فرض همان توزیع و نیاز شبکه را بشناسید. در بعضی سیستم‌ها ماژول myhostname خود نام محلی را حل می‌کند؛ مستندات nss-myhostname ترتیب و روش آزمون آن را توضیح می‌دهد.
اگر مشکل بعد از ریبوت دوباره برمی‌گردد، دوباره خروجی hostname و محتوای /etc/hosts را مقایسه کنید. ممکن است نام توسط cloud-init یا سیستم مدیریت پلتفرم تغییر داده شود. علت را در منبع تنظیم پیدا کنید و بدون شناخت وابستگی‌ها، cloud-init را حذف نکنید.
اگر تصمیم گرفتید تغییر فایل hosts را برگردانید، ابتدا مطمئن شوید نسخه پشتیبان به همین سرور و قبل از همین تغییر مربوط است؛ سپس آن را باز کنید و خط‌های قبلی را در فایل اصلی بازگردانید. پس از بازگشت، نام‌یابی و دسترسی سرویس‌های وابسته را دوباره بیازمایید.
برای محیطی که کنترل سیستم‌عامل و تنظیمات آن را در اختیار دارید، می‌توانید مشخصات سرور مجازی ایران نت‌آرام را با نیاز خود مقایسه کنید.
اشتراک‌گذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.

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

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام