چگونه دامنه خود را به سرور مجازی متصل کنیم؟

آموزش استفاده از Bind9 برای اتصال دامنه به سرور مجازی

یکی از مشکلاتی که همیشه با آن رودررو بودم، اتصال دامنه ir به سرور مجازی بود. آموزش های یوتیوب و مقالات خارجی می گفتند از پنل مدیریت دامنه از سرویس دهنده ای که خریداری کرده اید، می توان این اتصال را انجام داد ولی در ایرنیک، برای دامنه های ir چنین امکانی وجود نداشت. راهی که پیدا کردم، استفاده از قسمت تنظیمات DNS کلودفلیر برای اینکار بود. قبلا هم سایت هایی را که روی گیت هاب راه انداخته بودم، به همین روش به دامنه وصل کردم. پس مشکل خاصی نداشت اما فهمیدم در شرایط اینترنت داخلی، سایت از دسترس خارج می شود، بنابراین به دنبال راه های جایگزین رفتم. بعدها فهمیدم که می توان با نصب کردن Bind9 یک DNS‌ server روی سرور راه اندازی کرد و دامنه را به vps متصل کرد اما آموزش ها در این زمینه کامل نبودند. شاید دلیل نبود منابع کافی در یوتیوب، امکان تنظیم این اتصال در سرویس دهنده های خارجی است. با تمام این وجود، با صرف زمان به نتیجه ای که می خواستم رسیدم. تصمیم گرفتم در این مطلب، روش اتصال دامنه ir به سرور را به وسیله Bind9 آموزش دهم تا بدون دغدغه و سردرگمی دامنه خود را متصل کنید. همانطور که من آرزو داشتم چنین مقاله را داشته باشم.

قبل از شروع نصب و پیکربندی، باید با مفهوم چند اصطلاح آشنا شوید.

آشنایی با مفاهیم

آی پی چیست؟

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

  • آی پی پابلیک: این آدرس، به طور عمومی در دسترس است و سرویس دهنده اینترنت شما (ISP)، آن را به روتر شما اختصاص می دهد. آی پی های پابلیک دو نوع دارند.
    • آی پی داینامیک: وقتی شما با کامپیوتر یا گوشی هوشمند خود به اینترنت متصل می شوید، ISP یک آی پی به شما اختصاص می دهد و به راحتی می توانید سایت مورد نظر خود را باز کنید یا فایل دلخواه را از اینترنت دانلود کنید. حال اگر با همان دستگاه، بار دیگر سعی کنید به اینترنت متصل شوید، ISP شما یک آی پی دیگر در اختیار شما قرار می دهد. می توانید با خاموش و روشن کردن مودم اینترنت، این تغییر آی پی را مشاهده کنید. چون این آی پی همواره در حال تغییر است به آن، آی پی پویا یا داینامیک گفته می شود.
    • آی پی استاتیک: آدرس های استاتیک یا ایستا هیچ موقع تغییر نمی کنند و به عنوان یک آدرس دائمی در اینترنت عمل می کنند. این آی پی ها توسط DNS Server استفاده می شوند. با این مفهوم در ادامه مقاله بیشتر آشنا می شوید. به سرور شما نیز آی پی استاتیک اختصاص می یابد و شما دامنه را به این آی پی متصل می کنید.
  • آی پی پرایویت: این آی پی، یک آدرس داخلی از دستگاه شماست و به اینترنت متصل نمی شود. انتقال داده بین اینترنت و آی پی پرایویت انجام نمی شود.

دامنه چیست؟

به طور ساده، دامنه رشته ای از کاراکترهاست که به یک آدرس آی پی مرتبط می شود. دامنه متنی است که کاربر در مرورگر می نویسد تا به یک سایت خاص دسترسی پیدا کند.

همانطور که گفته شد آدرس اصلی یک سایت، یک آدرس آی پی عددی پیچیده است اما توسط DNS، کاربران می توانند یک دامنه را با نام ساده (مانند google.com یا mebrahimi.ir) وارد کنند و به سایت مدنظر خود دسترسی پیدا کنند.

DNS چیست؟

Domain Name System یا DNS دفترچه تلفن اینترنت است. شما از طریق دامنه هایی مثل google.com به سایت دسترسی پیدا کنید ولی آدرس حقیقی یک سایت آی پی آن است و مرورگر از طریق این آی پی است که با سایت ارتباط برقرار می کند. DNS این نام دامنه را به آدرس آی پی ترجمه می کند. بنابراین DNS نیاز کاربران را برای به خاطر سپردن آدرس های پیچیده آی پی مانند 11.33.55.77 از بین می برد.

مراحل نصب و پیکربندی

در این مقاله، از سرور با سیستم عامل دبیان ۱۱ استفاده کردم اما اصول کار در همه توزیع ها یکسان است.

نصب فایروال

اگر مثل من از سرور دبیان استفاده می کنید، به احتمال زیاد فایروال روی سرور به طور پیشفرض نصب نشده است. برای این که چک کنید فایروال ufw روی سرور نصب شده یا نه دستور زیر را وارد کنید. فرض من بر این است که دستورات با کاربر با دسترسی sudo اجرا می شود. اگر به عنوان کاربر روت لاگین کرده اید می توانید دستورات را بدون sudo اجرا کنید.

1
sudo ufw status

در صورت نصب بودن فایروال می توانید به مرحله بعدی بروید ولی اگر خروجی به صورت زیر بود، فایروال نصب نشده است.

1
sudo: ufw: command not found

برای نصب فایروال دستور زیر را وارد کنید.

1
sudo apt install ufw

قبل از این که فایروال را فعال کنید باید امکان دسترسی ssh را اضافه کنید. زیرا در صورت فعال کردن فایروال در این شرایط دسترسی شما به سرور از دست می رود. برای این کار دستور زیر را وارد کنید.

1
sudo ufw allow "OpenSSH"

و بعد از آن، فایروال را فعال کنید

1
sudo ufw enable

حالا اگر دستور sudo ufw status را اجرا کنید خروجی زیر را باید مشاهده کنید:

1
2
3
4
5
6
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             

حالا با خیال راحت سرور را ریبوت نرم افزاری کنید و مراحل را ادامه دهید.

نصب Bind9

برای نصب Bind9 دستور زیر را وارد کنید.

1
sudo install bind9

کانفیگ Bind9

برای کانفیگ Bind9 سه سناریوی زیر را درنظر می گیرم.

  • یک سرور که یک آی پی استاتیک به آن متصل است
  • یک سرور که دو آی پی استاتیک به آن متصل است
  • دو سرور که به هر کدام یک آی پی استاتیک وصل شده است توضیحات کامل را در مورد سناریوی اول می دهم و برای سناریوهای بعدی فقط مراحل متفاوت را شرح می دهم.

یک سرور و یک آی پی

در این سناریو فرض کنید یک سرور دارید که آی پی آن ۱۱.۳۳.۵۵.۷۷ است (در این بخش من دو nameserver با یک آی پی می سازم اما امکان ساخت یک nameserver نیز وجود دارد).

فایل named.conf.options

فایل های کانفیگ Bind9 در مسیر /etc/bind قرار می گیرد. ابتدا وارد این مسیر شوید و فایل named.conf.options را با ویرایشگر متن دلخواه مثل nano یا vim باز کنید. قسمت forwarders را از حالت کامنت خارج کرده و مانند کد زیر پر کنید.

1
2
3
4
forwarders {
    8.8.8.8;
    8.8.4.4;
};
فایل named.conf.local

سپس فایل named.conf.local را باز کنید و کد زیر را به انتهای فایل اضافه کنید.

1
2
3
4
zone "domain.ir" {
    type master;
    file "/etc/bind/zones/db.domain.ir";
};

به جای domain.ir دامنه ای که خریداری کرده اید را قرار دهید. از این به بعد هر جا از domain.ir استفاده شد دامنه خود را جایگزین کنید. دقت کنید در این کانفیگ، ما مسیر فایل zone دامنه را در دایرکتوری zones قرار دادیم که باید آن را بسازیم. بنابراین دستور زیر را وارد می کنیم.

1
sudo mkdir /etc/bind/zones
فایل db.domain.ir

وارد مسیر /etc/bind/zones شوید و فایل db.domain.ir را ایجاد کنید و محتوای زیر را در این فایل قرار دهید.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
$TTL    14400
@       IN  SOA ns1.domain.ir.  webmaster.domain.ir. (
                    2023012400  ; Serial in YYYYMMDDXX (XX is increment)
                         10800  ; refresh seconds
                          3600  ; retry
                        604800  ; expire
                         38400  ; minimum
);

domain.ir.  IN  NS      ns1.domain.ir.
domain.ir.  IN  NS      ns2.domain.ir.

@           IN  A       11.33.55.77
ns1         IN  A       11.33.55.77
ns2         IN  A       11.33.55.77

www         IN  CNAME   domain.ir.

به دلیل اهمیت این فایل قسمت های مهم آن را توضیح می دهم اما قبل از خواندن توضیحات من، برای درک بهتر موضوع، به عکس زیر نگاه کنید و بعد از آن ادامه متن را مطالعه کنید.

فایل zone برای دامنه

  • وقتی شما در مرورگر خود یک دامنه را وارد می کنید، مرورگر با DNS nameserver سرویس دهنده اینترنت شما (ISP) ارتباط برقرار می کند و آی پی مربوط به دامنه شما را به دست می آورد. وظیفه این تبدیل دامنه به آی پی برعهده رکورد A است که در این فایل نیز مشاهده می کنید.
  • مهم ترین قسمت این فایل رکوردهای A هستند. بدون وجود این رکوردها شما به جای استفاده از دامنه، باید از آی پی برای وبگردی استفاده می کردید.
  • حتما به “.” بعد از آدرس دامنه توجه کنید. گذاشتن این نقطه اجباری است.
  • @ در این فایل به جای دامنه شما به کار می رود بنابر این هر جایی @ به کار رفته می توانید از domain.ir. هم استفاده کنید. (نقطه در انتهای دامنه قرار میگیرد و اگر در این مطلب در ابتدا قرار گرفته به خاطر تنظیمات راست به چپ مطالب فارسی در این سایت است).
  • webmaster.domain.ir. نشانگر ایمیل شماست که به جای @ نیز . به کار رفته است. مثلا اگر ایمیل من ebrahimim79@duck.com است آن را به صورت ebrahimim79.duck.com. می نویسم.
  • در قسمت سریال، باید با هر بار تغییر این فایل عدد آن را افزایش دهید. برای راحتی کار بر اساس تاریخ، این سریال را میسازیم و به انتهای آن نیز دو صفر اضافه می کنیم. مثلا در تاریخ ۲۴ ژانویه ۲۰۲۳ مینویسیم 2023012400 و هر بار این فایل را تغییر می دهیم یک عدد به این سریال اضافه می کنیم. مثلا می شود 2023012401.
  • برای ساختن دو nameserver باید دو آی پی داشته باشید ولی اگر یک آی پی دارید (مثل اکثر سرورهای ایرانی) می توانید در این فایل هر دو nameserver را به یک آی پی متصل کنید.
  • به جای 11.33.55.77 آی پی سرور خود را قرار دهید.

یک سرور و دو آی پی

در این سناریو شما یک سرور با آی پی های ۱۱.۳۳.۵۵.۷۷ و ۲۲.۴۴.۶۶.۸۸ دارید. تمام مراحل با سناریوی اول یکسان است و فقط محتوای فایل db.domain.ir به صورت زیر خواهد بود.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
$TTL    14400
@       IN  SOA ns1.domain.ir.  webmaster.domain.ir. (
                    2023012400  ; Serial in YYYYMMDDXX (XX is increment)
                         10800  ; refresh seconds
                          3600  ; retry
                        604800  ; expire
                         38400  ; minimum
);

domain.ir.  IN  NS      ns1.domain.ir.
domain.ir.  IN  NS      ns2.domain.ir.

@           IN  A       11.33.55.77
ns1         IN  A       11.33.55.77
ns2         IN  A       22.44.66.88

www         IN  CNAME   domain.ir.

دو سرور و دو آی پی

در این سناریو شما دو سرور دارید که هر کدام یک آی پی دارد. آی پی سرور اول ۱۱.۳۳.۵۵.۷۷ و آی پی سرور دوم ۲۲.۴۴.۶۶.۸۸ است. به سرور اول master و به سرور دوم slave می گوییم.

شاید از خود بپرسید فلسفه داشتن دو سرور برای این کار چیست؟ در دو سناریوی اول اگر سرور شما از دسترس خارج شود، دسترسی شما به سایت نیز از دست می رود ولی در این سناریو با فرض از دست رفتن سرور اول همچنان می توان به سایت متصل شد.

در سرور master همه مراحل مانند سناریوهای قبل است با این تفاوت که محتوای فایل named.conf.local به صورت زیر خواهد بود.

1
2
3
4
5
6
zone "domain.ir" {
    type master;
    file "/etc/bind/zones/db.domain.ir";
    allow-transfer {22.44.66.88;};
    allow-update {none;};
};

محتوای فایل db.domain.ir هم مانند سناریوی دوم یعنی یک سرور و دو آی پی است.

در سرور slave نیز فایروال و Bind9 را نصب کنید. تنها کانفیگی که برای Bind9 در این سرور انجام می دهید این است که کدهای زیر را به فایل /etc/bind/named.conf.local اضافه کنید.

1
2
3
4
5
zone "domain.ir" {
    type slave;
    file "/etc/bind/slaves/db.domain.ir";
    masters {11.33.55.77;};
};

و تمام. نیازی به ساخت فایل db.domain.ir نیست زیرا سرور slave به طور خودکار اطلاعات master zone را از سرور دیگر دانلود می کند.

چک کردن درستی کانفیگ ها

برای این که از درستی کانفیگ های خود مطمئن باشید، می توانید از دستورات زیر استفاده کنید.

1
2
sudo named-checkconf
sudo named-checkzone domain.ir /etc/bind/zones/db.domain.ir

در صورت درست بودن فایل های کانفیگ دستور اول خروجی نخواهد داشت و خروجی دستور دوم به صورت زیر است.

1
2
zone domain.ir/IN: loaded serial 2023012400
OK

حال برای اجرای مجدد Bind9 با کانفیگ های جدید، دستور زیر را وارد کنید. دقت کنید اگر از دو سرور master و slave استفاده می کنید، این مراحل را برای هر دو سرور انجام دهید.

1
sudo systemctl restart Bind9

اضافه کردن قانون Bind9 به فایروال

اکنون برای اضافه کردن Bind9 به فایروال دستور زیر را بنویسید.

1
sudo ufw allow "Bind9"

پیکربندی DNS در سایت ایرنیک

وارد سایت ایرنیک شوید و به حساب کاربری خود وارد شوید. در بخش دامنه ها > دامنه های من بروید و روی دامنه مورد نظر کلیک کنید. سپس در قسمت “سامانهٔ نام دامنه (DNS)” روی دکمه “ویرایش ردیف‌های کارگزاری نام و میزبانی دامنه »” کلیک کنید. در قسمت “کارگزار دامنه (NS Record)” اطلاعات مورد نیاز را به صورت زیر وارد کنید.

سناریوی اول

شمارهٔ NS نام کارگزار آی‌پی کارگزار
1 ns1.domain.ir 11.33.55.77
2 ns2.domain.ir 11.33.55.77

سناریوی دوم و سوم

شمارهٔ NS نام کارگزار آی‌پی کارگزار
1 ns1.domain.ir 11.33.55.77
2 ns2.domain.ir 22.44.66.88

تغییرات را ثبت کنید. ممکن است اعمال شدن این تغییرات ۲۴ تا ۴۸ ساعت طول بکشد. برای این که چک کنید آیا دامنه به آی پی متصل شده است و تغییرات به درستی انجام شده است می توانید از دستور زیر استفاده کنید (بعد از ۲۴ تا ۴۸ ساعت).

1
nslookup domain.ir

همچنین سایت intodns.com اطلاعات زیادی را در اختیار شما قرار می دهد. کافی است آدرس دامنه خود را در این سایت وارد کنید تا اطلاعات مربوط به تنظیمات DNS را مشاهده کنید.

قدرت گرفته از Hugo
قالب Stack ساخته شده توسط Jimmy