اتصال دامنه به سرور مجازی در عمل سه قدم است: نیمسرور دامنه را در ایرنیک یا ریجسترار خارجی روی دو نیمسرور رایگان میگذارید، دو رکورد A برای ریشه و www میسازید و با چند دستور بررسی میکنید. در پایان این راهنما میتوانید با dig ثابت کنید دامنهی ir یا com شما واقعاً به سرور رسیده است. آنچه این راهنما اضافه میکند: مسیر پنل ایرنیک، عدد TTL ارجاع ریجستری ir که منشأ «چند ساعت انتظار» است، ترتیبی که از دام کش منفی نجاتتان میدهد، و کلید CDN کنار رکورد A.
برای اتصال دامنه به سرور مجازی دقیقاً چه چیزهایی لازم است؟
اتصال دامنه به سرور مجازی یعنی ثبت یک رکورد A در سرویس DNS دامنه که نام دامنه را به آیپی عمومی سرور برساند. پس سه چیز لازم است: یک دامنه در هر ریجستراری — ایرنیک برای ir، هر ثبتکنندهای برای com — یک آیپی عمومی ثابت که پنل سرور نشان میدهد، و یک جا برای میزبانی رکوردهای DNS. برای مورد سوم مهران هاست دو نیمسرور رایگان دارد: ns1.mehranhost.cloud و ns2.mehranhost.cloud، با TTL پیشفرض 3600 و کف 60 ثانیه برای هر رکورد.
وصل کردن دامنه به سرور در لایهی DNS انجام میشود، نه داخل سیستمعامل؛ پس فرقی نمیکند سرور مجازی لینوکسی شما اوبونتو، دبیان یا راکی باشد یا اتصال دامنه به سرور ابری ساعتی. هیچکدام هم به هاست اشتراکی، cPanel یا خرید دامنه از همان شرکت وابسته نیست؛ فقط باید به پنل ثبتکننده دسترسی داشته باشید. در سراسر مقاله دامنه را example.ir و آیپی سرور را 203.0.113.10 فرض میکنیم.
اگر هنوز سروری ندارید، اول سرور را بسازید تا آیپی داشته باشید. سرور ابری مهران هاست ساعتی است؛ منطق هزینهاش در راهنمای سرور ابری ساعتی و مشخصات فنیاش در صفحهی توسعهدهندگان آمده است. سرور خاموش هم با ۵۰ درصد نرخ ساعتی حساب میشود؛ فقط حذفکردن هزینه را قطع میکند.
دامنه را کجا به سرور وصل کنیم: DNS ریجسترار، کلادفلر یا نیمسرور رایگان؟
رکورد A را میتوان در سه جا نگه داشت؛ هر سه به سرور مجازی میرسند و تفاوت در کنترل و وابستگی است:
| معیار | DNS پنل ریجسترار | Cloudflare | نیمسرور رایگان مهران هاست |
|---|---|---|---|
| کنترل TTL هر رکورد | بسته به ریجسترار؛ در پنلهای داخلی اغلب ثابت | بله، با کف متغیر بر اساس پلن | بله، پیشفرض 3600 و کف 60 ثانیه |
| کلید CDN در همان پنل | نه | بله، با پروکسی کلادفلر — بدون نود داخل ایران | بله، رایگان و کنار هر رکورد A؛ نود لبه در اروپا و ایران، با انتخاب خودکار بر اساس محل مبدأ |
| نیاز به حساب خارجی | نه | بله | نه |
| پاسخگویی در روز قطع اینترنت بینالملل | بسته به محل نیمسرورهای ریجسترار | نیمسرورها خارج از ایراناند | ns1 داخل ایران پاسخ میدهد، ns2 خارج از ایران |
| کار با ایرنیک بهعنوان ثبتکننده | بله | بله | بله |
| ماندگاری پس از تعویض سرویس هاست | میماند | میماند | میماند |
| هزینه | رایگان | پلن رایگان دارد | رایگان، تا ۱۰ دامنه در هر حساب |
هر سه گزینه مستقل از هاستاند؛ رکوردها فقط وقتی با تعویض سرویس از بین میروند که DNS داخل پنل هاست قدیمی باشد. اگر سرور دومی خارج از ایران دارید — مثلاً یک ماشین Hetzner از همان پنل ریالی، با راهنمای خرید سرور مجازی خارج از ایران — همین پنل DNS برای هر دو کافی است: هر نام، یک رکورد A به آیپی سرور خودش؛ لوکیشنها در بخش سرور خارج.
ست کردن دامنه ملی روی سرور: نیمسرور دامنه ir را در ایرنیک چطور ست کنم؟
برای دامنهی ملی، نیمسرور در پنل ایرنیک (nic.ir) عوض میشود، نه در پنل نمایندگیای که دامنه را از آن خریدهاید — مگر اینکه نماینده ابزار تغییر کارگزار داشته باشد. پیش از این قدم، دامنه و رکوردهای A را در پنل مهران هاست ساخته باشید. مسیر (برچسبها با بهروزرسانی پنل تغییر میکنند):
- با شناسهی صاحب دامنه یا رابط فنی آن وارد پنل ایرنیک — www.nic.ir/panel — شوید و به «دامنههای من» بروید.
- روی دامنه کلیک کنید و «ویرایش ردیفهای کارگزاری نام و میزبانی دامنه» را باز کنید.
- در جدول «کارگزار دامنه (NS Record)» ردیف ۱ را ns1.mehranhost.cloud و ردیف ۲ را ns2.mehranhost.cloud بگذارید. ستون «آیپی کارگزار» را برای هر دو خالی بگذارید.
- ردیفهای ۳ و ۴ را اگر نیمسرور هاست قبلی دارند پاک کنید؛ نیمسرور قدیمی کنار جدید، بخشی از پرسوجوها را به هاست قبلی میفرستد.
- به سؤال امنیتی حساب پاسخ دهید و دکمهی پایین فرم را بزنید؛ بسته به نسخهی پنل «ثبت تغییرات» یا «اعمال» است.
ستون «آیپی کارگزار» فقط برای نیمسروری پر میشود که زیر یک دامنهی ir باشد — مثل ns1.example.ir — چون ریجستری ir مرجع آن نام است و باید آدرسش را بهصورت رکورد چسب (glue) منتشر کند. چون mehranhost.cloud دامنهی ir نیست، ستون خالی میماند و ریجستری آیپی را از DNS میگیرد؛ نیمسرور اختصاصی زیر دامنهی خودتان هم بخشی از این سرویس نیست.
نیمسرور دامنههای com و بینالمللی را کجا عوض کنم؟
برای com، net، org و بقیهی پسوندهای بینالمللی، نیمسرور در پنل ریجستراری عوض میشود که دامنه را از آن خریدهاید: صفحهی دامنه → Nameservers یا DNS → حالت Custom بهجای Default → واردکردن ns1.mehranhost.cloud و ns2.mehranhost.cloud → ذخیره. در نمایندگیهای ایرانی عنوانش «مدیریت نیمسرور» یا «تغییر DNS» است.
دو تله در این پنلها پررنگتر است. اول DNSSEC: اگر نزد ریجسترار رکورد DS از سرویس DNS قبلی مانده باشد و فقط نیمسرور را عوض کنید، رزولورهای اعتبارسنج پاسخ جدید را جعلی میدانند و دامنه برای بخشی از کاربران SERVFAIL میشود؛ پیش از تغییر، DNSSEC را غیرفعال و رکورد DS را حذف کنید. پسوند ir هم امضا شده است و ایرنیک کلید عمومی دامنه را میپذیرد، پس همین قاعده روی دامنهی ir هم برقرار است — فقط کمتر پیش میآید. دوم قفل انتقال (Transfer Lock): به انتقال دامنه مربوط است و برای تغییر نیمسرور لازم نیست بازش کنید.
تفاوت عددی با ir: ریجستری com رکورد ارجاع را با TTL 172800 ثانیه (دو شبانهروز) منتشر میکند و ریجستری ir با 900؛ برای com تا ۴۸ ساعت را ممکن بدانید.
نیمسرور رایگان مهران هاست چیست و چطور دامنه را در آن اضافه کنم؟
نیمسرور رایگان مهران هاست دو سرور نام معتبر است که رکوردهای دامنهی شما را بدون هزینهی جداگانه نگه میدارند: ns1.mehranhost.cloud داخل ایران و ns2.mehranhost.cloud خارج از ایران، یک سرور ثانویهی واقعی PowerDNS که هر تغییر زون را با پیام NOTIFY میگیرد. در روز قطع مسیر بینالملل، رزولورهای داخلی همچنان به ns1 میرسند و رزولورهای خارجی به ns2. یک قید صادقانه: اگر آن NOTIFY گم شود، ns2 تا رسیدن دورهی بازخوانی زون همان نسخهی قبلی را پاسخ میدهد.
افزودن دامنه در بخش «مدیریت DNS دامنه» پنل کاربری انجام میشود: نام دامنه را بدون www و بدون http:// وارد میکنید و همان صفحه دو نیمسرور را با دکمهی «کپی» میدهد. هر حساب بهصورت پیشفرض تا ۱۰ دامنه میپذیرد — یک تنظیم سراسری، نه سهمیهی هر حساب — و سقفی برای تعداد رکورد تعریف نشده است. انواع رکورد پشتیبانیشده: A، AAAA، CNAME، MX، TXT، NS، SRV و CAA. افزودن دامنه خریدی نمیخواهد: ثبتنام کنید، دامنه را اضافه کنید و رکوردها را پیش از تغییر در ریجسترار آماده داشته باشید.
دلیل تأکید بر ترتیب: اگر نیمسرور را عوض کنید و دامنه هنوز در پنل نباشد، ns1 و ns2 زونی برای آن ندارند و به هر پرسشی REFUSED میگویند — خروجی واقعی ۲۵ شهریور ۱۴۰۵ برای دامنهای که اضافه نشده:
dig @ns1.mehranhost.cloud example.ir A | grep status
;; ->>HEADER<<- opcode: QUERY, status: REFUSED
رزولور کاربر این را «تفویض شکسته» میفهمد، SERVFAIL برمیگرداند و خود شکست را — بسته به رزولور — چند ثانیه تا چند دقیقه نگه میدارد. حالت دوم بدتر است: دامنه اضافه شده ولی رکورد A نه. نیمسرور میگوید «چنین رکوردی نیست» و طبق RFC 2308 رزولورها این پاسخ منفی را به اندازهی کمترینِ دو عدد نگه میدارند — فیلد آخر رکورد SOA و TTL خود SOA، که اینجا هر دو 3600 ثانیهاند:
dig @ns1.mehranhost.cloud example.ir SOA +norecurse
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
example.ir. 3600 IN SOA ns1.mehranhost.cloud. hostmaster.example.ir. 2026091301 10800 3600 604800 3600
یعنی رزولوری که پیش از ساخت رکورد A پرسیده باشد، تا یک ساعت «وجود ندارد» را تکرار میکند. ترتیب امن: اول دامنه و هر دو رکورد A در پنل، بعد تغییر نیمسرور در ریجسترار.
رکورد A دامنه را برای سرور مجازی چطور بسازم؟
در صفحهی دامنه «افزودن رکورد» را بزنید و دو رکورد A بسازید: یکی با نام @ (ریشه) و یکی www، هر دو با مقدار 203.0.113.10. www نامی مستقل است و بدون رکورد خودش باز نمیشود؛ میتوانید CNAME به ریشه بگذاریدش، اما برای خود ریشه CNAME مجاز نیست (RFC 1034 بخش ۳٫۶٫۲). دلیلش و معنای بقیهی رکوردها در راهنمای رکوردهای DNS است.
TTL پیشفرض 3600 است و کف 60 ثانیه هم در فرم و هم سمت سرور اعمال میشود. در دورهی راهاندازی 60 بگذارید و بعد از پایداری به 3600 برگردانید، چون سرعت دیدهشدن هر تغییر به TTL همان رکورد پیش از تغییر بستگی دارد، نه به مقدار جدید: رکوردی که روی 60 بوده ظرف حدود یک دقیقه بهروز میشود و رکوردی با 3600 تا یک ساعت. رکورد AAAA اختیاری است و فقط وقتی اضافهاش کنید که وبسرور واقعاً روی آیپی نسخهی ۶ گوش میدهد.
یک رکورد NS ریشه هم در فهرست میبینید که قابل حذف نیست؛ پنل با پیام «رکورد NS اصلی دامنه قابل حذف نیست؛ این رکورد همان تفویض دامنه به سرورهای نام ماست.» جلویش را میگیرد.
از کجا بفهمم نیمسرور ست شده و چقدر طول میکشد؟
تغییر نیمسرور دامنه ir معمولاً چند ساعت و حداکثر ۲۴ ساعت طول میکشد؛ برای com و پسوندهای بینالمللی تا ۴۸ ساعت. نشانهی ساده در خود پنل: بالای صفحهی هر دامنه در «مدیریت DNS» بنری هست که با هر بار بازشدن، رکورد NS را از دید رزولور سرور پنل میخواند: آبی تا وقتی هیچ نیمسروری دیده نشود، کهربایی وقتی نیمسرورهای دیگری دیده شوند (با نام آنها)، و سبز وقتی هر دو نیمسرور مهران هاست دیده شوند: «نِیمسرورهای این دامنه بهدرستی به سرویس ما متصل شدهاند». این بررسی از خود ریجستری و از داخل ایران نیست؛ اگر رزولور سرور پنل پاسخ NS قبلی را در کش داشته باشد، تا پایان TTL آن با تأخیر سبز میشود. تا سبزشدن بنر نیازی به تیکت نیست.
برای پرسش بیواسطه از ریجستری، مستقیم از یکی از نیمسرورهای ir بپرسید. شکل خروجی با دامنهی نمونه چنین است؛ عدد 900 همان TTL ارجاع ریجستری ir است که در ۲۵ شهریور ۱۴۰۵ اندازهگیری شد:
dig +noall +authority @a.nic.ir example.ir NS
example.ir. 900 IN NS ns1.mehranhost.cloud.
example.ir. 900 IN NS ns2.mehranhost.cloud.
اگر این خروجی نیمسرورهای جدید را بدهد، سهم ایرنیک تمام شده و بقیهی انتظار مربوط به رزولورهاست. «چند ساعت انتظار» از رزولور اپراتورهاست که پاسخ NS قبلی را تا پایان TTL تعیینشده توسط هاست قبلی نگه میدارند، بهعلاوهی فاصلهی بازتولید زون ایرنیک که عددش منتشر نمیشود. برای com همان دستور را با @a.gtld-servers.net بزنید. راه سوم whois ایرنیک است که نیمسرورهای ثبتشده را در خطوط nserver برمیگرداند: whois example.ir | grep -i nserver.
انتشار خودِ رکوردها به TTL همان رکورد بستگی دارد، نه به ریجستری. برای سایتی که زنده روی هاست قبلی است، کاهش TTL از قبل، تست با فایل hosts و زمانبندی جابهجایی در راهنمای انتقال سایت به هاست جدید آمده است.
چطور تست کنم دامنه واقعاً به سرور رسیده؟
سه پرسش، سه لایه: دنیا کدام نیمسرور را میشناسد، نیمسرور چه آیپیای میدهد، و وبسرور روی آن آیپی برای این نام جواب میدهد یا نه. ابزارها روی اوبونتو و دبیان با sudo apt install -y bind9-dnsutils whois نصب میشوند؛ برای اجرا از خود سرور، راهنمای اتصال SSH نقطهی شروع است:
dig +short NS example.ir
ns1.mehranhost.cloud.
ns2.mehranhost.cloud.
dig +short A example.ir @8.8.8.8
203.0.113.10
dig @ns1.mehranhost.cloud +short A example.ir
203.0.113.10
خط اول تفویض را از دید رزولور شما نشان میدهد. خط دوم از رزولور عمومی گوگل میپرسد تا کش رزولور خودتان دخالت نکند. خط سوم مهمترین است: مستقیم از نیمسرور معتبر میپرسد و چون کشی در مسیر نیست پاسخ درست را بلافاصله میدهد؛ اگر درست بود و خط دوم هنوز آیپی قدیمی را داد، رکورد سالم است و فقط منتظر انقضای کش هستید. اگر dig ندارید، همین پرسش را با nslookup example.ir 8.8.8.8 بزنید؛ پاسخ دامنه زیر عنوان Non-authoritative answer در سطر Address: 203.0.113.10 است، نه در بلوک اول که آدرس خود رزولور را میدهد.
لایهی سوم را روی HTTP حتی پیش از انتشار DNS میشود تست کرد:
curl -sI -H "Host: example.ir" http://203.0.113.10/ | head -1
HTTP/1.1 200 OK
curl -sI --resolve example.ir:443:203.0.113.10 https://example.ir/ | head -1
HTTP/2 200
دستور اول با هدر Host بلوک همین دامنه را مستقیم از آیپی میخواهد؛ پاسخ 200 (یا 301 به https) یعنی وبسرور آماده است. دستور دوم همان تست برای HTTPS است، اما فقط وقتی جواب میدهد که گواهی این نام روی سرور نصب باشد؛ پیش از اجرای Certbot خطای TLS یا Connection refused میگیرید و فقط خط اول ملاک است. برای تست از چند کشور check-host.net رکورد A را میخواند؛ برای دید داخل ایران همان nslookup را از اینترنت موبایل بزنید.
تفکیک مهم: اگر dig آیپی درست را میدهد ولی سایت باز نمیشود، مشکل DNS نیست؛ وبسرور یا فایروال است — پورت 80 بسته، بلوک Nginx ساخته نشده یا server_name اشتباه — و راهنمای راهاندازی Nginx روی اوبونتو همه را از صفر میسازد. اگر هنوز سروری ندارید، یک سرور ساعتی بسازید — تحویل معمولاً کمتر از ۶۰ ثانیه — دامنه را رویش تست کنید و اگر جواب نداد حذفش کنید؛ هزینه فقط همان ساعتهاست.
بعد از اتصال دامنه چطور SSL بگیرم و CDN را روشن کنم؟
گواهی رایگان بعد از انتشار رکورد A یک خط است — Let's Encrypt باید دامنه را روی آیپی شما ببیند، پس پیش از سبزشدن خط دوم بخش قبل اجرایش نکنید:
certbot --nginx -d example.ir -d www.example.ir
نصب Certbot، تمدید خودکار و خطاهای صدور در آموزش نصب SSL رایگان با Certbot آمده است. اگر رکورد CAA ساختهاید، طبق مستندات CAA در Let's Encrypt مقدارش باید 0 issue "letsencrypt.org" باشد، وگرنه صدور رد میشود.
کلید CDN کنار هر رکورد A در صفحهی دامنه است و دو شرط دارد: مقدار رکورد یک آیپی عمومی معتبر و نوعش A باشد؛ روی AAAA پنل با پیام «فعلاً فقط رکورد A پشتیبانی میشود.» رد میکند. آنچه روشنکردن کلید با ترافیک میکند در CDN چیست آمده و اینجا تکرار نمیشود؛ دو نکته مخصوص همین صفحه است: پنل محل مبدأ را خودکار میسنجد و فقط اگر مبدأ داخل ایران باشد نود ایران هم اضافه میشود، و صدور گواهی Let's Encrypt روی نودها حدود یک تا دو دقیقه طول میکشد (صفحهی CDN).
برای روز بازگشت: رکورد پروکسیشده با TTL 60 منتشر میشود، پس خاموشکردن کلید در کمتر از یک دقیقه اثر میکند و رکورد A مبدأ با TTL 3600 برمیگردد؛ هزینهی جداگانهای هم ندارد. بالانسینگ هوشمند روی یک نام A — انتخاب آیپی بر اساس موقعیت یا تصادفی، با بررسی سلامت اختیاری — هم در همین پنل هست، اما موضوع این مقاله نیست.
رایجترین اشتباهات اتصال دامنه به سرور مجازی کداماند و هرکدام چه راهحلی دارند؟
تقریباً همهی «دامنه وصل نمیشود»ها یکی از این شش حالت است — نشانه، علت، یک کار:
- dig @ns1.mehranhost.cloud example.ir A ← REFUSED. دامنه در پنل اضافه نشده. بسازیدش و دوباره بزنید.
- dig +short NS example.ir ← نیمسرور هاست قبلی. تغییر ریجسترار ثبت نشده. دوباره ثبت کنید و با @a.nic.ir از ریجستری بپرسید.
- بنر پنل کهربایی میماند و فقط یکی از دو نام دیده میشود. ریجسترار فقط ns1 را پذیرفته. ردیف دوم را دوباره ثبت کنید.
- dig +short A example.ir @8.8.8.8 خالی، ولی پرسش از ns1 آیپی میدهد. DNSSEC از سرویس قبلی مانده. رکورد DS را حذف کنید.
- ریشه باز میشود و www.example.ir «سایت پیدا نشد» میدهد. رکورد www فراموش شده. رکورد A دوم بسازید.
- DNS درست است ولی صفحهی «Welcome to nginx» میآید. درخواست به بلوک پیشفرض افتاده. server_name example.ir www.example.ir; بنویسید، بعد nginx -t و systemctl reload nginx.
سؤالات پرتکرار
تغییر نیمسرور دامنه ir در ایرنیک چقدر طول میکشد؟
تغییر نیمسرور دامنه ir معمولاً چند ساعت و حداکثر ۲۴ ساعت طول میکشد. ریجستری ir رکورد ارجاع دامنه را با TTL 900 ثانیه منتشر میکند، اما رزولورهای اپراتورها پاسخ NS قبلی را تا پایان TTL آن نگه میدارند؛ برای دامنههای com تا ۴۸ ساعت را ممکن بدانید. پس از ثبت ns1 و ns2.mehranhost.cloud در پنل ایرنیک، صفحهی همان دامنه در «مدیریت DNS» با هر بار بازشدن وضعیت را بررسی میکند و وقتی هر دو دیده شوند پیام سبز میدهد.
نیمسرور رایگان مهران هاست چیست و چطور از آن استفاده کنم؟
نیمسرور رایگان مهران هاست یعنی دو سرور نام ns1.mehranhost.cloud و ns2.mehranhost.cloud که رکوردهای دامنهی شما را رایگان نگه میدارند؛ ns1 داخل ایران است و ns2 خارج از ایران. کافی است در پنل کاربری بخش «مدیریت DNS دامنه» را باز کنید، دامنه را اضافه کنید و همین دو نام را در پنل ثبتکنندهی دامنه ثبت کنید. سپس رکوردهای A، AAAA، CNAME، MX، TXT، NS، SRV و CAA را با TTL پیشفرض 3600 و کف 60 ثانیه مدیریت میکنید و کنار هر رکورد A کلید CDN رایگان دارید.
بدون هاست میشود دامنه را مستقیم به سرور مجازی وصل کرد؟
بله، برای اتصال دامنه به سرور مجازی هیچ هاست اشتراکی لازم نیست؛ فقط یک رکورد A لازم است که نام دامنه را به آیپی عمومی سرور برساند. سرور مجازی خودش وبسرور (مثلاً Nginx) را اجرا میکند و درخواست دامنه را جواب میدهد. تنها پیشنیاز این است که DNS دامنه جایی میزبانی شود — پنل ثبتکنندهی دامنه یا هر سرویس DNS مدیریتشدهای که رکورد A را نگه دارد.
برای www هم باید رکورد جداگانه بسازم؟
بله، www یک نام مستقل است و بدون رکورد خودش باز نمیشود. سادهترین راه ساخت دو رکورد A است: یکی برای ریشهی دامنه (@) و یکی برای www، هر دو به همان آیپی سرور؛ اگر بعداً آیپی عوض شد فقط همین دو رکورد را ویرایش میکنید. میتوانید www را CNAME به ریشه هم بگذارید، اما برای ریشهی دامنه CNAME مجاز نیست و باید A باشد. هر دو نام را در server_name وبسرور هم بنویسید.
با نیمسرور رایگان چند دامنه میتوانم مدیریت کنم و محدودیتش چیست؟
هر حساب کاربری در مدیریت DNS مهران هاست تا ده دامنه میتواند اضافه کند و سقف مشخصی برای تعداد رکورد هر دامنه تعریف نشده است. محدودیتهای دیگر: کمترین TTL 60 ثانیه است و سمت سرور اعمال میشود، رکورد NS اصلی دامنه قابل حذف نیست چون همان اتصال دامنه به نیمسرورهاست، و کلید CDN فعلاً فقط روی رکورد A فعال میشود. صفحهی هر دامنه هم وضعیت نیمسرور را با هر بار بازشدن نشان میدهد.