نام BIND مخفف عبارت Berekley Internet Name Domain می باشد. ما در این آموزش قصد نداریم مفاهیم ابتدایی سرور دی ان اس را توضیح دهیم اما در یک جمله باید بگوئیم که کار سرور DNS شناساندن نام دامنه بعنوان مثال example.com به آدرس آی پی ست و در صورت فقدان چنین سرویسی شما باید هر آدرس اینترنتی را بدون نام و با وارد کردن آدرس آی پی فرا بخوانید.
ما در این آموزش قصد داریم به شما بگوئیم که چگونه در سرورهای اوبونتو و دبین بتوانید سرویس BIND را نصب و برای استفاده کانفیگ و همچنین با ابزارهایی مانند dig تست بفرمائید.
آموزش نصب BIND 9
از آنجایی که این سرویس در مخازن رسمی سرورهای لینوکسی یافت میشود به راحتی و با یک دستور قابل نصب است. در ابتدا مانند همیشه ماشین خود را به روز کرده و سپس سرویس BIND را نصب نمائید:
1 2 |
root@arshatech:~# apt update root@arshatech:~# apt install bind9 dnsutils |
بعد از نصب نسخه آن را بررسی میکنیم:
1 |
root@arshatech:~# named -v |
1 |
BIND 9.11.3-1ubuntu1.5-Ubuntu (Extended Support Version) <id:a375815> |
کانفیگ BIND 9
در مرحله بعد به سراغ تنظیمات این سرویس میرویم. تمام کانفیگ های مورد نظر در دو دایرکتوری زیر قابل پیاده سازی می باشد:
- etc/bind/
- var/cache/bind/
همچنین بد نیست بدانید که فایل هایی که کانفیگ BIND در آن انجام میشود عبارت است از:
- named.conf
- named.conf-default-zones
- named.conf.local
- named.conf.options
همچنین در صورت نیاز به ایجاد یک zone شما میتوانید آن را در مسیر زیر تعریف بفرمائید:
- var/cache/bind/
هر zone یا ناحیه اطلاعات مربوط به یک دامنه یا ساب دامنه را در خود جای میدهد و یک فایل متنی ساده می باشد.
به طور مثال و خیلی ساده اگر بخواهیم عنوان کنیم هر دامنه به نام example.com در یک فایل ساده تحت عنوان db.example.com و در دایرکتوری مشخص var/cache/bind/ ساخته میشود.
حال در ادامه ما میخواهیم یک zone برای دامنه خود ایجاد کنیم. برای این کار ابتدا به دایرکتوری مربوطه بروید:
1 |
root@arshatech:~# cd /var/cache/bind |
سپس با یک ویرایشگر متن فایل مورد نظر را می سازیم:
1 |
root@arshatech:/var/cache/bind# vim db.example.com |
و محتویات آن را به صورت زیر تعریف میکنیم. شما باید محتویات فایل های خود را با توجه به نام دامنه و آدرس آی پی به صورت اختصاصی تغییر دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns1.example.com. root.example.com. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL @ IN A 192.168.100.10 @ IN NS ns1.example.com. ns1 IN A 192.168.100.10 @ IN NS ns2.example.com. ns2 IN A 192.168.100.10 @ IN MX 10 mail mail IN A 192.168.100.10 www IN A 192.168.100.10 |
حال برای اطمینان حاصل کردن از اینکه خطایی در فایل zone وجود نداشته باشد دستور زیر را اجرا میکنیم:
1 |
root@arshatech:/var/cache/bind# named-checkzone example.com db.example.com |
1 2 |
zone example.com/IN: loaded serial 1 OK |
توجه داشته باشید که example.com نام دامنه و db.example.com نام zone دامنه مورد نظر می باشد.
در ادامه فایل زیر را ویرایش میکنیم:
1 |
root@arshatech:~# vim /etc/bind/named.conf.local |
و عبارات زیر را به ابتدای آن اضافه میکنیم:
1 2 3 4 |
zone "example.com" { type master; file "db.example.com"; }; |
سپس سرویس BIND 9 را ری استارت میکنیم:
1 |
root@arshatech:~# systemctl restart bind9 |
بررسی صحت تنظیمات BIND با دستور dig
دستور dig یک دستور بسیار پرکاربرد برای شناسایی رکوردهای DNS می باشد که ما میخواهیم با استفاده از آن رکوردهای تعریف شده در سرور را بررسی کنیم:
1 |
root@arshatech:~# dig @192.168.100.10 example.com any |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
; <<>> DiG 9.11.3-1ubuntu1.5-Ubuntu <<>> @192.168.100.10 example.com any ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38598 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 4 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 264c1546b04cf954052066185c954ccf952004c13d12541a (good) ;; QUESTION SECTION: ;example.com. IN ANY ;; ANSWER SECTION: example.com. 604800 IN SOA ns1.example.com. root.example.com. 1 604800 86400 2419200 604800 example.com. 604800 IN A 192.168.100.10 example.com. 604800 IN NS ns1.example.com. example.com. 604800 IN NS ns2.example.com. example.com. 604800 IN MX 10 mail.example.com. ;; ADDITIONAL SECTION: ns1.example.com. 604800 IN A 192.168.100.10 ns2.example.com. 604800 IN A 192.168.100.10 mail.example.com. 604800 IN A 192.168.100.10 ;; Query time: 0 msec ;; SERVER: 192.168.100.10#53(192.168.100.10) ;; WHEN: Fri Mar 22 21:59:59 CET 2019 ;; MSG SIZE rcvd: 229 |
همچنین با استفاده از دستور زیر میتوانید با استفاده از سرور DNS ای که راه اندازی کرده اید دامنه مورد نظر خود را به اصطلاح ریزالو نمائید:
1 |
root@arshatech:~# dig @192.168.100.10 www.example.com any +noall +answer |
1 2 3 4 |
; <<>> DiG 9.11.3-1ubuntu1.5-Ubuntu <<>> @192.168.100.10 www.example.com any +noall +answer ; (1 server found) ;; global options: +cmd www.example.com. 604800 IN A 192.168.100.10 |
تنظیم Primary DNS
ما در این بخش میخواهیم به شما بگوئیم که چگونه از DNS سرور خود به عنوان Primary DNS با استفاده از systemd-resolve استفاده نمائید. برای انجام تنظیمات لازم ابتدا در با یک ویرایگر متن فایل زیر را باز بفرمائید:
1 |
root@arshatech:~# vim /etc/systemd/resolved.conf |
و در محتویات آن مانند زیر آدرس آی پی سرور را وارد کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See resolved.conf(5) for details [Resolve] DNS=192.168.100.10 #FallbackDNS= #Domains= #LLMNR=no #MulticastDNS=no #DNSSEC=no #Cache=yes #DNSStubListener=yes |
و سپس سرور را ریبوت نمائید:
1 |
root@arshatech:~# reboot |
بعد از بوت سرور مجددا لاگین کرده و با دستور زیر وضعیت سرویس را مورد بررسی قرار دهید:
1 |
root@arshatech:~# systemd-resolve --status |
خروجی مورد انتظار دستور فوق باید به شما آدرس آی پی سرور را بعنوان دی ان اس سرور نمایش دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Global DNS Servers: 192.168.100.10 DNSSEC NTA: 10.in-addr.arpa 16.172.in-addr.arpa 168.192.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa 23.172.in-addr.arpa 24.172.in-addr.arpa 25.172.in-addr.arpa 26.172.in-addr.arpa 27.172.in-addr.arpa 28.172.in-addr.arpa 29.172.in-addr.arpa 30.172.in-addr.arpa 31.172.in-addr.arpa corp d.f.ip6.arpa home internal intranet lan local private test Link 2 (eth0) |
نکته: چنانچه در صورت اجرای دستور با خطای زیر مواجه شدید:
1 |
Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found. |
می بایست دستورات زیر را در ترمینال وارد کنید و مجددا دستور مورد نظر را امتحان فرمائید:
1 2 |
root@arshatech:~# ln -sf /lib/systemd/system/systemd-resolved.service /etc/systemd/system/dbus-org.freedesktop.resolve1.service root@arshatech:~# systemctl restart systemd-resolved.service |
حال دستور dig را بدون اعلام اینکه از چه دی ان اس سروری دامنه مورد نظر را ریزالو کند اجرا کرده و مشاهده میکنیم که به صورت پیش فرض از دی ان اس سرور خود سرور استفاده خواهد کرد:
1 |
root@arshatech:~# dig +noall +answer example.com any |
1 |
example.com. 0 IN A 192.168.100.10 |
حال میتوانید آدرس مورد نظر را پینگ کنید:
1 |
root@arshatech:~# ping example.com |
1 2 3 4 |
PING example.com (192.168.100.10) 56(84) bytes of data. 64 bytes from example.com (192.168.100.10): icmp_seq=1 ttl=64 time=0.041 ms 64 bytes from example.com (192.168.100.10): icmp_seq=2 ttl=64 time=0.061 ms 64 bytes from example.com (192.168.100.10): icmp_seq=3 ttl=64 time=0.073 ms |
همه چیز تمام است و حال با وارد کردن آدرس دامنه در مرورگر شما شاهد باز شدن وب سایت مورد نظر خود خواهید بود.
10 دیدگاه
نیما
سلام دوست عزیز
خسته نباشید
من طبق دستورات شما کارها رو انجام دادم (آموزش نصب و کانفیگ bind 9 در اوبونتو و دبین) ولی ارور ۵۰۲ Bad Gateway میده؟ اگه راهنمایی کنیدمتشکر می شم
ادمین
سلام و احترام
حتما بخشی از آموزش را اشتباه و یا از قلم انداخته اید. باید دسترسی به سرور را فراهم نمائید تا بررسی شود.
در صورت نیاز در ناحیه کاربری ثبت نام و در قالب تیکت دسترسی را ارسال کنید.
امیر
سلام
تمام مراحل رو انجام دادم حتی ping هم درست کار میکند
اما در مرورگر که تست میکنم جیزی نشان داده نمیشود
و پیغام :
This site can’t be reached
xxxxxx.ir’s server IP address could not be found.
DNS_PROBE_FINISHED_NXDOMAIN
نشان داده میشود .
ادمین
سلام و عرض ادب
پخش شدن نام سرورها ممکن است تا ۲۴ ساعت به طول بینجامد.
رضا جعفری
سلام
بعد از مدتی چنین خطایی میده:
zone xxxx.xxxx/IN: loading from master file db.xxxx.xxxx failed: unexpected end of input
zone xxxx.xxxx/IN: not loaded due to errors.
موارد هم سه بار چک کردم در زمان های مختلف. درست هستند.
ادمین
سلام
از متن ارور شما مشخص است که فایل کانفیگ شما دچار اشکال است. با دقت بیشتری بررسی بفرمایید.
علی
عالی بود. خیلی به دردم خورد. ممنونم
ادمین
سلام
موفق باشید.
محمد
سلام
بعد از dig کردن به من اروره connection refused. میده 😐 تمام مراحل رو چندبار دیگه رفتم
ادمین
سلام
ممکن است به هر علتی از سمت شما یا مقصد مشکلی وجود داشته باشد. در نهایت پینگ را بررسی کنید و رکوردها را نیز از طریق سایت های آنلاین بررسی کنید.