سرویس (DNS (Domain Name System معمولا سختترین کامپوننت در زمان فراگیری پروسه راه اندازی وبسایتها و سرورها است. اکثر افراد ترجیح میدهند از DNS server ارائه شده توسط شرکت هاستینگ یا ریجیسترار دامین استفاده کنند. اما در این بین افرادی نیز هستند که از DNS server شخصی خود استفاده میکنند. برای این منظور باید نحوه راه اندازی و نصب Bind DNS Server (نصب دی ان اس بایند) را بدانید. از این رو در ادامه مقاله bind چیست و نحوه راهاندازی و کانفیگ یک authoritative-only DNS server در یک سرور centos 7 با استفاده از bind dns server توضیح خواهیم داد.
bind چیست ؟
در پاسخ به بایند چیست بایستی گفت به عنوان یک سرویس DNS در لینوکس است و از پرطرفدارترین Domain name service ها است.
bind مخفف چیست؟ بایند مخفف عبارت The Berkeley Internet Name Domain می باشد.
حال که با این مفهوم بایند آشنا شدید در امتداد مقاله به بررسی نحوه نصب Bind و تنظیمات آن می پردازیم.
ایجاد محیط تست برای نصب bind dns server:
Domain: iranhost.com IP: 192.168.0.1 OS: centos 7
** لطفا مد نظر داشته باشید که این مقادیر تنها برای محیط تست dns است و برای اعمال در سرور خود حتما آنها را به مقادیر مورد نیاز خود، تغییر دهید به شما پیشنهاد می کنیم برای کسب اطلاعات در حوزه دی ان اس چیست مقاله ما را مطالعه نمایید.
Authoritative-only DNS server چیست؟
قبل از راه اندازی dns server ابتدا نیاز است با ماهیت Authoritative-only DNS server، آشنا شوید. در سناریوهای لوکالی معمولا از forward و caching برای DNS سرورها استفاده میشود. این نوع کانفیگ با توجه به ترافیک بالایی که ایجاد میکند برای راهاندازی DNS سرور یک وبسایت مناسب نیست. در این شرایط از Authoritative-only DNS server استفاده میشود. این نوع کانفیگ به شکلی است که DNS server را تنها موظف به پاسخگویی به درخواستهایی میکند که zone آن دامین ها را در اختیار دارد. در این مورد خاص، DNS شما تنها به درخواستهایی پاسخ میدهد که برای وبسایت شما آمده باشند. به این شکل هیچ بار اضافهای به سرور وارد نمیشود و به بهترین شکل ممکن پاسخگوی query های DNS مرتبط با وبسایت شما، خواهد بود.
dns گوگل چیست؟ روش تغییر dns گوگل در ویندوز را در مقالات دیگر ایران هاست بخوانید.
نصب bind dns server
برای نصب کردن bind dns server و راه اندازی 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. ( 5 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; 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. ( 5 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; 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
تنظیمات bind dns server در 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 برای تست کارکرد آن استفاده کنید. امیدواریم با خواندن این مقاله با مفهوم bind چیست و نحوه نصب و تنظیمات Bind DNS Server در لینوکس را آموخته باشید.
برای اشنایی بیشتر با تنظیمات سرور می توانید مقاله انواع سرور را بخوانید.