کانفیگ Name Server با استفاده از BIND روی CentOS 7

BIND یکی از محبوبترین سرورهای DNS است که در شبکه اینترنت استفاده می‌شود. این سرور می‌تواند به عنوان یک سرور authoritative، سرور recursive و یا سرور ذخیره نام عمل کند و طیف وسیعی از ویژگی‌ها را پشتیبانی می‌کند.

در این آموزش ایجاد سرورهای اولیه و ثانویه BIND به عنوان یک authoritative name servers توضیح داده می‌شود. این روش برای name server عمومی یا خصوصی مناسب است. با این حال name server های خصوصی internal معمولا شامل عناصر بازگشتی و ذخیره‌سازی برای تحلیل DNS های محلی است.

بسیار تاکید می شود که name server های اولیه و ثانویه در شبکه ها و مکانهای فیزیکی جداگانه قرار داشته باشند.این امر باعث می شود که اگر یکی از name server ها بنا به دلایلی همچون در دسترس نبودن سرور، شبکه و یا مشکلات دیتاسنتر در دسترس نبود name server دیگر در دسترس باشد.

تجهیزات مورد نیاز:
• دو سرور ( اولیه و ثانویه)
• CentOS or Red Hat Enterprise Linux 7
• BIND 9
• یک دامین (به عنوان مثال zagrio.com)
• آدرس IP اولیه: ۱۹۲٫۰٫۲٫۱
• آدرس IP ثانویه: ۱۹۲٫۰٫۲٫۲

آماده‌سازی سرورها:

هر دو شبکه و فایروال‌های host ها باید به ترافیک TCP و UDP از طریق پورت ۵۳ اجازه ورود دهند. درخواست‌های استاندارد DNS بیشتر از طریق پورت ۵۳ اتقاق می‌افتد. با این‌حال اگر حجم پاسخ بیشتر از ۵۱۲ بایت باشد ممکن است باعث DNSSEC شود که درخواست به پورت ۵۳ TCP فرستاده می‌شود.
انتقال‌های Zone بین name server های اولیه و ثانویه از طریق پورت ۵۳ صورت می‌گیرد.

firewall-cmd --permanent --zone=public --add-port=53/tcp
firewall-cmd --permanent --zone=public --add-port=53/udp
firewall-cmd --reload

نصب BIND:

BIND بصورت پیش‌فرض در مخازن CentOS موجود است. bind-utils برای تست و عیب‌یابی مسائل مربوط به DNS بسیار مفید است.

yum -y install bind bind-utils

کانفیگ سرور اولیه:

اولین قدم اصلاح فایل named.conf است که معمولا به عنوان یک name server برای ذخیره‌سازی کانفیگ می‌شود.

nano /etc/named.conf

برای اینکه name server به درخواستهای خارجی پاسخ دهد، named process به یک IP آدرس Public نیاز دارد.تمامی IP آدرس‌های مقداردهی شده به سرور متصل خواهند شد.

...
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
...

نیاز است که Name server ها به تمام درخواست‌های مناطق معتبر پاسخ دهند اما به صورت پیش‌فرض اجازه ندارند که درخواست‌ها را بین مناطق انتقال دهند.

...
allow-query { any; };
allow-transfer { none; };
recursion no;
...

در اینجا یک فایل named.conf کامل برای تنظیم کردن سرویس‌های authoritative name داریم.

options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
allow-transfer { none; };
recursion no;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

مسیر فایل‌های Zone و جزئیات Zone باید در فایل etc/named.rfc1912.zones/ اضافه شود.

nano /etc/named.rfc1912.zones

قسمت نام دامین باید با مسیر فایلی که حاوی اطلاعات Zone است ایجاد شود که این منطقه اصلی و آدرس IP سرور دوم است.

zone "zagrio.com" IN {
type master;
file "zagrio.com";
allow-transfer { 192.0.2.2; };
};
};

این فایل را ذخیره کنید و سپس ببندید.

ایجاد یک Zone File:

اکنون یک Zone File واقعی می‌توان ایجاد کرد:

nano /var/named/zagrio.com

Zone File شامل تنظیمات دامین و هر رکورد منبع است. در اینجا مثالی از یک دامنه با رکوردهای منبع آن آورده شده است.

$TTL 3H
@ IN SOA @ hostmaster.zagrio.com. (
۰ ; serial
۳H ; refresh
۱H ; retry
۱W ; expire
۳H ) ; minimum
@ IN NS ns1.zagrio.com.
@ IN NS ns2.zagrio.com.
@ IN A 192.0.2.10
@ IN MX 10 host2.zagrio.com.
@ IN MX 20 host3.zagrio.com.
ns1 IN A 192.0.2.1
ns2 IN A 192.0.2.2
host1 IN A 192.0.2.10
host2 IN A 192.0.2.11
host3 IN A 192.0.2.12
www IN CNAME zagrio.com.
mail IN CNAME host2.zagrio.com.
gopher IN CNAME host3.zagrio.com.
zagrio.com. IN TXT "v=spf1 ip4:203.0.113.42 include:_spf.google.com ~all"

@ در فایل Zone نام دامین را نشان می‌دهد. در این مثال @ معادل دامین zagrio.com است. علامت . در انتهای نام دامین برای شناسایی انتهای نام دامین در Zone File استفاده می‌شود.
Zone File را ذخیره کنید و از ویرایشگر خارج شوید. قبل از شروع سرویس شما باید تائید کنید که در فایل named.conf هیچ خطایی وجود ندارد.

named-checkconf

اکنون BIND named می تواند فعال و start شود.

systemctl enable named
systemctl start named

کانفیگ سرور ثانویه:
به سرور ثانویه log in کنید و etc/named.conf/ را برای مطابقت با سرور اصلی اصلاح کنید.

nano /etc/named.conf

به قسمت named.conf. در کانفیگ سرور اولیه مراجعه کنید. هنگامی که فایل update شد نیاز است که etc/named.rfc1912.zones/ در zone سرور ثانویه اضافه شود.

zone "zagrio.com" IN {
type slave;
file "slaves/zagrio.com";
masters { 192.0.2.1; };
};

فایل zone را ذخیره کنید و از ویرایشگر خارج شوید. قبل از شروع سرویس باید مطمئن شوید که هیچ خطایی در فایل named.conf وجود ندارد.

named-checkconf

اکنون فرآیند name ثانویه در هنگام بوت می تواند enable و start شود.

systemctl enable named
systemctl start named

تست DNS Resolution:

با دستور dig زیر می‌توان هردو name server را برای برگرداندن رکوردهای دامین بر روی سرور فعال کرد.

dig any zagrio.com @localhost

شما باید نتایجی که از یک host راه دور که قادر است به name serverها متصل شود را بازیابی کنید و تطابق دهید. این اتصال اعلام می‌شود و قوانین فایروال در اینجا به کار برده می شود.

dig any zagrio.com @192.0.2.1
dig any zagrio.com @192.0.2.2

اصلاح Zone File:

Zone File را می توان در name server های اولیه تغییر داد. هنگامی که رکوردهای منبع حذف، اضافه و یا اصلاح می‌شوند، شما باید یه یاد داشته باشید که شمار سریال zone را افزایش دهید. در ادامه شماره سریال Zone مربوط به zagrio.com نشان داده می شود.

...
@ IN SOA @ hostmaster.zagrio.com. (
۰ ; serial
۳H ; refresh
...

اگر شماره سریال از صفر شروع شود، مقدار بعدی ۱ خواهد بود.

...
@ IN SOA @ hostmaster.zagrio.com. (
۱ ; serial
۳H ; refresh
...

هنگامی‌که شماره سریال Zone افزایش می‌یابد، نیاز است که Zone مجددا بارگزاری شود که بدون نیاز به restart کردن named process می‌توان این‌کار را انجام داد.

rndc reload example.com

reload همچنین انتقال Zoneبه سرور ثانویه را آغاز می کند.

Reverse DNS:

Reverse DNS نام دامنه را به IP آدرس تبدیل می‌کند. برخی از سرویس‌ها مانند SMTP یا Kerberos ممکن است به این سرویس نیاز داشته باشند.
در اکثر موارد در مورد فضای IP آدرس‌های عمومی، reverse DNS توسط ارائه‌دهنده خدمات مدیریت IP subnets به کار گرفته می‌شود. پیشنهاد می‌شود که اگر نیاز به تنظیمات reverse DNS دارید با پشتیبانی ارائه‌دهنده خدمات تماس بگیرید.
در برخی شرایط ممکن است بخواهید reverse DNS برای یک subnet که به سمت سرور شما هدایت شده است را استفاده نمائید و یا ممکن است بخواهید که reverse DNS را به یک آدرس خصوصی یا شبکه داخلی متصل کنید در این شرایط یک دامین مخصوص به نام in-addr.arp برای ارائه این‌کار استفاده می‌شود.
برای زیر شبکه ۱۹۲٫۰٫۲٫۰/۲۴ Zone File 2.0.192.in-addr.arpa می‌شود و فرآیند پیکربندی برای یک Zone File نرمال همانند name server های اولیه و ثانویه است.

nano /var/named/2.0.192.in-addr.arpa

در اینجا یک مثال از رکوردهای PTR فایل Zone مربوط به ۲٫۰٫۱۹۲٫in-addr.arpa داریم:

$TTL 3H
@ IN SOA @ hostmaster.zagrio.com. (
۲ ; serial
۳H ; refresh
۱H ; retry
۱W ; expire
۳H ) ; minimum
@ IN NS ns1.zagrio.com.
@ IN NS ns2.zagrio.com.
۱ IN PTR ns1.zagrio.com.
۲ IN PTR ns2.zagrio.com.
۱۰ IN PTR host1.zagrio.com.
۱۱ IN PTR host2.zagrio.com.
۱۲ IN PTR host3.zagrio.com

عیب‌یابی مشکلات DNS:

خطاهای نحوی در فایل‌های کانفیگ خیلی آسان نادیده گرفته می‌شوند. بنابراین همیشه توصیه می‌شود قبل از start یا restart کردن فرآیند named، دستور named-checkconf اجرا شود.

named-checkconf

وقتی خطایی رخ می دهد فایل named log اولین مکان برای شروع جستجو است. فایل log در CentOs در مسیر زیر یافت می‌شود:

/var/named/data/named.run

bind-utils شامل چندین منبع مانند dig، nslookup و host است که می‌توان به منظور درخواست‌های مستقیم در برابر authoritative name server از آنها استفاده کرد. آن‌ها از نام دامین، authoritative server و در صورت تمایل از یک رکورد منبع به عنوان پارامتر استفاده می‌کنند.

dig mx zagrio.com @192.0.2.1

یک پرس‌و‌جو با authoritative name server رکوردهای منبع و Zone فعلی را بدون در نظر گرفتن caching یا TTL نشان می‌دهد.
آخرین نکته برای عیب‌یابی دامنه‌های ثبت شده بر روی اینترنت است که به منظور بررسی ثبت دامنه از authoritative name server است و اینکه نام دامنه منقضی نشده باشد.

whois zagrio.com

برچسب‌ها:

دیدگاه خود را بیان کنید