آموزش تغییر DNS در لینوکس پرینت

  • تغییر DNS, آموزش تغییر DNS در لینوکس, آموزش تغییر DNS, تنظیم DNS لینوکس, تنظیم DNS, تغییر DNS اوبونتو
  • 0

DNS یکی از مهم‌ترین بخش‌های ارتباط شبکه در لینوکس است و وظیفه تبدیل نام دامنه‌هایی مانند google.com به آدرس IP را بر عهده دارد.

گاهی اوقات DNS پیش‌فرض سرور با اختلال، سرعت پایین یا مشکل در Resolve دامنه‌ها مواجه می‌شود. در چنین شرایطی تغییر DNS می‌تواند مشکلاتی مانند خطای دانلود پکیج‌ها، عدم دسترسی به Repositoryها یا باز نشدن برخی دامنه‌ها را برطرف کند.

در این آموزش روش‌های تغییر DNS در Ubuntu، Debian، AlmaLinux، Rocky Linux و CentOS را بررسی می‌کنیم.

بررسی DNS فعلی سرور

قبل از تغییر تنظیمات بهتر است DNS فعلی سرور را بررسی کنید.

دستور زیر را اجرا کنید:

cat /etc/resolv.conf

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

nameserver 8.8.8.8
nameserver 1.1.1.1

همچنین اگر سیستم شما از systemd-resolved استفاده می‌کند، می‌توانید دستور زیر را اجرا کنید:

resolvectl status

این دستور DNSهای فعال برای هر Interface شبکه را نمایش می‌دهد.

روش اول: تغییر DNS از طریق resolv.conf

یکی از ساده‌ترین روش‌ها، ویرایش فایل زیر است:

nano /etc/resolv.conf

سپس DNSهای موردنظر را وارد کنید.

برای مثال:

nameserver 1.1.1.1
nameserver 8.8.8.8

فایل را ذخیره کنید.

حالا می‌توانید عملکرد DNS را تست کنید:

ping google.com

یا:

nslookup google.com

نکته مهم درباره resolv.conf

در برخی توزیع‌های جدید لینوکس، فایل /etc/resolv.conf توسط NetworkManager یا systemd-resolved مدیریت می‌شود.

در نتیجه ممکن است پس از Reboot یا Restart شدن شبکه، تغییرات دستی این فایل از بین بروند.

بنابراین برای تنظیم دائمی DNS بهتر است از روش‌های بعدی استفاده کنید.

روش دوم: تغییر DNS در Ubuntu و Debian با systemd-resolved

در بسیاری از نسخه‌های Ubuntu از systemd-resolved برای مدیریت DNS استفاده می‌شود.

ابتدا فایل تنظیمات را باز کنید:

nano /etc/systemd/resolved.conf

بخش زیر را پیدا کنید:

[Resolve]

سپس DNSهای موردنظر را تنظیم کنید:

[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9

فایل را ذخیره کرده و سرویس را Restart کنید:

systemctl restart systemd-resolved

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

resolvectl status

در سیستم‌هایی که systemd-resolved مدیریت DNS را انجام می‌دهد، بهتر است DNS از طریق همین سرویس یا ابزار مدیریت شبکه تنظیم شود و صرفاً فایل /etc/resolv.conf به‌صورت دستی ویرایش نشود.

روش سوم: تغییر DNS با NetworkManager

در AlmaLinux، Rocky Linux، CentOS و بسیاری از توزیع‌های جدید، NetworkManager مسئول تنظیم شبکه است.

ابتدا لیست Connectionها را مشاهده کنید:

nmcli connection show

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

NAME      UUID                                  TYPE      DEVICE
System    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  eth0

نام Connection را پیدا کنید.

برای مثال اگر نام Connection برابر System eth0 باشد، دستور زیر را اجرا کنید:

nmcli connection modify "System eth0" ipv4.dns "1.1.1.1 8.8.8.8"

برای جلوگیری از دریافت DNS از DHCP می‌توانید دستور زیر را نیز اجرا کنید:

nmcli connection modify "System eth0" ipv4.ignore-auto-dns yes

سپس Connection را مجدداً فعال کنید:

nmcli connection down "System eth0"
nmcli connection up "System eth0"

NetworkManager به‌صورت رسمی قابلیت تنظیم DNS از طریق گزینه ipv4.dns را پشتیبانی می‌کند.

توجه: اگر از طریق SSH به سرور متصل هستید، اجرای connection down ممکن است ارتباط شما را موقتاً قطع کند. در سرورهای Production بهتر است قبل از اعمال تغییرات، دسترسی Console داشته باشید.

مشاهده نام Connection فعال

اگر نام Connection را نمی‌دانید، دستور زیر را اجرا کنید:

nmcli connection show --active

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

ip a

یا:

nmcli device status

تنظیم DNS گوگل

برای استفاده از DNS عمومی Google می‌توانید مقادیر زیر را تنظیم کنید:

8.8.8.8
8.8.4.4

در NetworkManager:

nmcli connection modify "CONNECTION_NAME" ipv4.dns "8.8.8.8 8.8.4.4"

تنظیم DNS کلادفلر

DNS عمومی Cloudflare:

1.1.1.1
1.0.0.1

برای تنظیم آن:

nmcli connection modify "CONNECTION_NAME" ipv4.dns "1.1.1.1 1.0.0.1"

استفاده همزمان از چند DNS

می‌توانید بیش از یک DNS برای سرور مشخص کنید.

برای مثال:

nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 9.9.9.9

یا در NetworkManager:

nmcli connection modify "CONNECTION_NAME" ipv4.dns "1.1.1.1 8.8.8.8 9.9.9.9"

تست DNS پس از تغییر

بعد از اعمال تنظیمات، ابتدا دستور زیر را اجرا کنید:

cat /etc/resolv.conf

سپس:

ping google.com

اگر دامنه به IP تبدیل شد، DNS در حال کار است.

برای بررسی دقیق‌تر می‌توانید dig را نصب کنید.

در AlmaLinux:

dnf install bind-utils -y

در Ubuntu و Debian:

apt install dnsutils -y

سپس:

dig google.com

در خروجی می‌توانید DNS Server مورد استفاده و IP دریافت‌شده برای دامنه را مشاهده کنید.

پاک کردن Cache DNS

اگر DNS را تغییر داده‌اید اما همچنان پاسخ قبلی دریافت می‌کنید، ممکن است Cache DNS نیاز به پاک شدن داشته باشد.

در سیستم‌هایی که از systemd-resolved استفاده می‌کنند:

resolvectl flush-caches

سپس می‌توانید سرویس را Restart کنید:

systemctl restart systemd-resolved

رفع خطای Temporary failure in name resolution

یکی از خطاهای متداول سرورهای لینوکسی عبارت زیر است:

Temporary failure in name resolution

اگر این خطا را مشاهده کردید ابتدا اتصال اینترنت را با IP تست کنید:

ping 8.8.8.8

اگر IP پاسخ می‌دهد ولی دستور زیر پاسخ نمی‌دهد:

ping google.com

به احتمال زیاد مشکل مربوط به DNS است.

در این شرایط تنظیم یک DNS سالم می‌تواند مشکل را برطرف کند.

بررسی مشکل DNS یا اینترنت

برای تشخیص سریع می‌توانید دو تست انجام دهید.

ابتدا:

ping 1.1.1.1

سپس:

ping google.com

اگر تست اول موفق و تست دوم ناموفق باشد، معمولاً اتصال شبکه برقرار است اما Name Resolution مشکل دارد.

بازگرداندن DNS خودکار در NetworkManager

اگر قبلاً DNS دستی تنظیم کرده‌اید و می‌خواهید مجدداً DNS را از DHCP دریافت کنید، ابتدا DNS دستی را حذف کنید:

nmcli connection modify "CONNECTION_NAME" ipv4.dns ""

سپس دریافت DNS خودکار را فعال کنید:

nmcli connection modify "CONNECTION_NAME" ipv4.ignore-auto-dns no

در نهایت Connection را مجدداً فعال کنید.

کدام روش بهتر است؟

روش مناسب به نحوه مدیریت شبکه در سیستم‌عامل شما بستگی دارد.

در Ubuntuهای جدید معمولاً systemd-resolved یا ابزار مدیریت شبکه سیستم گزینه مناسبی است.

در AlmaLinux، Rocky Linux و CentOSهای جدید معمولاً NetworkManager و دستور nmcli انتخاب مناسب‌تری هستند.

ویرایش مستقیم /etc/resolv.conf بیشتر برای تست موقت یا سیستم‌هایی مناسب است که این فایل توسط سرویس دیگری بازنویسی نمی‌شود.

جمع‌بندی

برای تغییر DNS در لینوکس ابتدا مشخص کنید شبکه سرور توسط چه سرویسی مدیریت می‌شود.

برای تغییر سریع و موقت می‌توانید فایل زیر را بررسی کنید:

/etc/resolv.conf

اما برای تنظیم دائمی در سرورهایی که از NetworkManager استفاده می‌کنند، معمولاً می‌توانید از دستور زیر استفاده کنید:

nmcli connection modify "CONNECTION_NAME" ipv4.dns "1.1.1.1 8.8.8.8"

و در سیستم‌های مبتنی بر systemd-resolved نیز تنظیم DNS از طریق خود این سرویس روش مناسب‌تری خواهد بود.

در پایان با دستورهایی مانند ping، dig و resolvectl status عملکرد DNS را بررسی کنید.


آیا این پاسخ به شما کمک کرد؟

« برگشت