نوشته های من !

راجع به تجربه های شخصی از دنیای برنامه نویسی می نویسم، یا از روزمرگی هام …
نصب و راه‌اندازی DNS Server با استفاده از Bind بر روی CentOS 7
نویسنده:
۱۰ تیر ۹۶

یه سری مقدمات میگم، اگر با DNS آشنایی دارین و میدونین چرا اومدین به این صفحه، می‌تونین از این قسمت بگذرین و بخش بعدی رو بخونین.

بخش اول ( چیستی و چرایی DNS):

فرض کنین یه سرور اجاره کردین، موقع تحویل سرور تنها آدرسی که به شما میدن ‌IP اون سرور هست. ولی خب این اصلا منطقی نیست که به کاربرانتون بگین برای دیدن سایت من آدرس 162.215.89.33 (آدرس فرضی) رو وارد کنین. کاری که باید انجام بدین این هست که یک دامنه بخرین، مثلا alafalaki.ir، و این نام دامنه که خب قطعا حفظ کردنش راحت‌تر هست رو به کاربرانتون معرفی کنین.

سوالی که پیش میاد این هست که خب شبکه اینترنت از کجا بفهمه وقتی کاربرها alafalaki.ir رو وارد میکنن، باید هدایت بشن به سروری که من خریدم؟

اینجا هست که بحث DNSها به وجود میاد. DNS مخفف Domain Name Service هست و وظیفه‌اش این هست که وقتی کاربر می‌خواد به یک سایتی دسترسی داشته باشه، مثلا alafalaki.ir، نام دامنه وارد شده رو به IP اون وب‌سایت تبدیل کنه. داستان DNS Service رو اگه بخوایم توی یه کارتون نشون بدیم، میشه کارتون زیر. (برای مشاهده سایز بزرگ روی عکس کلیک کنین.)

حالا که متوجه شدیم سرور DNS چه وظیفه‌ای داره، راه‌های مختلفی داریم. می‌تونیم از سرویس‌های مجانی DNS استفاده کنیم. مثل NoIP که IP مورد نظر رو از شما دریافت میکنن و یه آدرس براتون تولید می‌کنن، مثلا آدرس سایتتون میشه alafalaki.hopto.org. که خب اصلا منطقی نیست. راه بعدی این هست که بیایم و یک DNS سرور برای خودمون راه بندازیم تا بتونیم دامین مورد نظر خودمون رو به سرورمون متصل کنیم. (منطقا نباید لازم به گفتن باشه، ولی ما راه دوم رو انتخاب میکنیم.)

بخش دوم (به روز رسانی NS دامنه خریداری شده):

توی این مرحله باید وارد کنترل پنل دامنه‌ای که خریداری کردین بشین. آدرس‌های (برای مثال) ns1.alafalaki.ir و ns2.alafalaki.ir برای دامنه فرضی alafalaki.ir به عنوان نام کارگذار وارد کنین. (مدت زمان تایید شدن این اطلاعات -مخصوصا اگر دامنه .ir خریده باشین- امکان داره زمان‌بر باشه)

بخش سوم (راه‌اندازی سرور DNS):

توی این آموزش شیوه راه‌اندازی بر روی CentOS 7 توضیح داده شده. ولی اگر شما سرور اوبونتو دارین، می‌تونین آموزش رضا شیخله عزیز  رو بخونین.

قدم اول:

باید نرم‌افزار bind رو نصب کنیم.

yum -y install bind bind-utils

قدم دوم:

باید یه سری تنظیمات رو تغییر بدیم. فایل named.conf رو با دستور زیر باز می‌کنیم.

nano /etc/named.conf

برای اینکه سرور DNS ما بتونه با دنیای خارجی خودش در تماس باشه، باید اجازه بدیم تا درخواست‌های ارسال شده رو روی پورت ۵۳ دریافت کنه. (توی این مرحله حواستون باشه که اگر روی سرورتون firewall نصب کردین، پورت ۵۳ برای ۲ تا پروتکل TCP و UDP باید باز باشن.)

۲ تا متغیر listen-on port 53 و listen-on-v6 port 53 رو به مقدار any تغییر بدین. مشابه نوشته زیر.

listen-on port 53 { any; };
listen-on-v6 port 53 { any; };

و متغیرهای allow-query و allow-transfer و recursion رو هم مشابه زیر تغییر بدین.

allow-query { any; };
allow-transfer { none; };
recursion no;

محتویات نهایی فایل مورد نظر باید مشابه زیر باشه.

options {
   listen-on port 53 { any; };
   listen-on-v6 port 53 { any; };
   directory "/var/named";
   dump-file "/var/named/data/cache_dump.db";
   statistics-file "/var/named/data/named_stats.txt";
   memstatistics-file "/var/named/data/named_mem_stats.txt";
   allow-query { any; };
   allow-transfer { none; };
   recursion no;
   dnssec-enable yes;
   dnssec-validation yes;
   dnssec-lookaside auto;
   /* Path to ISC DLV key */
   bindkeys-file "/etc/named.iscdlv.key";
   managed-keys-directory "/var/named/dynamic";
};
logging {
   channel default_debug {
      file "data/named.run";
      severity dynamic;
   };
};
zone "." IN {
   type hint;
   file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

فایل مورد نظر رو ذخیره کنین و ببندین (Ctrl+x رو بزنین و با وارد کردن Y مشخص کنین که از ذخیره کردن اطمینان دارین.) بعد از اون فایل زیر رو باز کنین تا Zone (یا همون منطقه) رو مشخص کنین.

nano /etc/named.rfc1912.zones

و اطلاعات زیر رو آخر فایل وارد کنین.



zone "alafalaki.ir" IN {
   type master;
   file "/var/named/alafalaki.ir";
};

فایل مورد نظر رو ذخیره کنین و ببندین.

قدم سوم:

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

nano /var/named/alafalaki.ir

و تنظیمات زیر رو با توجه به IP سرور و نام دامنه خریداری شده خود، تکمیل نمایید.

; BIND data file for alafalaki.ir
;
$TTL 3h
@ IN SOA ns1.alafalaki.ir. email.alafalaki.ir. (
         1 ; Serial
         3h ; Refresh after 3 hours
         1h ; Retry after 1 hour
         1w ; Expire after 1 week
         1h ) ; Negative caching TTL of 1 day
;
@    IN    NS    ns1.alafalaki.ir.
@    IN    NS    ns2.alafalaki.ir.



alafalaki.ir.    IN    MX    10    mail.alafalaki.ir.
alafalaki.ir.    IN    A    162.215.89.33
ns1    IN    A    162.215.89.33
ns2    IN    A    162.215.89.33
www    IN    CNAME alafalaki.ir.
mail    IN    A    162.215.89.33
ftp    IN    CNAME alafalaki.ir.

فایل مورد نظر رو ذخیره کرده و ببندین.

در مرحله آخر ابتدا کد زیر را وارد کنید تا مطمئن بشین که تنظیمات وارد شده خطایی ندارن.

named-checkconf

و در آخر با استفاده از کد زیر سرور DNS رو فعال کنید.

systemctl enable named
systemctl start named

قدم آخر:

دستور زیر را وارد کنین.

dig @162.215.89.33 alafalaki.ir

اگر خروجی‌ای شبیه زیر گرفتین، یعنی مسیر رو درست رفتین و همه چیز درست تنظیم شده.

; &<<>> DiG 9.9.5-3-Ubuntu <<>> @162.215.89.33 alafalaki.ir
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<-  opcode: QUERY, status: NOERROR, id: 21829
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;alafalaki.ir.INA

;; ANSWER SECTION:
alafalaki.ir.10800INA162.215.89.33

;; AUTHORITY SECTION:
alafalaki.ir.10800INNSns1.alafalaki.ir.
alafalaki.ir.10800INNSns2.alafalaki.ir.

;; ADDITIONAL SECTION:
ns1.alafalaki.ir.10800INA162.215.89.33
ns2.alafalaki.ir.10800INA162.215.89.33

;; Query time: 0 msec
;; SERVER: 162.215.89.33#53(162.215.89.33)
;; WHEN: Wed Dec 31 17:13:07 EST 2014
;; MSG SIZE rcvd: 125

اگر با وارد کردن آدرس سایت، صفحه مورد نظر باز نشد، چند ساعتی صبر کنین تا کش به روز رسانی بشه و دوباره تلاش کنین.

یه سری از مثال‌های این آموزش برگرفته شده از مطلب «راهنمای نصب DNS Server بوسیله bind برروی ubuntu» توسط رضا شیخله هست.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *