همه کاربران لینوکس با سرویس بایند آشنا هستند، از آنجایی که مقالات زیادی با ورژن های اخیر اوبونتو/دبیان در این زمینه منتشر شده اند و شما میتوانید تمامی آنها را مطالعه کنید. Bind یک سرویس DNS است که یک نام unique را به ip آدرس شما اختصاص میدهد که این نام در حقیقت domain name نامیده میشود، به طوریکه باعث میشود عملیات resolve کردن ip آدرس روی بستر اینترنت یا حتی روی یک شبکه local (شبکه LAN) آسان شود. یک شبکه میتواند تنها یک domain name مخصوص به خود داشته باشد. زمانیکه domain name به ip آدرسش resolve میشود، این عملیات با عنوان forward zone شناسایی میشود و هنگامیکه یک ip آدرس به نامش مراجعه میکند با عنوان revers zone شناخته میشود. تنها هدف اصلی DNS شاید آسان کردن درخواست های شبکه ای مان باشد، منظورمان این است که به خاطر سپردن یک نام که در حقیقت همه یک وب سایت با آن شناسایی میشود بسیار آسان است، به خاطر داشتن لیست بی نهایتی از اعداد (ip address ها) باعث آشفتگی بزرگی در ذهن انسان میشود و به خاطر سپرده نخواهد شد اما همیشه به خاطر اوردن نام بسیار آسان است و این دلیلی است بر اینکه ما به ip آدرس روی هر شبکه نام اختصاص میدهیم.
همچنین توصیه میشود مطالعه کنید.
معرفی انواع DNS Record (یا A - MX - PTR - SOA - SPF - NS - TXT - DKIM - CNAME)
نحوه تعریف رکورد DKIM در سرور بایند (DNS Bind Server)
نحوه نصب DNS سرور روی Ubuntu Server و Debian
پیشنیاز :
قبل از هر کاری یک Ubuntu Server یا Debian جدید دانلود و آنرا به صورت bootable روی یک دیوایس کپی و سپس نسخه Desktop/Server به انتخاب خود نصب کنید.
سیستم را update کنید.
آدرس ip خود را چک کنید.
پکیج های پیشنیاز را نصب کنید.
به دایرکتوری نصب رفته آنرا را مشاهده کنید.
دایرکتوری شبیه به زیر خواهد بود.
در ابتدا caching مربوط به name server را ایجاد میکنیم. فایل /etc/bind/named.conf.options را باز کنید، قسمت forwards را پیدا کنید و آدرس DNS مربوط به ISP خود را در آن قرار دهید.
اکنون google.com را resolve میکنیم. شما میتوانید تفاوتی را که تغییر بالا ایجاد میکند در سرور مشاهده کنید و به مدت زمان کوئری در اولین تلاش توجه کنید.
خروجی باید شبیه به زیر باشد.
بار دیگر دستور dig را تکرار میکنیم و تفاوت را در خروجی مشاهده میکنیم.
زمان Qurey اینار 76 میباشد (البته من چون در محیط مجازی این کار را دارم انجام میدهم مقدار کش خیلی پایین نرفت ولی اگر شما از isp های خارجی یا داخلی خوب استفاده کنید مقدار کش تا عدد صفر هم کاهش میبابد). شما میتوانید مشاهده کنید که عملیات cashe در سرویس bind چقدر سریع DNS سرور را resolve میکند.
اکنون سرور mster بایند را کانفیگ میکنیم. در ابتدا یکسری تنظیمات در فایل /etc/resolve.conf ایجاد کنید. فایل را باز کنید
و در آن همانند زیر تایپ نمایید.
domain name و ip address خود را با توجه به آنچه که در بالا به آن اشاره جایگزین نمایید.
به دایرکتوری /etc/bind وارد شوید.
فایل named.conf.local را باز کنید.
فایل کانفیگ ما باید چیزی شبیه به زیر باشد.
اکنون نام zone ما linuxzone.ir میباشد که DNS Name ما نیز خواهد بود. از آنجایی که سرور ما master است ما تایپ سرور را با عنوان master تعریف میکنیم. فایل تنظیمات دامین ما db.linuxzone.ir خواهد بود. شبیه به آنچه در بالا انجام دادیم برای revers lookup ما باید فایل ip-addr.arpa برای ip آدرس مان تعریف کنیم، سه رقم اول ip آدرس را به صورت برعکس و قبل از .in-arddr.arpa. تایپ میکنیم. فایل مربوط به reverse zone فایل db.192 خواهد بود. مطمئن شوید که فایل های کانفیگ zone خود را در مکان درستی قرار دادید.
تنظیمات Forward Zone
فایل نمونه db.local را درون db.linuxzone.ir کپی کنید.
فایل db.linuxzone.ir را باز و ویرایش کنید.
فایل را کانفیگ کنید.
www.linuxzone.ir نام domain ی است که میخواهیم resolve شود، مطمئن شوید که بعد از تعریف هر domain name یک نقطه (dot) قرار دهید. admin.linuxzone.ir. در حقیقت email id برای این domain است. NS در حقیقت Name Server این دامین است. یک A رکورد برای هاست خود مانند www قرار دهید.
در اینجا بررسی میکنیم که آیا تنظیمات به درستی کار میکنند یا خیر.
در این مرحله همه چیز خوب به نظر میرسد. فایل را ذخیره و از آن خارج شوید، سپس سرویس بایند را restart کنید.
نحوه Resolve کردن DNS Name
دستور dig را همانند زیر اجرا کنید.
همانطور که از عکس بالا مشاهده میکنید در قسمت ANSWER به آدرس ip و دامنه ما اشاره میکند. در نتیجه به تنظیم reverse zone خواهیم پرداخت.
فایل نمونه db.127 را درون db.192 کپی کنید و سپس آنرا ویرایش کنید.
فایل را ویرایش کنید.
فایل اکثرا کپی از فایل forward zone میباشد، به جز PTR یا pointer record که ما در فایل reverse zone به آن اشاره میکنیم. عدد 250 آخرین رقم ip آدرس مان میباشد، فایل را ذخیره و از آن خارج میشویم.
ابتدا status سرور بایند را بررسی کرده و در صورتی که error ی وجود نداشت آنرا restart کنید.
ip آدرس dns سرور تان را nslookup کنید.
نمونه خروجی :
همانطور که میبینید همه چیز به درستی کار میکند.
همچنین توصیه میشود مطالعه کنید.
معرفی انواع DNS Record (یا A - MX - PTR - SOA - SPF - NS - TXT - DKIM - CNAME)
نحوه تعریف رکورد DKIM در سرور بایند (DNS Bind Server)
نحوه نصب DNS سرور روی Ubuntu Server و Debian
پیشنیاز :
- یک عدد domain name با نام : www.linuxzone.ir
- یک عدد آدرس ip مانند : 192.168.12.250
- فایل تنظیمات forward zone با نام : /etc/bind/db.linuxzone.ir
- فایل تنظیمات reverse zone با نام : /etc/bind/db.192
قبل از هر کاری یک Ubuntu Server یا Debian جدید دانلود و آنرا به صورت bootable روی یک دیوایس کپی و سپس نسخه Desktop/Server به انتخاب خود نصب کنید.
سیستم را update کنید.
کد PHP:
# apt-get update
کد PHP:
# ip a
کد PHP:
# apt-get install bind9 bind9utils
کد PHP:
# cd /etc/bind && ls
در ابتدا caching مربوط به name server را ایجاد میکنیم. فایل /etc/bind/named.conf.options را باز کنید، قسمت forwards را پیدا کنید و آدرس DNS مربوط به ISP خود را در آن قرار دهید.
کد PHP:
forwarders {
8.8.8.8;
};
اکنون google.com را resolve میکنیم. شما میتوانید تفاوتی را که تغییر بالا ایجاد میکند در سرور مشاهده کنید و به مدت زمان کوئری در اولین تلاش توجه کنید.
کد PHP:
# dig google.com
بار دیگر دستور dig را تکرار میکنیم و تفاوت را در خروجی مشاهده میکنیم.
زمان Qurey اینار 76 میباشد (البته من چون در محیط مجازی این کار را دارم انجام میدهم مقدار کش خیلی پایین نرفت ولی اگر شما از isp های خارجی یا داخلی خوب استفاده کنید مقدار کش تا عدد صفر هم کاهش میبابد). شما میتوانید مشاهده کنید که عملیات cashe در سرویس bind چقدر سریع DNS سرور را resolve میکند.
اکنون سرور mster بایند را کانفیگ میکنیم. در ابتدا یکسری تنظیمات در فایل /etc/resolve.conf ایجاد کنید. فایل را باز کنید
کد PHP:
# vim /etc/resolv.conf
کد PHP:
search linuxzone.ir
nameserver 192.168.12.250
به دایرکتوری /etc/bind وارد شوید.
کد PHP:
# cd /etc/bind
کد PHP:
# vim named.conf.local
کد PHP:
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "linuxzone.ir" {
type master;
file "/etc/bind/db.linuxzone.ir";
};
zone "12.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};
تنظیمات Forward Zone
فایل نمونه db.local را درون db.linuxzone.ir کپی کنید.
کد PHP:
# cp db.local db.rajneesh.conf
کد PHP:
# vim /etc/bind/db.linuxzone.ir
کد PHP:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA www.linuxzone.ir. admin.linuxzone.ir. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS www.linuxzone.ir.
@ IN A 192.168.12.250
@ IN AAAA ::1
www IN A 192.168.12.250
در اینجا بررسی میکنیم که آیا تنظیمات به درستی کار میکنند یا خیر.
کد PHP:
# systemctl status bind9
در این مرحله همه چیز خوب به نظر میرسد. فایل را ذخیره و از آن خارج شوید، سپس سرویس بایند را restart کنید.
کد PHP:
# systemctl restart bind9
نحوه Resolve کردن DNS Name
دستور dig را همانند زیر اجرا کنید.
کد PHP:
# dig @127.0.0.1 linuxzone.ir
همانطور که از عکس بالا مشاهده میکنید در قسمت ANSWER به آدرس ip و دامنه ما اشاره میکند. در نتیجه به تنظیم reverse zone خواهیم پرداخت.
فایل نمونه db.127 را درون db.192 کپی کنید و سپس آنرا ویرایش کنید.
کد PHP:
# cp db.127 db.192
کد PHP:
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA www.rajneesh.com. admin.rajneesh.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS www.linuxzone.ir.
250 IN PTR linuxzone.ir.
ابتدا status سرور بایند را بررسی کرده و در صورتی که error ی وجود نداشت آنرا restart کنید.
کد PHP:
# systemctl status bind9
# systemctl restart bind9
کد PHP:
#nslookup 192.168.12.250
کد PHP:
Server: 192.168.12.250
Address: 192.168.12.250#53
250.12.168.192.in-addr.arpa name = linuxzone.ir.