یکی از مشکلات رایج در سیستمعاملهای لینوکس، خرابی موقت در رزولوشن نام دامنه (DNS) است. این مشکل زمانی رخ میدهد که سیستم نمیتواند نام یک دامنه را به آدرس IP آن ترجمه کند، که باعث عدم دسترسی به اینترنت یا خدمات خاصی میشود. در این مقاله، به بررسی دلایل بروز این مشکل و روشهای مختلف برای حل آن خواهیم پرداخت.
دلایل بروز خرابی موقت در رزولوشن DNS
۱. پیکربندی نادرست DNS: یکی از دلایل اصلی، تنظیمات نادرست سرورهای DNS در فایلهای پیکربندی سیستم است.
۲. مشکل در حافظه کش DNS: گاهی اوقات دادههای کش شده ممکن است به دلایلی نادرست باشند و باعث خرابی موقت در رزولوشن نام دامنه شوند.
۳. مشکلات شبکه: قطع اتصال اینترنت یا مشکلات در شبکه محلی میتواند به خطاهای موقتی در رزولوشن منجر شود.
۴. سرور DNS نامعتبر یا ناکارآمد: اگر از سرور DNS غیرمطمئن یا کند استفاده میکنید، ممکن است این خطا بیشتر رخ دهد.
۵. فایروال یا تنظیمات امنیتی: فایروالها و دیگر نرمافزارهای امنیتی ممکن است به اشتباه درخواستهای DNS را مسدود کنند.
روشهای حل مشکل خرابی موقت در رزولوشن DNS
۱. بررسی و تغییر سرورهای DNS
برای بررسی سرورهای DNS فعلی، فایل `/etc/resolv.conf` را باز کنید:
cat /etc/resolv.conf
خروجی این دستور باید شبیه به زیر باشد:
nameserver 8.8.8.8
nameserver 8.8.4.4
در اینجا، آدرسهای IP مربوط به سرورهای DNS مورد استفاده نمایش داده میشود. میتوانید این آدرسها را به آدرسهای معتبرتری تغییر دهید، مثل:
– سرورهای DNS گوگل: `۸.۸.۸.۸` و `۸.۸.۴.۴`
– سرورهای Cloudflare: `1.1.1.1` و `۱.۰.۰.۱`
– سرورهای OpenDNS: `208.67.222.222` و `۲۰۸.۶۷.۲۲۰.۲۲۰`
برای تغییر این سرورها، فایل `/etc/resolv.conf` را با یک ویرایشگر باز کرده و آنها را به آدرسهای بالا تغییر دهید:
sudo nano /etc/resolv.conf
۲. پاکسازی و ریستارت حافظه کش DNS
در صورتی که مشکل به خاطر دادههای کش شده نادرست باشد، میتوانید حافظه کش DNS را پاک کنید. دستور پاکسازی بسته به سرویس DNS که استفاده میکنید متفاوت است:
– برای سیستمهایی که از `systemd-resolved` استفاده میکنند:
sudo systemd-resolve --flush-caches
– برای سرویس `dnsmasq`:
sudo systemctl restart dnsmasq
– برای سرویس `bind9`:
sudo rndc flush
۳. ریستارت کردن شبکه
گاهی اوقات مشکل میتواند به تنظیمات شبکه یا وضعیت ناپایدار شبکه مرتبط باشد. ریستارت کردن سرویس شبکه ممکن است کمک کند:
sudo systemctl restart NetworkManager
یا
sudo service networking restart
۴. بررسی و تنظیمات فایل Hosts
گاهی اوقات تنظیمات نادرست در فایل `hosts` باعث مشکلات رزولوشن میشود. میتوانید این فایل را بررسی کنید و مطمئن شوید که هیچ آدرس نامعتبری در آن تعریف نشده است:
sudo nano /etc/hosts
در این فایل مطمئن شوید که فقط ورودیهای معتبر و لازم وجود دارند.
۵. استفاده از ابزار `dig` یا `nslookup` برای عیبیابی
برای عیبیابی و یافتن دلایل مشکل میتوانید از ابزارهای `dig` و `nslookup` استفاده کنید. این ابزارها به شما کمک میکنند تا متوجه شوید آیا مشکل از سرور DNS یا از سیستم خودتان است:
مثال استفاده از `dig`:
dig google.com
مثال استفاده از `nslookup`:
nslookup google.com
خروجی این دستورات نشان میدهد که آیا سیستم قادر به برقراری ارتباط با سرور DNS و ترجمه نام دامنه است یا خیر.
۶. غیرفعال کردن IPv6
برخی مواقع مشکلات رزولوشن DNS به خاطر تنظیمات IPv6 رخ میدهند. اگر نیازی به استفاده از IPv6 ندارید، میتوانید آن را به صورت موقت یا دائم غیرفعال کنید:
**برای غیرفعال کردن موقت:**
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
**برای غیرفعال کردن دائمی:** فایل `/etc/sysctl.conf` را ویرایش کنید و این خطوط را اضافه کنید:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
سپس دستور زیر را برای اعمال تغییرات اجرا کنید:
sudo sysctl -p
۷. اطمینان از تنظیمات فایروال
اگر از فایروال استفاده میکنید، اطمینان حاصل کنید که ترافیک DNS (پورت UDP و TCP شماره ۵۳) مسدود نشده باشد. برای این کار میتوانید به صورت زیر عمل کنید:
با استفاده از `ufw`:
sudo ufw allow 53
با استفاده از `iptables`:
sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
نتیجهگیری
خرابی موقت در رزولوشن DNS میتواند ناشی از دلایل مختلفی باشد، از مشکلات شبکه تا تنظیمات نادرست در سرورهای DNS. با بررسی و تنظیم صحیح سرورهای DNS، پاکسازی حافظه کش، و انجام عیبیابی، میتوانید این مشکل را به راحتی حل کنید و اطمینان حاصل کنید که اتصال اینترنت شما بدون اختلال کار میکند.