مرحله اول:‌ نصب

برای این منظور به مسیر زیر می‌رویم و BIND را کامپایل و نصب می کنیم.

/usr/ports/dns/bind99
make install clean
نکته:
در منوی کانفیگ گزنیه ی REPLACE_BASE راانتخاب کنید.

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

مرحله دوم: پیکربندی

اولین کاری که برای پیکربندی سرور DNS خودمان باید انجام بدهیم اضافه کردن گزینه WITHOUT_BIND=YES به فایل src.conf است. برای این منظور به ترتیب دستورات زیر را اجرا می کنیم.

echo 'WITHOUT_BIND="YES"' >> /etc/src.conf
هشدار:
با اضافه کردن این گزینه در هنگام کامپایل مجدد FreeBSD از کد منبع دستور make آن را با بیس BIND کامپایل نمی کند.

حالا باید فایل named.conf را برای تنظیم forwarder و zone و … ویرایش کنم. برای این منظور ابتدا فایل را با استفاده از یک ویرایشگر باز می کنیم.

vi /var/named/etc/namedb/named.conf

و سپس در حدود خط ۲۱ عبارت listen-on را از حالت توضیحات خارج می کنیم. با این کار به DNS می گوییم که هم به درخواست های داخلی و هم به در خواست های خارجی پاسخ دهد.

نکته:
برای اینکه listen-on از حالت توضیحات خارج شود باید // را از اول خط حذف کنیم.

در زیر یک نمونه از این حالت آورده شده است:

// listen-on     { 127,0,0,1 };

مجدد در همان فایل به حدود خط ۴۳ تا ۴۷ می‌رویم و بخش forwarders را از حالت توضیح خارج می کنیم.توجه کنید که ما می  توانیم در این قسمت از آدرس ۱۲۷٫۰٫۰٫۱ و همچنین آدرس IP مربوط به DNS های ISP خود استفاده کنیم.

نکته:
برای جدا کردن آدرس ip ها از سیمیکلون (;) استفاده کنید.
نکته:
برای خارج کردن forwarders از حالت توضیحات عبارت */ را از اول بخش و /* را از آخر بخش حذف می کنیم. (به مانند زبان c)

حال باید چیزی شبیه زیر داشته باشیم.

forwarders {
		۱۹۲٫۱۶۸٫۰٫۲;۱۹۲٫۱۶۸٫۰٫۳;
};

حال باید zone های خود را تعریف کنیم. برای این منظور به پایین همان فایل آمده و خطوط زیر را به آن اضافه می کنیم.

zone "test" {
	 type master;
	 file "master/test";
	 allow-transfer { localhost; };
	 allow-update { key rndc-key; };
};

همان طور که می بینید ما یک zone به اسم test ساختیم که فایل اصلی آن zone در مسیر master/test می باشد. شما می توایند از اسم domain خود استفاده کنید.

حال ما باید یک جستجوی برگشتی (reverse lookup) به zone خودمان اضافه کنیم. برای این منظور خطوط زیر را به انتهای فایل named.conf اضافه می کنیم.

zone "0.168.192.in-addr.arpa" {
	 type master;
	 file "master/test.rev";
	 allow-transfer { localhost; };
	 allow-update { key rndc-key; };
};

در بالا شما عبارت ۰٫۱۶۸٫۱۹۲ را می بینید که شاید تعجب کنید که این چیست. در‌ واقع این شناسه شبکه من است ۱۹۲٫۱۶۸٫۰ که به صورت برگشتی نوشته شده است. (جستجوی برگشتی!)

شما می توانید بسته به نیازتان شناسه شبکه خود را تغییر دهید.

تا اینجا فعلاً کارمان با فایل named.conf تمام شد . آن را دخیره می کنیم و می بندیم.

حال ما نیاز داریم که یک rndc.key بسازیم و محتویات آن را به آخر فایل named.conf اضافه کنیم.

هشدار:
rndc.key یک کلید رمزنگاری می باشد که با ابزار rndc تولید می شود.

برای است منظور دستورات زیر را اجرا می کنیم:

rndc-confgen -a
cd /var/named/etc/namedb
cp named.conf named.conf.old
cat rndc.key >> named.conf 

در اینجا دیگر کار ما با فایل named.conf تمام شد و باید فایل‌های zone بسازیم که شامل records و غیره می باشد.

ساختن فایل master forward local zone

به یاد داشته باشید که عبارت test را می توانید با نام domain خود جایگزین کنید.

خوب حالا باید فایل test را بسازیم. برای این منظور دستوران زیر را اجرا می کنیم.

cd /var/named/etc/namedb/master
vi test

بعد از باز کردن فایل test محتویات زیر را در آن اضافه کنید.

$TTL 	۳۶۰۰
test. 		 IN 		SOA 	 dnsfreebsd.test. 	root.test. (
							۱ 		 ; Serial 
							۱۰۸۰۰ 	 ; Refresh
							۳۶۰۰ 		 ; Retry
 							۶۰۴۸۰۰	 ; Expire
							۸۶۴۰۰ ) 	 ;Minimum TTL
; DNS Servers
test. 		 IN 		NS	dnsfreebsd.test.

; Computer names and records
dnsfreebsd.test. 	 IN 		A	 ۱۹۲٫۱۶۸٫۰٫۲ 

; Aliases
www			 IN 		CNAME 	dnsfreebsd.test.

; Mail MX Records
test.			 IN 		MX 	 ۱۰	dnsfreebsd.test.

شما می توانید بسته به نیاز خود aliases های بیشتری را اضافه کنید و یا همچنین A و MX رکوردهای بیشتری را اضافه کنید.

توجه داشته باشید در آخر نام domain خود حتماً علامت . (نقطه) را بگذارید.

همچنین شما می توانید hostname خودتان را جایگزین dnsfreebsd در این تنظیمات بکنید.

توجه داشته باشید که عبارت root.test آدرس email مدیر و صاحب zone است و در اینجا باید @ را با . (نقطه) جایگزین کنیم.

ساختن فایل master reverse lookup zone

برای ساختن این فایل دستورات زیر را اجرا می کنیم.

cd /var/named/etc/namedb/master
vi test.rev

و سپس محتویات زیر را به فایل test.rev اضافه می کنیم.

$TTL 	۳۶۰۰
۰٫۱۶۸٫۱۹۲٫in-addr.arpa. 	 IN 	SOA 	dnsfreebsd.test. 	 root.test. (
							۱ 		 ; Serial
							۱۰۸۰۰ 	 ; Refresh
	 						۳۶۰۰ 		 ; Retry
							۶۰۴۸۰۰ 	 ; Expire
							۸۶۴۰۰) 	 ; Minimum TTL
; DNS Servers
۰٫۱۶۸٫۱۹۲٫in-addr.arpa.		 IN 	NS 	dnsfreebsd.test.

; Computer IPs
۱۰۰					 IN 	PTR	dnsfreebsd.test.
۱۰۰					 IN 	PTR	www.test.

خوب در اینجا کارمان با تنظیمات تمام شد و می‌خواهیم سرور DNS مان را تست کنیم. برای این منظور کارهای زیر را انجام می دهیم.

vi  /etc/resolv.conf

و سپس خطوط زیر را به آن اضافه می کنیم.

domain test
nameserver 192.168.0.100
nameserver 192.168.0.2

بعد از انجام کارهای بالا فایل rc.conf را برای بالا آمدن خودکار سرویس BIND تنظیم می کنیم

echo 'named_enable=”YES”' >> /etc/rc.conf

سیستم را reboot می کنیم و حال به تست نهایی می پردازیم. برای این منظور دستور زیر را اجرا می کنیم.

dig google.com

اگر خروجی مانند زیر دیدید به شما تبریک می گویم.

;; SERVER: 192.168.0.100#53(192.168.0.100)