ریست کردن DNS های یک دامنه در WHM/cPanel

ریست کردن DNS های یک دامنه در WHM/cPanel

ریست کردن زون DNS یک دامنه در WHM یعنی سرور فایل زون فعلی را کنار می‌گذارد و آن را از روی تمپلیت پیش‌فرض خودش دوباره می‌سازد. برخلاف چیزی که در بیشتر آموزش‌ها نوشته شده، این کار همه رکوردها را پاک نمی‌کند: سی‌پنل رکوردهای TXT را عمداً نگه می‌دارد، اما رکورد MX سفارشی و رکوردهای CNAME، SRV و CAA از بین می‌روند. پس پیش از زدن دکمه ریست، یک خروجی کامل از زون بگیرید.

زون تازه دقیقاً از چه چیزی ساخته می‌شود

این ابزار رکوردها را «تعمیر» نمی‌کند؛ فایل زون را دور می‌ریزد و از نو می‌نویسد. زون تازه بر پایه تمپلیت زون سرور و مشخصات فعلی همان اکانت ساخته می‌شود و در یک نصب استاندارد شامل این موارد است:

  • رکورد SOA و چهار رکورد NS بر پایه نیم‌سرورهایی که برای سرور یا برای ریسلر مالک اکانت تنظیم شده‌اند
  • رکورد A خود دامنه روی IP فعلی اکانت، و اگر اکانت IPv6 داشته باشد رکورد AAAA
  • ورودی‌های www، mail و ftp به شکل CNAME به خود دامنه — نه رکورد A جداگانه
  • یک رکورد MX با اولویت 0 که ایمیل را به خود سرور برمی‌گرداند
  • ساب‌دامنه‌های ثبت‌شده در همان اکانت، دوباره به شکل رکورد A روی IP اکانت
  • ساب‌دامنه‌های سرویسی مثل cpanel، webmail، whm و webdisk، اگر این قابلیت روی سرور روشن باشد

مقدار TTL پیش‌فرض زون در نصب استاندارد سی‌پنل 14400 ثانیه و TTL رکوردهای نیم‌سرور 86400 ثانیه است؛ هر دو از فایل /etc/wwwacct.conf خوانده می‌شوند و مدیر سرور می‌تواند عوضشان کند. اگر ترجیح می‌دهید این دست کارها را خودتان روی سرور انجام ندهید، روی یک سرور مجازی مدیریت‌شده نصب و پیکربندی کنترل‌پنل بر عهده تیم پشتیبانی است.

چه چیزی واقعاً از بین می‌رود و چه چیزی نمی‌رود

جمله «ریست زون همه رکوردها را پاک می‌کند» دقیق نیست و باعث می‌شود آدم‌ها ساعت‌ها کار بی‌مورد انجام دهند. رفتار امروزی سی‌پنل را می‌شود به سه دسته تقسیم کرد.

حفظ می‌شود. همه رکوردهای TXT پیش از ریست از زون قدیمی خوانده و دوباره داخل زون تازه نوشته می‌شوند؛ این رفتار عمدی است و در خود کد بازسازی زون تصریح شده. یعنی SPF، DKIM، DMARC، google-site-verification و _acme-challenge سر جایشان می‌مانند. تنها استثنای شناخته‌شده، رکورد TXT ای است که در فایل زون به صورت چندخطی و داخل پرانتز نوشته شده باشد؛ آن یکی ممکن است سالم منتقل نشود.

بازنویسی می‌شود. ساب‌دامنه‌هایی که در خود اکانت سی‌پنل ساخته شده‌اند حذف نمی‌شوند، ولی همه‌شان دوباره به IP اکانت اشاره می‌کنند. اگر یکی از آن‌ها به سرور دیگری یا به یک شبکه تحویل محتوا وصل بود، آن مقصد از دست می‌رود و باید دستی برگردانده شود.

واقعاً پاک می‌شود. این‌ها همان چیزهایی هستند که باید قبلش ذخیره کنید:

  • رکورد MX دامنه‌هایی که ایمیلشان روی سرویس بیرونی است — بعد از ریست ایمیل به سرور هاست برمی‌گردد و نامه‌ها در صندوقی می‌نشینند که کسی آن را نمی‌خواند
  • هر رکورد CNAME دستی، از تأییدیه سرویس‌های ابری تا اشاره ساب‌دامنه به یک سرویس بیرونی
  • رکوردهای SRV و CAA که معمولاً هیچ‌کس یادش نیست وجود دارند
  • هر رکورد A ای که دستی اضافه کرده‌اید و ساب‌دامنه متناظرش داخل اکانت ثبت نشده است

اگر مدیریت DNS برایتان حساس است، جدا کردن آن از سرور هاست و سپردنش به یک زیرساخت DNS مستقل باعث می‌شود دست‌کاری روی سرور هرگز رکوردهای اصلی شما را از بین نبرد.

قدم صفر: از زون خروجی بگیرید

در WHM به مسیر Home » DNS Functions » DNS Zone Manager بروید (پورت پیش‌فرض ورود امن WHM عدد 2087 است)، دامنه را پیدا کنید و از منوی Actions گزینه View Raw DNS Zone File را بزنید؛ متن کامل زون را کپی کنید و در یک فایل متنی نگه دارید. این تنها راهی است که نسخه خام و قابل بازگردانی به دستتان می‌دهد.

اگر دسترسی root روی SSH دارید، همین کار با یک دستور هم انجام می‌شود:

whmapi1 dumpzone domain=example.com --output=json > /root/example.com-zone-backup.json

خروجی این دستور فهرست ساخت‌یافته رکوردهاست، نه فایل زون خام؛ برای بازسازی دستی کاملاً کافی است. روی سرورهایی که BIND فایل زون را روی دیسک نگه می‌دارد، نسخه خام در مسیر /var/named/example.com.db هم موجود است و کپی گرفتن از آن هزینه‌ای ندارد.

مراحل ریست کردن زون

  • وارد WHM شوید و به DNS Zone Manager بروید
  • دامنه مورد نظر را انتخاب و رکوردهایش را باز کنید
  • از منوی Actions گزینه Reset DNS Zone را انتخاب کنید
  • در پنجره تأیید، هشدار را بخوانید و عملیات را تأیید کنید

معادل خط فرمانی همین کار whmapi1 resetzone domain=example.com است که آن هم به دسترسی root نیاز دارد. اگر روی دامنه DNSSEC فعال بوده، بعد از ریست وضعیت کلیدها و رکورد DS ثبت‌شده نزد ثبت‌کننده دامنه را جداگانه بررسی کنید. روی سرورهای دارای لایسنس اورجینال سی‌پنل مسیرها دقیقاً همین است.

بعد از ریست چه کار کنید

اول سراغ چیزی بروید که واقعاً پاک شده: رکورد MX سرویس ایمیل بیرونی را از روی فایل پشتیبان دوباره بسازید، چون ایمیل زودتر از هر چیز دیگری خراب شدنش را نشان می‌دهد. بعد نوبت CNAME ها و ساب‌دامنه‌هایی است که به سرور یا سرویس دیگری اشاره می‌کردند، و در آخر SRV و CAA. رکوردهای TXT را دوباره نسازید؛ فقط وجودشان را تأیید کنید:

dig example.com MX +short و dig example.com TXT +short

تا وقتی TTL رکوردهای قبلی روی ریزالورهای اینترنت منقضی نشده ممکن است پاسخ قدیمی ببینید؛ این طبیعی است و ربطی به درست بودن زون ندارد. برای دیدن پاسخ خود سرور و دور زدن کش، مستقیم از نیم‌سرور بپرسید: dig @ns1.example.com example.com MX +short

کی ریست کردن جواب نمی‌دهد

اگر نیم‌سرورهای دامنه در پنل ثبت‌کننده به این سرور اشاره نمی‌کنند، زون این سرور اصلاً خوانده نمی‌شود و ریست کردن هیچ چیزی را عوض نمی‌کند؛ اول نیم‌سرورها را درست کنید. همچنین برای سایت‌هایی که کاربرانشان در چند کشور پراکنده‌اند، کندی معمولاً از رکوردها نمی‌آید و با مسیریابی جغرافیایی DNS بهتر حل می‌شود تا با بازنویسی زون.

پیشگیری

عادت ساده‌ای که جلوی بیشتر فاجعه‌ها را می‌گیرد: هر بار که زون یک دامنه را تغییر می‌دهید، نسخه خام زون را کنار مستندات همان مشتری ذخیره کنید. با این کار ریست زون از یک ریسک تبدیل می‌شود به کاری که در چند دقیقه قابل برگرداندن است.