۱۳۸۶ اردیبهشت ۲۵, سه‌شنبه

DNS Server with Mysql and web interface on Debian

MyDnsیه DNS سرور بر پایه MySQL و بر عکس Bind هست که تنظیماتش توی فایل ذخیره میشه.مهمترین برتری این سرور نسبت به بقیه اینه که وقتی Zone جدید و…. میسازیم احتیاجی به restart and reload نداره.
MyDNSConfig هم یک web interface برای کانفیگ MyDNS هست. خوب بریم سراغ نصب :

اول کار باید وب سرور و mysql راه بیاندازیم بدین شکل

apt-get install apache php۴ mysql-server phpmyadmin

نکته :

برای نصب این بسته ها ۲ حالت وجود داره یا از روی cd که با دستور apt-cdrom براحتی میدونید cdهاتون رو به سیستم معرفی کنید

ویا از Internet که باید فایل sources.list در /etc/apt/ رو بدین شکل تنظیم کنید

deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free

و بعدش apt-get update فراموشتون نشه!!

ادامه تنظیمات :

خوب حالا میریم سراغ Mysql و برای root پسورد میزاریم که من اینجا root رو انتخاب میکنم

mysqladmin password root -u root

بعد نوبت ساختن دیتابیس و دادن PRIVILEGES به اونه

من همه اینها رو dns انتخاب مبکنم یعنی user,pass,database=dns

mysql -u root -p
CREATE DATABASE dns;
GRANT SELECT, INSERT, UPDATE, DELETE ON dns.* TO ‘dns’@’localhost’ IDENTIFIED BY ‘dns’;
GRANT SELECT, INSERT, UPDATE, DELETE ON dns.* TO ‘dns’@’localhost.localdomain’ IDENTIFIED BY ‘dns’;
FLUSH PRIVILEGES;
quit;

حالا باید MyDNSConfig رو دانلود کنید

cd /tmp
wget http://mesh.dl.sourceforge.net/sourceforge/mydnsconfig/MyDNSConfig-۱.۱.۰.tar.gz
tar xvfz MyDNSConfig-۱.۱.۰.tar.gz
cd MyDNSConfig-۱.۱.۰

اگر ورژن Mysqlتون ۴ هست اینو بگیرید

توی این فایل هم ورژن ۵ هست هم ۴

حالا میرسیم سر نصبش :

mkdir /usr/share/mydnsconfig
cp -rf interface/* /usr/share/mydnsconfig/
ln -s /usr/share/mydnsconfig/web/ /var/www/mydnsconfig

فایل دیتابیس رو import میکنیم
اگر فایل از سایت اصلی گرفتین

mysql -u root -p mydns <>

و اگر فایل منو گرفتین

for mysql v۵
mysql -u dns -p dns <>

دیتابیسمون امدست (یاد برنامه آشپزی افتادم!) و باید MyDNSConfig رو کانفیگ کنیم تا با این دیتابیس کار کنه

nano /usr/share/mydnsconfig/lib/config.inc.php

این خطوط رو پیدا کنید

$conf[”db_type”] = ‘mysql’;
$conf[”db_host”] = ‘localhost’;
$conf[”db_database”] = ‘mydns’;
$conf[”db_user”] = ‘mydns’;
$conf[”db_password”] = ‘mydnspassword’;

و بدین شکل تغییر بدین(فراموش نکنید که من طبق پارامترهایی که از اول با هم کانفیگ کردیم ,تنظیم کردم)

$conf[”db_type”] = ‘mysql’;
$conf[”db_host”] = ‘localhost’;
$conf[”db_database”] = ‘dns’;
$conf[”db_user”] = ‘dns’;
$conf[”db_password”] = ‘dns’;

خوب Mydnsconfig آمادست و اگه دوست دارین میتونید از توی tmp پاکش کنید

cd /tmp
rm -rf MyDNSConfig-۱.۱.۰/
rm -f MyDNSConfig-۱.۱.۰.tar.gz

وقت نصب MyDNS رسیده و داره کم کم بوهای خوبی به مشاممون میرسه

apt-get install mydns-mysql

آره میدونم نصبش خیلی سخت بود!!! ولی توجه داشته باشید که حین نصب سوالاتی راجب دیتابیس ازتون میپرسه که باید مشخصات دیتابیسی که بالا ساختیم رو بدید….خنگ بازی در نیارینا!!

فایل کانفیگ MyDNS رو تنظیم میکنیم تا به TCPها هم گوش بده و بتونیم Zone transfer داشته باشیم

nano /etc/mydns.conf

allow-tcp = yes

کار ما تموم شد و کلاغه هم امیدوارم به خونش برسه
برای وصل شدن به سرور هر Browserای که عشقتونه باز کنید و بزنید
http://youserverip/mydnsconfig/
user=admin
pass=admin
پسورد هم عوض کنید که فردا نگید بلا ملا سرمون اومده
MyDns چند تا مشکل داره و البته بعضی جاها خوبی شمرده میشه :
DNS resolver نداره که اگه برای zoneای از قضا authoritative نبود بتونه اون درخواست رو پاسخ بده(یعنی اگه خودش اون zone رو هاست نمیکنه دگه نمیتونه بره از dns serverهای دیگه پرس وجو کنه!!)
شاید بپرسن خوبیه این چیه که من گفتم…خوب معلومه گمپ گلم (من شیرازیما) شما اگه احتیاجی به resolve کردن دومین های دیگه ندارین , از شر کلی هکر و بچه هکر و….راحتین که دیگه نمیتونن از این طریق مشکلی براتون پیش بیارن
حالا ناراحت نشین اینم راه داره باید DNSMasq رو نصب کنیم
Create a DNS Resolver on IP ۱۲۷.۰.۰.۱:
apt-get install dnsmasq
برای اینکه هر دو(MyDns and dnsmasq) به ۱۲۷.۰.۰.۱گوش ندهند و تداخل پیش نیاد
nano /etc/dnsmasq.conf
listen-address=۱۲۷.۰.۰.۱
no-dhcp-interface=
bind-interfaces
حالو به mydns.conf میگیم به ۱۲۷.۰.۰.۱ گوش نده
nano /etc/mydns.conf
no-listen = ۱۲۷.۰.۰.۱
recursive = ۱۲۷.۰.۰.۱
/etc/resolv.conf/ ویرایش میکنیم
nano /etc/resolv.conf
این nameserver ۱۲۷.۰.۰.۱ رو به اولین خط اضافه میکنیم تا DNSMasq DNS-Cache برای همه local DNS queries استفاده بشه.
نکته » شما اگر ۲ تا کارت شبکه یا بیشتر داشته باشین mydns فقط به eth۰ گوش میده پس باید بگید که یه اونها گوش یده پسر خوب…چطوری؟اینجوری
توی mydns.conf باید ip کارت شبکه هاتون رو اضافه کنید
listen = ۱۹۲.۱۶۸.۰.۲۰۱,۱۹۲.۱۶۸.۱.۲۰۱
پس ما اینجا به mydns گفتیم که به ۱۹۲.۱۶۸.۰.۲۰۱ و ۱۹۲.۱۶۸.۱.۲۰۱ گوش بده و اگر برای اون درخواست authoritative نبود بره سراغ ۱۲۷.۰.۰.۱کهdnsmasq باشه
استفاده از dig برای تست رکوردها :

۱-تست Forward DNS record

d۱:~# dig @۱۹۲.۱۶۸.۰.۲۰۱ reza.persianadmins.com

; <<>> DiG ۹.۲.۴ <<>> @۱۹۲.۱۶۸.۰.۲۰۱ reza.persianadmins.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51758 ;; flags: qr aa rd ra; QUERY: ۱, ANSWER: ۱, AUTHORITY: ۰, ADDITIONAL: ۰

;; QUESTION SECTION:
;reza.persianadmins.com. IN A

;; ANSWER SECTION:
reza.persianadmins.com. ۸۶۴۰۰ IN A ۱۹۲.۱۶۸.۰.۱

;; Query time: ۱۵۹ msec
;; SERVER: ۱۹۲.۱۶۸.۰.۲۰۱#۵۳(۱۹۲.۱۶۸.۰.۲۰۱)
;; WHEN: Sun Mar ۱۱ ۰۷:۳۱:۵۶ ۲۰۰۷
;; MSG SIZE rcvd: ۵۶

۲-تست reverse DNS record

d۱:~# dig @۱۹۲.۱۶۸.۰.۲۰۱ -x ۱۹۲.۱۶۸.۰.۱

; <<>> DiG ۹.۲.۴ <<>> @۱۹۲.۱۶۸.۰.۲۰۱ -x ۱۹۲.۱۶۸.۰.۱
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46405 ;; flags: qr aa rd ra; QUERY: ۱, ANSWER: ۱, AUTHORITY: ۰, ADDITIONAL: ۰

;; QUESTION SECTION:
;۱.۰.۱۶۸.۱۹۲.in-addr.arpa. IN PTR

;; ANSWER SECTION:
۱.۰.۱۶۸.۱۹۲.in-addr.arpa. ۸۶۴۰۰ IN PTR reza.persianadmins.com.

;; Query time: ۲۷ msec
;; SERVER: ۱۹۲.۱۶۸.۰.۲۰۱#۵۳(۱۹۲.۱۶۸.۰.۲۰۱)
;; WHEN: Sun Mar ۱۱ ۰۷:۴۲:۰۵ ۲۰۰۷
;; MSG SIZE rcvd: ۷۸

توجه داشته باشد که وبلاگ من اعداد رو به فارسی مینویسه و شما نمیتونید از copy and paste استفاده کنید
ولی اینجا یا اعداد انگلیسی قرار دادم و برای رفع اشکال هم به همین انجمن بروید
در هر دو فایلی که دانلود میکنید تمام مراحل بدقت توضیح داده شده پس میتونید دستورات رو از اونجا کپی کنید
برای دیدن تصویر بزرگتر روی عکس کلیک کنید
Sources :

هیچ نظری موجود نیست: