~3 min read • Updated Mar 1, 2026
1. کاهش TTL قبل از تغییر IP (برای حداقل downtime)
وقتی قصد تغییر IP یک دامنه را دارید، بهتر است TTL رکوردها را موقتاً پایین بیاورید تا پروپاگیشن سریعتر انجام شود و کاربران کمتر دچار قطعی شوند.
روش سریع و جهانی (برای همه رکوردها):
مرحله ۱: غیرفعال کردن TTL per-record
da config-set dns_ttl 0 --restart
مرحله ۲: کاهش TTL پیشفرض (مثلاً ۳۰۰ ثانیه)
da config-set default_ttl 300 --restart
مرحله ۳: بازنویسی تمام Zoneها
/usr/local/directadmin/directadmin taskq --run "action=rewrite&value=named" --debug 2000
مرحله ۴: بازگردانی TTL به حالت عادی
da config-set dns_ttl 1 --restart
da config-set default_ttl 14400 --restart
/usr/local/directadmin/directadmin taskq --run "action=rewrite&value=named" --debug 2000
نکته: این روش TTL همه رکوردها را یکسان میکند. برای تغییر TTL یک رکورد خاص، از DNS Management استفاده کنید.
---2. افزودن رکورد SRV در DirectAdmin
رکوردهای SRV برای سرویسهایی مثل SIP، XMPP، LDAP و ... استفاده میشوند.
فرمت رکورد SRV:
_service._proto.name TTL class SRV priority weight port target
مثال واقعی:
نام رکورد (Left):
_sip._tcp.example.com.
مقدار (Right):
0 5 5060 sipserver.example.com.
نحوه اضافه کردن:
- User Level → DNS Management → domain.com
- Add Record
- Type: SRV
- Name: _sip._tcp یا نسخه کامل با نقطه
- Value: 0 5 5060 sipserver.example.com.
- TTL: دلخواه
نکته مهم: اگر نام با نقطه تمام شود، دامنه اضافه نمیشود. اگر بدون نقطه باشد، DirectAdmin دامنه را خودکار اضافه میکند.
---3. فعالسازی DNSSEC برای دامنهها
پیشنیاز:
da config-set dnssec 1 --restart
فعالسازی DNSSEC:
- Admin Level → DNS Admin → domain.com
- Generate Keys
- Sign
- کپی DS رکوردها
- افزودن DS رکوردها در Registrar
نکته برای RHEL 9 / AlmaLinux 9 / Rocky 9: فقط یک DS رکورد تولید میشود.
---غیرفعال کردن DNSSEC:
از DNS Admin → Remove Keys
یا دستی:
rm /var/named/domain.com.ksk.*
rm /var/named/domain.com.zsk.*
rm /var/named/domain.com.db.signed
rm /var/named/dsset-domain.com.
در named.conf پسوند را از .signed به .db برگردانید و سپس:
systemctl restart named
---
4. DNSSEC برای سابدامین (Subdomain Delegation)
اگر سابدامین را بهصورت دامنه کامل ساختهاید، باید زنجیره اعتماد را حفظ کنید.
مراحل:
- DNSSEC برای سابدامین (Generate Keys + Sign)
- افزودن DS رکوردها در زون والد
- افزودن NS رکوردها:
sub.domain.com. NS ns1.domain.com.
sub.domain.com. NS ns2.domain.com.
- Sign مجدد زون والد
فعالسازی DNSSEC برای کاربران:
da config-set user_dnssec_control 1 --restart
---
5. افزودن خودکار TLSA رکورد با Let's Encrypt (DANE)
هشدار: DANE برای SMTP هنوز پایدار نیست. فعلاً فقط برای HTTPS (پورت ۴۴۳) استفاده شود.
مرحله ۱: ساخت اسکریپت set_tlsa.sh
nano /usr/local/directadmin/scripts/custom/set_tlsa.sh
محتوا:
#!/bin/sh
DOMAIN=$1
TQ=/usr/local/directadmin/data/task.queue
DTQ=/usr/local/directadmin/dataskq
if [ -z "$DOMAIN" ] || [ ! -d "/etc/virtual/$DOMAIN" ]; then
echo "$DOMAIN دامنه معتبر نیست"
exit 1
fi
wget -O lets-encrypt-x3-cross-signed.pem https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
V=$(openssl x509 -in lets-encrypt-x3-cross-signed.pem -outform DER | openssl dgst -sha256 -hex | awk '{print "2 0 1", $NF}')
echo "action=dns&do=delete&domain=${DOMAIN}&type=TLSA&name=le-ca&value=*" >> $TQ
echo "action=dns&do=delete&domain=${DOMAIN}&type=CNAME&name=_443._tcp&value=*" >> $TQ
echo "action=dns&do=add&domain=${DOMAIN}&type=TLSA&name=le-ca&value=$V" >> $TQ
echo "action=dns&do=add&domain=${DOMAIN}&type=CNAME&name=_443._tcp&value=le-ca" >> $TQ
echo 'action=named&value=reload' >> $TQ
exit 0
chmod 755 /usr/local/directadmin/scripts/custom/set_tlsa.sh
---
مرحله ۲: ساخت post-hook برای Let's Encrypt
nano /usr/local/directadmin/scripts/custom/letsencrypt_post.sh
محتوا:
#!/bin/sh
/usr/local/directadmin/scripts/custom/set_tlsa.sh $domain
exit 0
chmod 755 /usr/local/directadmin/scripts/custom/letsencrypt_post.sh
---
6. تغییرات گروهی (Mass Update) روی همه دامنهها
مثال: تغییر همه رکوردهای A مربوط به mail به IP جدید
cd /var/named
tar cvzf /root/dns_backup.tar.gz *.db
perl -pi -e 's/^mail\s+14400\s+IN\s+A\s+.*$/mail\t14400\tIN\tA\t1.2.3.4/' *.db
بازنویسی Zoneها:
echo "action=rewrite&value=named" >> /usr/local/directadmin/data/task.queue
/usr/local/directadmin/dataskq d400
---
تغییر SPF همه دامنهها به -all
perl -pi -e 's/~all/-all/' *.db
---
افزودن رکورد جدید به همه دامنهها
for d in *.db; do
domain=${d%.db}
echo "myrecord 14400 IN A 1.2.3.4" >> $d
done
Written & researched by Dr. Shahin Siami