نصب bind dns server روی سرور centos
برای نصب کردن bind dns server و راه اندازی dns server در لینوکس دستور زیر را وارد میکنیم:
۱ |
yum -y install bind bind-utils |
کانفیگ اولیه DNS
کانفیگ اصلی bind در فایل /etc/named.conf قرار دارد. با ادیتور مد نظر خود، فایل را باز کنید.
۱ |
nano /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 را باز میکنیم:
۱ |
nano /etc/named.conf |
برای forward zone خطوط زیر را به فایل اضافه کنید:
۱ ۲ ۳ ۴ ۵ |
zone "dolathost.com" IN { type master; file "/var/named/forward.dolathost.com"; allow-update { none; }; }; |
برای reverse zone نیز خطوط زیر را در فایل، قرار دهید:
۱ ۲ ۳ ۴ ۵ |
zone "۰.۱۶۸.۱۹۲.in-addr.arpa" IN { type master; file "/var/named/reverse.dolathost.com"; allow-update { none; }; }; |
و نهایتا فایل را ذخیره میکنیم.
ساختن zone file
به صورت پیش فرض فایل مربوط به zone ها در مسیر /var/named قرار دارند. برای ساخت forward lookup zone یک فایل به نام forward.dolathost.com در مسیر یاد شده ایجاد میکنیم:
۱ |
nano /var/named/forward.dolathost.com |
و سپس محتوای زیر را در آن، قرار میدهیم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ |
; ; BIND data file for the local loopback interface ; $TTL ۳۰۰ @ IN SOA dolathost.com. hostmaster.dolathost.com. ( ۲ ; Serial 5M ; Refresh 5M ; Retry 5M ; Expire 1D ) ; Negative Cache TTL ; Define the default name server to ns1.dolathost.com @ IN NS ns1.dolathost.com. @ IN NS ns2.dolathost.com. ; Resolve ns1 to server IP address ; A record for the main DNS ns1 IN A ۱۷۲.۰.۰.۱ ns2 IN A ۱۷۲.۰.۰.۱ ; Define MX record for mail dolathost.com. IN MX ۱۰ mail.dolathost.com. ; Other domains for atadomain.io ; Create subdomain www - mail - vault www IN A ۱۷۲.۰.۰.۱ mail IN A ۱۷۲.۰.۰.۱ |
- نکته: هر بار که فایل را آپدیت کردید، مقدار serial را تغییر دهید. به عنوان مثال از ۵ به ۶
- پارامتر Minimum (default) TTL قبلا واسه تعیین Minumum TTL استفاده می شد این پارامتر برای Negative Caching استفاده می شه. مقداری که برای این پارامتر در نظر گرفته می شه برای زمانی هست که دامین مقدار TTL رو مشخص نکند. این پارامتر خیلی وقته منسوخ شده و دیگه ازش استفاده نمی شود. پارامتر TTL for this record تعداد ثانیه هایی هست که Domain name بصورت لوکال Cache می شه قبل از اینکه منقضی بشه و برگرده به Authoritative nameserver ها برای آپدیت شدن اطلاعات
برای reverse zone نیز یک فایل به نام reverse.dolathost.com ایجاد میکنیم:
۱ |
nano /var/named/reverse.dolathost.com |
و خطوط زیر را در آن قرار میدهیم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ |
; ; BIND reverse data file for the local loopback interface ; $TTL ۳۰۰ @ IN SOA dolathost.com. hostmaster.dolathost.com. ( ۱ ; Serial 5M ; Refresh 5M ; Retry 5M ; Expire 1D ) ; Negative Cache TTL ; Name Server Info for ns1.atadomain.io @ IN NS ns1.dolathost.com. @ IN NS ns2.dolathost.com. ; Reverse DNS or PTR Record for ns1.atadomain.io ; Using the last number of DNS Server IP address: ۱۷۲.۱۶.۱.۱۰ ۱۰ IN PTR ns1.dolathost.com. ۱۰ IN PTR ns2.dolathost.com. ; Reverse DNS or PTR Record for mail.atadomain.io ; Using the last block IP address ۱۰۰ IN PTR dolathost.com. ۱۵۰ IN PTR mail.dolathost.com. |
راهنمایی برای تنظیم TTL DNS
در دو فایل بالا اگر دقت کرده باشید یک زمان مشخص شده است، نکته ای که وجود دارد این است که اگر قصد انتقال دارید زمان TTL را مثلا روی ۳۰۰ ثانیه که 5M می شود قرار دهید، سایر زمان ها را هم بعد از پاسخ دهی دامنه بهتر است روی موارد زیر قرار دهید:
Refresh | 4H |
Retry | 2H |
Expire | 336H |
TTL | 12H |
نکته: زمان را هم می توانید به ثانیه وارد کنید و هم با نماد H ساعت و M دقیقه (نماد چسبیده به عدد بدون فاصله) اگر به ثانیه می خواهید وارد کنید از سایت ttl-calc می توانید بفهمید هر TTL ثانیه چند ساعت و دقیقه می شود. مثلا ۱۴۴۰۰ که بسیار پرکاربرد است یک TTL چهار ساعته است.
توصیه ما این است که مقدار زمان پارامتر Refresh همیشه کمتر یا برابر با نصف مقدار پارامتر TTL در رکوردهای SOA باشد، هرچند که توجه داشته باشید این مقدار همیشه باید طولانی تر پارامتر Retry باشد. هرچند که توصیه ما این است که پارامتر Retry نصف مقدار پارامتر Refresh باشد.
تست زون های ساخته شده
پس از ایجاد زون بهتر است اول تست کنیم ببینیم خطا دارند چون ممکن هست جایی نقطه اضافی چیزی گذاشته باشیم!
۱ |
sudo named-checkzone dolathost.com /var/named/forward.dolathost.com |
۱ |
sudo named-checkzone dolathost.com /var/named/reverse.dolathost.com |
ریستارت و راه اندازی سرویس Bind
پس از اینکه زون فایلها ایجاد شدند، سرویس bind را برای اعمال تغییران یکبار ری استارت میکنیم.
۱ |
systemctl restart named |
و آن را برای راهاندازی، در زمان بالا آمدن سیستم عامل فعال میکنیم.
۱ |
systemctl enable named |
تنظیمات bind dns server در firewall
با دستور زیر پورت ۵۳ یا سرویس dns را در فایروال باز میکنیم:
۱ |
firewall-cmd –permanent –zone=public --add-port=۵۳/udp |
یا
۱ |
firewall-cmd –permanent –zone=public --add-service=dns |
و سپس سرویس را reload میکنیم.
۱ |
firewall-cmd --reload |
وریفای کردن دی ان اس
به مسیر زیر بروید و آی پی نیم سرور را اضافه کنید:
۱ |
nano /etc/resolv.conf |
۱ |
DNS1=Your IP Server |
سرویس مربوطه را ریسیت کنید:
۱ |
systemctl restart NetworkManager |
با دستور دیگ خروجی دی ان اس را بررسی کنید.
۱ |
dig dolathost.com |
اگر همه چیز درست باشد باید خروجی همچین چیزی نمایش داده شود:
;; ANSWER SECTION:
www.dolathost.com. 86400 IN A Your IP Server
اشکال زدایی کردن bind
گاهی پیش می آید که خطایی وجود دارد و سرویس بیند ران نمی شود و خطا دارد بهترین توصیه من این هست که یکبار حذف و مجدد نصب کنید.
حذف Bind
۱ |
sudo yum remove bind |
نصب مجدد bind
۱ |
yum -y install bind bind-utils |