~3 دقیقه مطالعه • بروزرسانی ۱۰ اسفند ۱۴۰۴
1. Named اجراست اما هیچ Query دریافت نمیشود
این رایجترین مشکل DNS است: سرویس named روشن است اما هیچکس از بیرون نمیتواند رکوردی دریافت کند.
مرحله ۱: بررسی اینکه named روی همه IPها گوش میدهد
netstat -lnp | grep named
یا برای IPv6:
ss -lnp | grep :53
خروجی صحیح باید شبیه این باشد:
tcp LISTEN 0 128 0.0.0.0:53 0.0.0.0:* users:(("named",pid=1234))
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* users:(("named",pid=1234))
اگر فقط 127.0.0.1:53 یا ::1:53 دیدی → named فقط روی localhost گوش میدهد.
---مرحله ۲: اصلاح تنظیمات /etc/named.conf
این خطوط نباید وجود داشته باشند (یا باید کامنت شوند):
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
allow-query { localhost; };
به این شکل تغییر بده:
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
allow-query { any; };
allow-recursion { localhost; localnets; };
سپس:
systemctl restart named
---
مرحله ۳: بررسی فایروال (TCP و UDP روی پورت ۵۳)
تست از داخل سرور:
dig google.com @127.0.0.1
اگر جواب داد اما از بیرون جواب نمیدهد → مشکل فایروال است.
خاموش کردن موقت فایروال برای تست:
firewalld:
systemctl stop firewalld
iptables:
service iptables stop
CSF:
csf -x
اگر مشکل حل شد → پورت ۵۳ را باز کن:
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp
firewall-cmd --reload
---
مرحله ۴: تست از بیرون
بهترین ابزار:
https://www.intodns.com
یا تست دستی:
dig domain.com @SERVER_IP
---
2. www.domain.com کار نمیکند اما domain.com کار میکند
این مشکل تقریباً همیشه به خاطر DNS propagation است.
راهحل:
- ۴ تا ۲۴ ساعت صبر کن
- قبل از تغییر IP، TTL را به ۳۰۰–۶۰۰ کاهش بده
- وضعیت جهانی را چک کن:
https://www.whatsmydns.net
---
3. sub.domain.com کار نمیکند اما domain.com/sub کار میکند
چکلیست:
- آیا رکورد A برای sub ساخته شده؟
- از داخل سرور تست کن:
dig sub.domain.com @127.0.0.1
- اگر resolve نمیشود → named مشکل دارد یا task.queue پردازش نشده
- اگر resolve میشود اما سایت بالا نمیآید:
بررسی VirtualHost:
- IP در DNS با IP در httpd.conf/nginx.conf یکی باشد
- DocumentRoot درست باشد (Sub-Domains Setup → Document Root Override)
اگر DNS خارجی استفاده میکنی:
در DNS خارجی رکورد A سابدامین را اضافه کن.
---4. بررسی resolv.conf و DNS سرورهای محلی
اگر سرور خودش نمیتواند resolve کند، فایل زیر را چک کن:
/etc/resolv.conf
نمونه صحیح:
nameserver 8.8.8.8
nameserver 8.8.4.4
تست:
dig google.com @8.8.8.8
---
5. چرا صفحه “Apache is functioning normally” یا “This IP is shared” میبینم؟
دلایل اصلی:
- دامنه به IP اشتباه resolve میشود
- VirtualHost برای دامنه وجود ندارد
چک سریع:
IP دامنه:
dig domain.com
IP تنظیمشده در DirectAdmin:
Admin Level → Show All Users → دامنه → IP
اگر متفاوت بودند → رکورد A را اصلاح کن یا صبر کن propagation کامل شود.
بازنویسی کانفیگ وبسرور:
cd /usr/local/directadmin/custombuild
./build rewrite_confs
نوشته و پژوهش شده توسط دکتر شاهین صیامی