برای تنظیم DNS در اوبونتو، آدرس سرورهای DNS را در فایل Netplan (بخش nameservers) مینویسید و با sudo netplan apply اعمال میکنید. برای دیدن وضعیت فعلی از resolvectl status و برای آزمایش یک نام از resolvectl query example.com استفاده کنید. فایل /etc/resolv.conf در اوبونتو بهطور پیشفرض فقط به 127.0.0.53 اشاره میکند، یعنی سرویس systemd-resolved واسطه است و تنظیم دستی آن فایل ماندگار نیست.
این راهنما برای Ubuntu 20.04، 22.04 و 24.04 است که از systemd-resolved و Netplan استفاده میکنند. اگر IP ثابت هم لازم دارید، تنظیمات شبکه لینوکس را ببینید. برای فهم رکوردهایی که DNS برمیگرداند هم انواع رکورد DNS مفید است.
چطور DNS در اوبونتو کار میکند؟
برنامهها نام دامنه را از سیستم میپرسند، سیستم از کش داخلی systemd-resolved، و آن از سرورهای DNS تنظیمشده. نمای کلی:
resolvectl status
ls -l /etc/resolv.conf
cat /etc/resolv.confدر resolvectl status برای هر کارت شبکه، سرورهای DNS و دامنه جستوجو را میبینید. فایل /etc/resolv.conf معمولاً لینک نمادین به /run/systemd/resolve/stub-resolv.conf است و nameserver 127.0.0.53 دارد. این رفتار عادی است و اشتباه نیست.
تنظیم DNS در اوبونتو با Netplan
فایل تنظیم در /etc/netplan/ است (نام مثل 00-installer-config.yaml یا 50-cloud-init.yaml). نمونه با IP ثابت:
network:
version: 2
ethernets:
ens3:
dhcp4: false
addresses:
- 203.0.113.10/24
routes:
- to: default
via: 203.0.113.1
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
search: [example.local]نام کارت، آدرسها و DNSها نمونهاند. برای تنظیم فقط DNS روی DHCP، dhcp4: true را نگه دارید و nameservers را اضافه کنید؛ سرورهای DHCP هم میتوانند DNS بدهند و مقدار دستی همزمان استفاده میشود. اعمال تغییر:
sudo netplan try
sudo netplan applyدستور netplan try تنظیم را موقت اعمال میکند و اگر تأیید نکنید پس از ۱۲۰ ثانیه برمیگرداند؛ برای سرور راه دور بسیار ایمنتر است، چون اگر تنظیم اشتباه باشد از دسترسی بیرون نمیمانید. فایل YAML به فاصله حساس است و Tab خطا میدهد.
تنظیم سراسری در resolved.conf
برای تنظیم DNS مستقل از کارت شبکه:
sudo nano /etc/systemd/resolved.conf[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9
Domains=example.local
DNSSEC=noبعد:
sudo systemctl restart systemd-resolved
resolvectl statusمقدار FallbackDNS فقط وقتی استفاده میشود که هیچ DNS دیگری در دسترس نباشد. گزینه DNSSEC=allow-downgrade یا yes اعتبارسنجی امضای DNS را فعال میکند ولی با بعضی سرورها مشکل میدهد؛ اگر نیاز ندارید no نگه دارید.
آزمایش و عیبیابی تنظیم DNS در اوبونتو
resolvectl query example.com
resolvectl statistics
resolvectl flush-caches
dig example.com @1.1.1.1
dig +short example.com
nslookup example.comمقایسه جواب resolvectl query با dig @سرور-مشخص نشان میدهد مشکل از سیستم محلی است یا از سرور DNS. ابزار بررسی DNS دامنه رکوردهای دامنه را از بیرون نشان میدهد، تا بفهمید دامنه واقعاً درست تنظیم شده یا نه. اگر ping با IP کار میکند ولی با نام نه، مشکل DNS است.
DNS داخلی و دامنه جستوجو
در شبکه سازمانی که DNS داخلی دارید (مثلاً کنترلر دامنه ویندوز)، آدرس آن را بنویسید و دامنه جستوجو را اضافه کنید تا نام کوتاه سرورها حل شود:
nameservers:
addresses: [10.0.0.10, 10.0.0.11]
search: [corp.example.local]برای دامنههای داخلی که فقط DNS داخلی میشناسد، DNS عمومی را بهعنوان اول ننویسید؛ جواب NXDOMAIN میگیرید. اگر هم DNS داخلی و هم عمومی لازم است، DNS داخلی را اول و عمومی را بعدتر بنویسید، یا از Split DNS با resolvectl domain استفاده کنید.
تغییر موقت DNS برای آزمایش
sudo resolvectl dns ens3 9.9.9.9
sudo resolvectl domain ens3 '~.'
resolvectl status ens3این تغییر با راهاندازی مجدد یا اعمال دوباره netplan پاک میشود و برای آزمایش سریع مناسب است. برای برگرداندن: sudo resolvectl revert ens3.
اگر میخواهید systemd-resolved را کنار بگذارید
معمولاً لازم نیست، ولی اگر یک سرور DNS محلی (مثل dnsmasq یا Unbound) روی پورت 53 اجرا میکنید، با stub resolver تداخل پیدا میکند. راه کمریسکتر این است که stub را در resolved.conf با DNSStubListener=no خاموش کنید و بهجای حذف سرویس، فقط resolv.conf را به /run/systemd/resolve/resolv.conf لینک کنید. پیش از تغییر، تنظیم فعلی را یادداشت کنید و دسترسی کنسول سرور را داشته باشید.
خطاهای رایج
| نشانه | علت و راه حل |
|---|---|
| ping با IP کار میکند، با نام نه | DNS تنظیم نشده یا در دسترس نیست؛ resolvectl status را ببینید |
Temporary failure in name resolution | سرویس resolved متوقف است یا DNS مسدود؛ systemctl status systemd-resolved |
تغییر /etc/resolv.conf بعد از ریاستارت پاک میشود | فایل لینک است؛ از Netplan یا resolved.conf استفاده کنید |
| نام داخلی حل نمیشود | DNS داخلی اول نیست یا دامنه جستوجو اضافه نشده |
| جواب قدیمی میدهد | کش؛ resolvectl flush-caches |
netplan apply ارتباط را قطع کرد | تنظیم اشتباه؛ همیشه netplan try و دسترسی کنسول |
سوالات متداول
کدام DNS بهتر است؟
به نیاز بستگی دارد: DNS ارائهدهنده سرور معمولاً نزدیکتر و سریعتر است، DNS عمومی مثل Cloudflare (1.1.1.1) یا Google (8.8.8.8) پایدار و رایج. برای شبکه سازمانی، DNS داخلی با فوروارد به عمومی مناسب است.
فرق DNS و search domain چیست؟
DNS سرور پاسخدهنده است. search domain پسوندی است که به نامهای کوتاه (مثل server1) اضافه میشود تا server1.corp.example.local پرسیده شود.
چرا همیشه 127.0.0.53 میبینم؟
آدرس stub resolver محلی است. systemd-resolved درخواست را به DNSهای واقعی میفرستد. DNSهای واقعی را با resolvectl status ببینید.
آیا تغییر DNS روی سایت میزبانیشده اثر دارد؟
DNS سرور فقط نامهایی را که سرور میپرسد حل میکند و روی رکوردهای دامنه سایت شما اثری ندارد. رکوردهای دامنه در پنل DNS دامنه تنظیم میشوند.





