آموزش نصب و راه اندازی BIND روی Centos

DNS Serverاگر قسمت های قبلی این مجموعه نوشتار را دنبال کرده باشید حتما می دانید که ما تا ایتجا موفق به نصب و راه اندازی Apache، PHP و Mysql روی سرور لینوکس شدیم و برای راحتی بیشتر در کار با پایگاه های داده phpmyadmin را هم روی سرور نصب و راه اندازی کردیم ولی هنوز یک نقص بزرگ روی سرور ما وجود دارد و آن هم فراهم نبودن امکان اتصال دامنه به سرور است. به بیان دیگر ما برای استفاده از سرور ناگزیر باید از IP آن استفاده کنیم که حداقل برای کاربردهای میزبانی وب اصلا قابل قبول نیست.

به همین منظور در این نوشته می خواهیم با BIND آشنا شویم و آن را روی سرور لینوکس خود نصب و راه اندازی کنیم. BIND صورت مخفف عبارت The Berkeley Internet Name Domain است و یکی از DNS server های محبوب تحت لینوکس است. نصب آن پیچیدگی چندانی ندارد ولی برای تنظیمات DNS Zone روی آن باید کمی حوصله داشته باشیم.

قبل از شروع روال کار باید اول یک دامنه ی ثبت شده داشته باشیم. ما در این نوشته از دامنه ی رایگان omidr.tk استفاده می کنیم. بعد از ثبت دامنه باید در قسمت تنظیمات nameserver برای دامنه وارد شویم و تنظیمات را مشابه جدول زیر وارد کنیم. البته کنترل پنل های دومین تفاوت های کوچکی با هم دارند ولی کلیت تنظیمات آن ها مشابه هم است. دقت کنید که به جای IP Address باید IP سرور را وارد کنیم.

تنظیمات name serverحالا می توانیم مراحل کار را روی سرور شروع کنیم.

قدم اول: نصب bind

با استفاده از دستور زیر bind را روی Centos نصب مب کنیم. دقت کنید که لینوکس bind را با شناسه ی named می شناسد از همین رو ما هم در ادامه ی این نوشته bind و named را به صئرت معادل هم استفاده می کنیم.

yum −y install bind

قدم دوم: ویرایش فایل تنظیمات

حالا به آدرس /etc می رویم و فایل named.conf را برای ویرایش باز می کنیم و کد زیر را درون آن قرار می دهیم و تغییرات را ذخیره می کنیم.

options {
directory "/var/named";
version "Nope.";
};

zone "omidr.tk" in {
type master;
file "omidr.tk";
};

بد نیست کمی در مورد کد بالا صحبت کنیم. خط ۱ تا ۴ مربوط به تنظیمات bind هستند. در خط ۲ آدرس شاخه ی محل قرارگیری فایل های مربوط به bind را معرفی می کنیم و در خط ۳ هم بنا به دلایل امنیتی نمایش نسخه ی bind را محدود می کنیم.

خططو ۶ تا ۹ کد بالا مربوط به اضافه کردن یک DNS Zone ورودی برای دامنه ی omidr.tk است. شما می توانید به جای omidr.tk نام دامنه ی خود را بدون www قرار بدهید. دقت کنید که به ازای هر دامنه ی متصل شده به سرور نیاز به یک DNS Zone خواهیم داشت.

در خط ۸ کد بالا ما نام فایل حاوی تنظیمات اختصاصی DNS Zone مربوط به دامنه ی omidr.tk را وارد می کنیم. باید دقت داشته باشیم که این فایل باید در شاخه ای که در خط ۲ کد معرفی کرده ایم قرار داشته باشد.

قدم سوم: ایجاد فایل تنظیمات DNS Zone

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

$TTL 86400;
@ IN SOA ns1.omidr.tk. omidrezav.omidr.ir. (
۲۰۱۰۰۶۲۸۰۱ ; Serial
۱۰۸۰۰ ; Refresh
۳۶۰۰ ; Retry
۶۰۴۸۰۰ ; Expire
۸۶۴۰۰ ; Minimum
)
omidr.tk. IN NS ns1.omidr.tk.
omidr.tk. IN NS ns2.omidr.tk.
omidr.tk. IN A 91.109.18.151
ns1.omidr.tk. IN A 91.109.18.151
ns2.omidr.tk. IN A 91.109.18.151
www.omidr.tk. IN A 91.109.18.151
ftp.omidr.tk. IN A 91.109.18.151
mail.omidr.tk. IN A 91.109.18.151
omidr.tk. IN MX 10 mail.omidr.tk.

حالا کد بالا را با هم مرور می کنیم. خط اول برای سرورهای DNS Cache مشخص می کند که اطلاعات این zone برای چه مدتی باید در cache بماند. ما در اینجا ۸۶۴۰۰ ثانیه معادل یک روز را در نظر گرفته ایم.

در مورد خطوط ۲ تا ۸ این نکات مطرح هستند:

  1. نیازی به تغییر اعداد در این قسمت نیست.
  2. در خط ۱ به جای ns1.omidr.tk باید آدرس name server دلخواه خود را وارد کنید.
  3. omidrezav.omidr.ir در واقع ایمیل مدیر است که شما باید آن را با ایمیل خود جایگزین کنید. دقت کنید که به جای @ از نقطه (.) استفاده شده است.
  4. دقت کنید که همه ی آدرس ها به نقطه (.) ختم می شوند.

ادامه ی کد یعنی خطوط ۹ تا ۱۷ را هم در ادامه به اختصار شرح می دهیم:

  • خط ۹ و ۱۰ مربوط به تعریف رکوردهای NS مربوط به DNS Zone هستند.
  • خطوط ۱۱ تا ۱۶ همه ی رکوردهای A ورودی به Zone را معرفی می کنند. در این قسمت باید به چند نکته دقت کنیم:
    1. برای ns1 و ns2 که مربوط به name server هستند هم باید A Record تعریف کنیم.
    2. هم برای omidr.tk و هم برای www.omidr.tk باید A record تعریف کنیم.
    3. به ازای هر subdomain باید یک A Record تعریف کنیم.
    4. به جای مقادیر موجود در مثال بالا باید نام دامنه ی دلخواه و IP Address سرور خود را وارد کنید.
    5. به نقطه (.) در پایان همه ی آدرس ها دقت کنید.
  • خط ۱۷ به معرفی رکورد MX اختصاص دارد که به میل سرورها اطلاع می دهد ایمیل های مربوط به این دامنه را به چه آدرسی ارسال کنند. دقت کنید که آدرس subdomain استفاده شده در این قسمت باید قبلا در قسمت A Record به عنوان subdoamin معرفی شده باشد.

قدم چهارم: راه اندازی bind

حالا که تنظیمات به درستی انجام شده اند با دستورات زیر bind را در لیست بوت سرور قرار می دهیم و اجرایش می کنیم.

chkconfig named on
service named start

بعد از اجرای موفقیت آمیز دستورات فوق می توانیم با وارد کردن نام دامنه به سرور وصل شویم. البته باید دقت کنیم که با توجه به cache شدن اطلاعات name server ها در سرورهای DNS Cache احتمالا مدتی بین ۲۴ ساعت تا ۴۸ ساعت طول خواهد کشید تا ما بتوانیم از نام دامنه ی خود استفاده کنیم. این تاخیر مربوط به سرور ما و تنظیمات آن نمی باشد و اصولا راه حلی بهتر از صبر و حوصله ندارد.

44 پاسخ به “آموزش نصب و راه اندازی BIND روی Centos”

  1. وحید گفت:

    سلام. مرسی از آموزش خوبتون. ولی من نتونستم از این طریق دی ان اس رو ست کنم. در کنترل پنل دامنه .ir باید چی رو وارد کنم؟

    • امیدرضا گفت:

      سلام دوست من
      مطابق تصویر زیر در قسمت تنظیمات سامانه نام دامنه اطلاعات nameserver های خود را وارد کنید. در قسمت نام کارگزار آدرس nameserver خود را وارد کنید؛ مثلا ns1.omidr.ir و در قسمت آی پی کارگزار آدرس IP سرور مربوطه را وارد نمایید.
      اگر بیش از یک nameserver دارید می توانید هر کدام را در یک سطر تعریف کنید.

      تنظمیات DNS اختصاصی در nic

  2. محمد گفت:

    برای centos 6.5 کار نمیکنه میشه توضیحات جدید اضافه کنید

  3. امین گفت:

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

  4. بهراد گفت:

    ریورس زون رو چکار کنم؟
    اگر سرور من جایی باشه که ip ولید فقط دورو ورش باشه تو ریورس زونم چی کار کنم؟

    • امیدرضا گفت:

      قصد دارید برای ip تون reverse dns تعریف کنید؟ این روش برای تعریف reverse dns جواب نمیده. من هم خیلی اطلاعات دقیقی ندارم.

  5. قصد راه اندازی یه وب سرور خانگی دارم.چه مراحی داره؟ گفت:

    […] باشد و اصولا راه حلی بهتر از صبر و حوصله ندارد. منبع: روزهای خط خطی | آموزش نصب و راه اندازی BIND روی Centos فناوری اطلاعات گیلانت http://www.GuilaNet.com پاسخ با نقل […]

  6. امین گفت:

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

  7. king گفت:

    service bind start
    bind: unrecognized service
    moshkel chie ?

    • امیدرضا گفت:

      سلام دوست من،
      سرویس مربوط به نرم افزار bind در سیستم عامل CentOS به نام named شناخته میشه و شکل صحیح نوشتن دستور باید به صورت زیر باشه:
      service named start

      بنده در نوشتن کد یه اشتباه کوچولو داشتم که عذر می خوام و امیدوارم بنده رو ببخشید.

      • king گفت:

        سلام دوست عزیز
        بله این دستور رو زده بودم بیشتر جنبه این رو داشت که اصلاحش کنید .
        خواهش میکنم این چه حرفیه مشکل خاصی نیست که .
        ولی یه سوال دارم :
        توی قسمت “قدم سوم” که گفتید باید یه فایل بسازیم
        بنده با دستوری شبیه به این فایل رو ساختم :
        nano omidr.tk
        بعد اون کد هایی که نوشته بودید رو طبق شرایط سرور و دامین تغییر دادم و داخلش سیو کردم
        میخواستم بدونم اشکالی نداره ؟
        نیم سرور هارو هم برای دامین tk خود ساخته ام و تنظیمات رو ( به جز موردی که در بالا ذکر نمودم ) انجام داده ام .
        تا ۲۴ ساعت آینده صفحه پیشفرض apache که الان با ip سرور باز میشود با دامین باز خواهد شد ؟!
        تشکر .

        • امیدرضا گفت:

          با سلام مجدد
          اگر درست فهمیده باشم شما تمام تنظیمات رو کپی کردید و فقط به جای دامنه ی omidr.tk نام دامنه ی خودتون رو گذاشتید. اگر اینطوری باشه قاعدتا نباید مشکلی باشه و تنظیمات شما جواب میده. اسم فایلی که اطلاعات zone هاتون رو توش گذاشتید هم خیلی مهم نیست چی باشه. البته روی سروری که چندین دامنه میزبانی میشه بهتره اسم فایل ها شفاف باشه تا بعدا بشه راحت سر از کارش درآورد.

          • king گفت:

            آخه تو قسمت “قدم دوم” اسم فایل معرفی شده ! با این حال فرقی نداره اسم فایل چی باشه ؟!
            بعد اینکه تنظیمات ns1 و ۲ توی مشخصات دامین هست و اوکیه ولی هنوز پینگ نمیدن و آیپی ست نشده روی ns1 و ۲

            • king گفت:

              این ریپورتیه که intodns نشون داد :
              DNS servers responded
              ERROR: One or more of your nameservers did not respond:
              The ones that did not respond are:
              *****

              • امیدرضا گفت:

                این خطا یعنی nameserver های شما در پنل دامنه به درستی set شدن و propagate هم شدن ولی DNS شما بنا به دلایلی جواب نمیده. تنظیماتتون رو دوباره چک کنید و اگر جواب نداد بگید تا با هم یه نگاهی بهش بندازیم.

            • امیدرضا گفت:

              فکر می کنم منظورم رو درست عرض نکردم. این که اسم فایل چی باشه اهمیتی نداره؛ مثلا من می تونم اسم فایل رو بذارم google.com و مشکلی هم پیش نمیاد چون bind به اسم فایل کاری نداره و فقط محتویات رو بررسی می کنه ولی همونطور که خودتون گفتید ما در قدم دوم آموزش یک zone تعریف می کنیم و در قدم سوم رکوردهای این zone رو وارد می کنیم. طبیعتا باید رکوردهای هر zone رو در فایلی که بهش تخصیص دادیم قرار بدیم.

              • king گفت:

                الان محتویات یه فایلی شبیه این
                /var/named/omidr.tk
                دقیقا همونطوره که تو قسمت ۳ بوده ( البته نه همون :دی )
                بله از سمت دامین همه چیز اوکیه
                مثلا مشکل نموتونه از iptables باشه یا .. به خاطر پورتی چیزی .. ؟!
                یاهو دارید ؟

              • امیدرضا گفت:

                بله فایروال هم می تونه باعث مشکل بشه؛ قاعدتا باید پورت ۵۳ سرور باز باشه. این هم ID یاهوی بنده است: v.omid

  8. hamid گفت:

    با سلام
    ممنون از آموزش
    روی دبیان ۷ طبق این آموزش رفتم به خوبی انجام شد

  9. علی اصغر گفت:

    از کجا میشه فهمید dns server نصب شده؟ یا نه

    • امیدرضا گفت:

      سلام دوست من
      سوالتون خیلی کلی و مبهمه ولی در حالت عادی اگر dns server شما نصب شده باشه دستور chkconfig باید نشونش بده یعنی باید در لیست برنامه هایی که در خروجی chkconfig دیده میشه باشه و وضعیتش هم طوری باشه که در موقع بالا اومدن سرور اجرا بشه. استفاده از دستور start و stop هم باید جواب بده. به علاوه با استفاده از netstat می تونید ببینید که آیا برنامه ای روی پورت ۵۳ فعال هست یا نه. طبیعتا اگر فعال باشه dns server هست. اگر هم به سرور دسترسی نداشته باشید با port scan می تونید ببینید که آیا پورت ۵۳ باز هست یا نه.

  10. حمید گفت:

    سلام
    ممنون.
    ولی یه سوال فنی:
    اصلا چه نیازیه تو وب سرور بایند نصب بشه ؟؟
    ما که قرار نیست DNS سرور راه اندازی کنیم که..؟!
    مگه اینطور نیست که خود apache به طور اوتوماتیک بر اساس ServerNameیی که تو VirtualHosts ها تعریف میکنیم میتونه دامنه ها رو تشخیص بده ؟؟پس نصب بایند به چه دردی میخوره؟؟

    • امیدرضا گفت:

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

      1. مرورگر به ثبت کننده دامنه رجوع می کند و لیست nameserver های آن دامنه را دریافت می کند.
      2. مرورگر برای یکی از nameserver های موجود در لیست یک DNS Query ارسال می کند و در پاسخ IP محل میزبانی دامنه را پس می گیرد.
      3. حالا مرورگر آدرس IP سرور را دارد و می تواند درخواست خود را برای سرور ارسال کرده و نتیجه را بعد از render کردن به کاربر نمایش دهد.
      4. درخواست ارسال شده معمولا برای بررسی و پاسخگویی در اختیار web server نصب شده روی سرور که می تواند apache باشد گذاشته می شود.
      5. در اینجا بحث virtual host های apache به میان می آید. چنانچه دامنه در virtual host های apache تعریف شده باشد apache می تواند فایل های مربوط به آن را پیدا کرده، در صورت نیاز اسکریپت ها را اجرا کند و در نهایت نتیجه را به مرورگر برگرداند. بدیهی است در غیر این صورت apache کد خطا (بسته به تمظیمات سیستم ۴۰۴ یا ۴۰۳) بر می گرداند.

      در یک جمع بندی مختصر می تونم بگم که DNS مسئول معرفی محل میزبانی یک دامنه به دنیای اینترنته و وب سرور (مثلا apache) مسئول پاسخگویی به درخواست های HTTP(S) ارسالی از طرف مرورگرها.

      امیدوارم که تونسته باشم حق مطلب رو ادا کنم.

  11. شهاب گفت:

    از مطالب خوبتون ممنون دوست من
    یکی از مشکلات در مورد سرور centos نبود آموزش فارسی است که شما به خوبی توضیح دادید

  12. فائق گفت:

    با عرض سلام و تشکر از مطالب نادر و مفیدتون
    ۲ سوال کوتاه:
    آیا ns هایی که روی سرور تعریف میکنیم باید قابل ping کردن باشند؟ یعنی مثلا ns1.example.com باید توی ping ، جواب بده تا قابل استفاده باشه؟

    سوال دوم: ترتیب وارد کردن ns1 و ns2 توی ایرنیک فرق میکنه؟متونیم اول ns2 رو وارد کنیم؟

    • امیدرضا گفت:

      سلام دوست عزیز،
      خییل خوشحالم که نوشته ی من تونسته کمکتون کنه.
      لزومی نداره nameserver قابل ping باشه. همین که پورت DNS روش باز باشه کفایت می کنه.
      در مورد سوال دوم هم باید بگم که ترتیب وارد کردن nameserver ها تفاوت چندانی نداره.

  13. علی گفت:

    با درود
    من تمام کارهای گفته شده را انجام دادم ولی اجرا نشد
    میشه خواهش کنم یک آموزش تصویری معرفی کنید؟
    با س‍پاس فراوان

    • امیدرضا گفت:

      سلام دوست عزیز
      من خودم این مراحل رو انجام دادم و تست کردم. دوستان هم انجام دادن و نتیجه گرفتن. راستش من نمونه ی آموزش فارسی سراغ ندارم ولی نمونه ی انگلیسی توی نت زیاد هست.

      • علی گفت:

        با درود
        یکم باهاش کار کردم درست شد.فقط اگه بخوام چندین دامین که متصل به فولدرهای خودشون هستند معرفی کنم باید کجا رو تغییر بدم.
        با س‍پاس فراوان

        • امیدرضا گفت:

          سلام دوست عزیز
          به قدم دوم آموزش یه نگاهی بندازید: در خط ۶ تا ۹ داریم یه فایل zone تعریف می کنیم. فایل omidr.tk که قرار است اطلاعات دامنه ی omidr.tk در آن قرار داده شود و در فولدر /var/named قرار داده خواهد شد.
          با همین روال شما می توانید برای هر تعداد دامنه که داشته باشید zone تعریف کنید.

  14. باقری گفت:

    با سلام
    خدمت آقای امیدرضا
    یک سئوال داشتم:
    اگرما دوتا دامنه داشته باشیم و بخواهیم دامنه دوم به دامنه اول alias شود بازهم باید دوتا زون جداگانه تعریف شود یا فقط در فایل مربوط به دامنه اول رکورد cname آورده شود کافیست؟
    و اگر این کار امکان داشته باشد، آیا ایمیل های دامنه دوم هم به ایمیل های متناظر خود در دامنه اول منتقل می‌شوند یاخیر؟
    اگر امکان داشت با جزئیات توضیح دهید.
    یک دنیا ممنون از نشر علم و دانشتان

  15. ژوبین گفت:

    سلام.
    یه سوال دارم. ممنون می شم اگر کسی کمک کنه.

    من یک وب سرور خانگی راه انداختم ولی توی راه اندازی dns server به مشکل برخوردم به این علت که ISP ای که از اش استفاده می کنم پورت ۵۳ رو بسته. آیا امکانش هست که بشه dns server رو روی پروت دیگه ای راه اندازی کرد؟ اگر بله چه جوری.
    این توضیح رو هم بدم که در روتر خودم در قسمت nat، پورت ۵۳ لوکال رو روی پورت ۵۴ از آی پی استاتیک انداختم، امیدوار بودم که کار کنه ولی نشد.

  16. معین گفت:

    سلام
    واسه من که کار نمیکنه mailsenderz.tk زدم
    همه مراحل رو هم ترکیبی از سایت شما و دیجیتاا اوشن رفتم واقعا شده یه مشکل جدی واسه من
    service named restart
    OK OK
    ولی رو آپاچی بهم گیر میده
    Starting httpd: httpd: apr_sockaddr_info_get() failed for tg11
    httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

    لطفا بهم میل کنید

  17. سعید گفت:

    با تشکر از آموزش خوبتون
    خوب بود

  18. امیرحسین گفت:

    یدونه ای?

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.