این اتفاق یکی از پایهایترین و در عین حال گیجکنندهترین مفاهیم شبکه و وب است که به آن DNS Propagation (انتشار سراسری DNS) میگویند.
وقتی شما یک رکورد DNS (مثل A Record یا CNAME) یا نیمسرورهای دامنه را تغییر میدهید، این تغییر بهصورت آنی به تمام دنیا اعلام نمیشود. سیستم DNS در اینترنت بهشدت وابسته به کشینگ (Caching) در لایههای مختلف است تا از میلیونها درخواست تکراری به سرورهای اصلی جلوگیری کند.
اگر سایت برای شما هنوز روی سرور قدیمی باز میشود، یعنی درخواست شما در یکی از لایههای کش گیر افتاده است.
۱. لایههای کش DNS کجا قرار دارند؟
وقتی آدرس دامنه را در مرورگر تایپ میکنید، سیستم به این ترتیب عمل میکند:
مرورگر (Browser Cache)
──> سیستمعامل شما (OS DNS Cache)
──> مودم یا روتر محلی (Router Cache)
──> ارائهدهنده اینترنت شما (ISP DNS Cache)
──> سرورهای اصلی DNS (Authoritative DNS)
اگر هر کدام از این لایهها قبلاً IP دامنه شما را ذخیره کرده باشند، تا زمان منقضی شدن آن، به سرور قدیمی ارجاع میدهند.
۲. نقش حیاتی TTL (Time To Live)
هر رکورد DNS یک مقدار به نام TTL بر حسب ثانیه دارد. این عدد مشخص میکند که سرورهای اینترنت تا چه مدت مجاز هستند پاسخ قبلی را در کش خود نگه دارند.
مثال:
- اگر TTL روی 86400 ثانیه (۲۴ ساعت) تنظیم شده باشد، ارائهدهنده اینترنت (ISP) شما تا ۲۴ ساعت آینده اصلاً به سرور دامنه مراجعه نمیکند و همان IP قبلی را به شما تحویل میدهد.
- اگر TTL روی 300 ثانیه (۵ دقیقه) باشد، تغییرات بسیار سریعتر در سطح اینترنت پخش میشوند.
یک نکته حرفهای قبل از انتقال سرور:
همیشه ۲۴ تا ۴۸ ساعت قبل از جابجایی سرور، مقدار TTL رکوردهای دامنه را روی کمترین مقدار ممکن (مثلاً ۶۰ تا ۳۰۰ ثانیه یا حالت Auto در کلودفلر) بگذارید تا زمان تغییر سرور، انتشار DNS سریعتر انجام شود.
۳. تفاوت رفتار ISPها و اپراتورهای مختلف
گاهی اوقات روی اینترنت همراه (ایرانسل/همراه اول) سایت جدید باز میشود اما روی اینترنت ثابت (شاتل، مخابرات و…) هنوز سرور قدیمی لود میشود.
دلیل این است که برخی ISPها استانداردهای TTL را نادیده میگیرند و برای کاهش مصرف پهنای باند و ترافیک بینالملل خود، رکوردهای DNS را طولانیتر از زمان تعیینشده کش میکنند.
۴. مراحل عملی پاک کردن کش DNS در سیستم خودتان
اگر مطمئن هستید که رکورد در پنل دامنه درست است، مراحل زیر را انجام دهید تا کش محلی پاک شود:
الف) پاک کردن کش DNS سیستمعامل (Windows)
منوی استارت را باز کنید، cmd را بهصورت Run as Administrator اجرا کرده و دستور زیر را بزنید:
ipconfig /flushdns
برای سیستمهای Mac:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
برای سیستمهای Linux (systemd-resolved):
sudo resolvectl flush-caches
ب) پاک کردن کش DNS داخلی مرورگرها
مرورگرهایی مثل Google Chrome و Edge کش DNS اختصاصی دارند که مستقل از سیستمعامل کار میکند.
- در کروم آدرس زیر را باز کنید:chrome://net-internals/#dns
- روی دکمه Clear host cache کلیک کنید.
- سوکتها را هم ریست کنید:chrome://net-internals/#sockets و کلیک روی Flush socket pools.
ج) تغییر DNS Resolver سیستم به سرویسهای عمومی
اگر ISP شما تغییرات را کند منتشر میکند، DNS کارت شبکه سیستم یا مودم خود را به DNSهای سریع مثل گوگل یا کلودفلر تغییر دهید:
- Cloudflare DNS: 1.1.1.1 و 1.0.0.1
- Google DNS: 8.8.8.8 و 8.8.4.4
۵. چطور بفهمیم رکورد دامنه در دنیا منتشر شده یا نه؟
برای اینکه مطمئن شوید مشکل فقط از سیستم شماست یا هنوز در سراسر جهان تغییر نکرده، از ابزارهای آنلاین چک کردن DNS استفاده کنید:
در این سایتها نام دامنه و نوع رکورد (مثلاً A) را وارد کنید. این ابزارها وضعیت دامنه را از دهها سرور در نقاط مختلف جهان تست میکنند و با تیک سبز یا ضربدر قرمز نشان میدهند که کدام کشورها IP جدید را دریافت کردهاند.
۶. راهکار موقت برای دسترسی فوری بدون انتظار DNS (فایل Hosts)
اگر در حال توسعه هستید و باید فوراً سایت روی سرور جدید را ببینید و منتظر DNS نمانید، میتوانید فایل hosts سیستمعامل خود را دستکاری کنید:
- در ویندوز فایل زیر را با Notepad (بهصورت Run as Administrator) باز کنید:C:\Windows\System32\drivers\etc\hosts
- یک خط جدید در انتهای فایل اضافه کنید:
192.0.2.1 example.com www.example.com
(بهجای IP بالا، IP سرور جدید و بهجای example.com، دامنه خودتان را بنویسید)
- فایل را ذخیره کنید. اکنون مرورگر شما بدون توجه به DNS مستقیماً به سرور جدید متصل میشود.
(نکته: بعد از انتشار سراسری DNS، این خط را حتماً حذف کنید).
جمعبندی
عدم باز شدن سایت جدید بعد از تغییر DNS به دلیل فرآیند طبیعی DNS Propagation و وجود کش در مرورگر، سیستمعامل، مودم و ISP است. تغییر نیمسرورها معمولاً بین ۱۲ تا ۴۸ ساعت و تغییر رکوردهای تکی (مثل A Record) بسته به TTL بین چند دقیقه تا چند ساعت زمان میبرد. با استفاده از ابزارهای آنلاین مثل DNSChecker و خالی کردن کش سیستم با ipconfig /flushdns میتوانید روند انتقال را دقیقتر پیگیری کنید.