سرور مجازی (VPS)

آموزش نصب و تنظیمات Bind DNS Server در لینوکس

سرویس (DNS (Domain Name System معمولا سخت‌ترین کامپوننت در زمان فراگیری پروسه راه اندازی وبسایت‌ها و سرور‌ها است. اکثر افراد ترجیح می‌دهند از DNS server ارائه شده توسط شرکت هاستینگ یا ریجیسترار دامین استفاده کنند. اما در این بین افرادی نیز هستند که از DNS server شخصی خود استفاده می‌کنند. برای این منظور باید نحوه راه اندازی و نصب Bind DNS Server را بدانید. از این رو در ادامه مقاله نحوه راه‌اندازی و کانفیگ یک authoritative-only DNS server در یک سرور centos 7 با استفاده از bind dns server را توضیح خواهیم داد.

محیط تست:

Domain: iranhost.com

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

همین امروز سفارش دهید

IP: 192.168.0.1

OS: centos 7

** لطفا مد نظر داشته باشید که این مقادیر تنها برای محیط تست است و برای اعمال در سرور خود حتما آن‌ها را به مقادیر مورد نیاز خود، تغییر دهید.

Authoritative-only DNS server چیست؟

قبل از راه اندازی ابتدا نیاز است با ماهیت Authoritative-only DNS server، آشنا شوید. در سناریو‌های لوکالی معمولا از forward و caching برای DNS سرورها استفاده می‌شود. این نوع کانفیگ با توجه به ترافیک بالایی که ایجاد می‌کند برای راه‌اندازی DNS سرور یک وبسایت مناسب نیست. در این شرایط از Authoritative-only DNS server استفاده می‌شود. این نوع کانفیگ به شکلی است که DNS server را تنها موظف به پاسخگویی به درخواست‌هایی می‌کند که zone آن دامین ها را در اختیار دارد. در این مورد خاص، DNS شما تنها به درخواست‌هایی پاسخ می‌دهد که برای وبسایت شما آمده باشند. به این شکل هیچ بار اضافه‌ای به سرور وارد نمی‌شود و به بهترین شکل ممکن پاسخگوی query های DNS مرتبط با وبسایت شما، خواهد بود.

نصب bind

برای نصب کردن bind dns server دستور زیر را وارد می‌کنیم

 

yum -y install bind bind-utils

کانفیگ اولیه DNS

کانفیگ اصلی bind در فایل /etc/named.conf قرار دارد. با ادیتور مد نظر خود، فایل را باز کنید.

vi /etc/named.conf

از آنجا که سرور ما پاسخگوی درخواست‌های مربوط به یک وبسایت است، باید بتواند از تمامی ipها درخواست را دریافت کرده و پاسخ دهد. پس با کامنت کردن خطوط مربوط به listening این مورد را فراهم می‌کنیم:

// listen-on port 53 { 127.0.0.1; };

// listen-on-v6 port 53 { ::1; };

همچنین allow-query را روی any ست می‌کنیم:

allow-query { any; };

 

یکی از نکات مهم در مورد AUTHORITATIVE DNS server ها این است که قابلیت recursion باید در آن ها غیرفعال شود. در صورت فعال بودن این قابلیت، DNS server خود را موظف به یافتن پاسخ برای تمامی درخواست‌ها می‌داند، حتی اگر zone مربوطه در آن وجود نداشته باشد. در صورت فعال بودن بار کاری نا خواسته‌ای به سرور تحمیل کرده، و می‌تواند هدفی برای مهاجمین نیز باشد. پس این تنظیم را انجام می‌دهیم:

recursion no;

و نهایتا تغییرات را ذخیره می‌کنیم.

ساخت zone

مجدد فایل /etc/named.conf را باز می‌کنیم:

vi /etc/named.conf

برای forward zone خطوط زیر را به فایل اضافه کنید:

zone "iranhost.com" IN {

type master;

file "fwd.iranhost.com.db";

allow-update { none; };

};

برای reverse zone نیز خطوط زیر را در فایل، قرار دهید:

zone "0.168.192.in-addr.arpa" IN {

type master;

file "/var/named/192.168.0.db";

allow-update { none; };

};

و نهایتا فایل را ذخیره می‌کنیم.

ساختن zone file

به صورت پیش فرض فایل مربوط به zoneها در مسیر /var/named قرار دارند. برای ساخت forward lookup zone یک فایل به نام fwd.iranhost.com.db در مسیر یاد شده ایجاد می‌کنیم:

Vi /var/named/fwd.iranhost.com.db

و سپس محتوای زیر را در آن، قرار می‌دهیم:

@       IN      SOA     ns1.iranhost.com. info.iranhost.com. (

۵         ; Serial

۶۰۴۸۰۰     ; Refresh

۸۶۴۰۰     ; Retry

۲۴۱۹۲۰۰     ; Expire

۶۰۴۸۰۰ )   ; Negative Cache TTL

; name servers - NS records

iranhost.com.    IN      NS      ns1.iranhost.com.

iranhost.com.    IN      NS      ns2.iranhost.com.

; name servers - A records

ns1         IN      A       ۱۹۲.۱۶۸.۰.۱

ns2          IN      A       ۱۹۲.۱۶۸.۰.۱

; Other A records

@               IN      A       ۱۹۲.۱۶۸.۰.۱

www             IN      A       ۱۹۲.۱۶۸.۰.۱

mail             IN      A       ۱۹۲.۱۶۸.۰.۱

  • نکته: هر بار که فایل را آپدیت کردید، مقدار serial را تغییر دهید. به عنوان مثال از ۵ به ۶.

برای reverse zone نیز یک فایل به نام ۱۹۲.۱۶۸.۰.db ایجاد می‌کنیم:

 

vi /var/named/192.168.0.db

و خطوط زیر را در آن قرار می‌دهیم:

$TTL    ۶۰۴۸۰۰

@       IN      SOA     iranhost.com. info.iranhost.com. (

۵         ; Serial

۶۰۴۸۰۰         ; Refresh

۸۶۴۰۰         ; Retry

۲۴۱۹۲۰۰         ; Expire

۶۰۴۸۰۰ )       ; Negative Cache TTL

;

; Name servers

IN      NS      ns1.iranhost.com.

IN      NS      ns2.iranhost.com.

; PTR records

۱       IN      PTR      ns1.iranhost.com.

۲       IN      PTR      ns2.iranhost.com.

۳       IN      PTR      mail.iranhost.com.

پس از اینکه زون فایل‌ها ایجاد شدند، سرویس bind را ری استارت می‌کنیم.

systemctl restart named

و آن را برای راه‌اندازی، در زمان بالا آمدن سیستم عامل فعال می‌کنیم.

systemctl enable named

تنظیمات firewall

با دستور زیر پورت ۵۳ یا سرویس dns را در فایروال باز می‌کنیم:

 

firewall-cmd –permanent –zone=public --add-port=53/udp

یا

firewall-cmd –permanent –zone=public --add-service=dns

و سپس سرویس را reload می‌کنیم

firewall-cmd --reload

 

  • توضیحات برای firewalld داده شده است. در صورتیکه از سرویس دیگری استفاده می‌کنید، بر اساس همان عمل کنید.

هم اکنون DNS server ما آماده است و برای اطمینان از کارکرد، می‌توانید از دستورات dig و nslookup برای تست کارکرد آن استفاده کنید.

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

همین حالا رایگان عضو شوید
برچسب ها

سیاوش غلامی

مدیر سرور ایران هاست - کارشناس ICT

نوشته های مشابه

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

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

دکمه بازگشت به بالا
بستن
بستن