برنامه نویسی

پیکربندی سرور DNS – انجمن DEV 👩‍💻👨‍💻

معرفی

سرویس DNS سیستمی است که نقشه برداری بین نام های دامنه و آدرس های IP را مدیریت می کند و این امکان را برای رایانه ها فراهم می کند تا وب سایت ها و سایر منابع آنلاین را پیدا کرده و به آنها متصل شوند.

پورت های DNS 👉 UDP/53، TCP/53

جستجوی ساده 👉 نام دامنه -> آدرس IP
جستجوی معکوس 👉 آدرس IP -> نام دامنه

سرورهای DNS بازگشتی 👉 اطلاعات را در سلسله مراتب DNS برای مشتریان جستجو کنید

سرورهای DNS معتبر 👉 اطلاعات مربوط به دامنه های خاص را ذخیره و ارائه دهید


ساختار نام دامنه

✨ نام میزبان: نامی که به یک دستگاه یا سرور خاص در یک شبکه داده می شود که برای شناسایی و تمایز بین دستگاه های مختلف استفاده می شود

✨ نام دامنه: یک برچسب قابل خواندن برای انسان که برای شناسایی یک وب سایت یا سایر منابع آنلاین استفاده می شود، متشکل از یک یا چند کلمه که با نقطه از هم جدا شده اند و سمت راست ترین برچسب نشان دهنده TLD است.

✨ دامنه ریشه: بالاترین سطح سیستم نام دامنه، که با یک نقطه در انتهای نام دامنه نشان داده می شود و به عنوان نقطه شروع برای همه تصمیمات نام دامنه عمل می کند.

درخت


انواع رکورد DNS

✨ یک رکورد: یک رکورد A یک نام دامنه را به آدرس IPv4 نگاشت می کند

✨ رکورد AAAA: یک رکورد AAAA یک نام دامنه را به آدرس IPv6 نگاشت می کند

✨ رکورد MX: رکورد MX سرور پست الکترونیکی را مشخص می کند که مسئول پذیرش پیام های ایمیل برای یک نام دامنه خاص است

✨ رکورد CNAME: یک رکورد CNAME یک نام مستعار یا نام مستعار برای یک نام دامنه را به نام دامنه واقعی نگاشت می کند

✨ رکورد NS: یک رکورد NS سرورهای نام معتبر یک دامنه را مشخص می کند

✨ رکورد TXT: یک رکورد TXT می تواند حاوی هر داده متنی باشد و اغلب برای احراز هویت مبتنی بر DNS و اقدامات ضد هرزنامه استفاده می شود.

✨ رکورد SRV: رکورد SRV مکان سرویس ارائه شده توسط یک دامنه را مشخص می کند، مانند سرویس SIP یا XMPP.

✨ SOARrecord: یک رکورد SOA سرور نام معتبر یک دامنه را مشخص می کند و حاوی اطلاعاتی در مورد دفعات تجدید اطلاعات DNS است.

💡 نام دامنه کاملاً واجد شرایط یک نام دامنه کامل است که مکان دقیق یک منبع را در سلسله مراتب سیستم نام دامنه (DNS) مشخص می کند.

👉 برای مثال، FQDN برای یک وب سایت ممکن است “www.example.com” باشد، که در آن “www” نام میزبان، “example” دامنه سطح دوم و “com” دامنه سطح بالا است. FQDN کامل مسیر کامل سرور وب را مشخص می کند و می تواند توسط دستگاه های سرویس گیرنده برای مکان یابی و اتصال به سرور استفاده شود.


گردش کار DNS

دست های ساده

💡 من از 2 ماشین مجازی لینوکس در ایستگاه کاری VMWare خود برای پیکربندی 2 سرور DNS (1 برای پشتیبان گیری) استفاده کرده ام (شبکه 192.168.1.0/24 است)

ما با نصب شروع خواهیم کرد bind بسته در هر دو سیستم

yum -y install bind-*
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از نصب به

vi /etc/named.conf
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

👉 این فایل فایل پیکربندی اصلی برای سرور DNS است

در داخل این فایل، نظرات این بخش را برای وضوح پاک کردم

     12 options {
     13         listen-on port 53 { 127.0.0.1; };
     14         listen-on-v6 port 53 { ::1; };
     15         directory       "/var/named";
     16         dump-file       "/var/named/data/cache_dump.db";
     17         statistics-file "/var/named/data/named_stats.txt";
     18         memstatistics-file "/var/named/data/named_mem_stats.txt";
     19         recursing-file  "/var/named/data/named.recursing";
     20         secroots-file   "/var/named/data/named.secroots";
     21         allow-query     { localhost; };
     22         recursion yes;
     23         dnssec-enable yes;
     24         dnssec-validation yes;
     25         bindkeys-file "/etc/named.root.key";
     26         managed-keys-directory "/var/named/dynamic";
     27         pid-file "/run/named/named.pid";
     28         session-keyfile "/run/named/session.key";
     29 };
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در داخل این فایل، 127.0.0.1 را به آن تغییر می دهیم

listen-on port 53 { any; };
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

👉 ما نیاز داریم که همه کاربران به سرور DNS دسترسی داشته باشند

همچنین برای پذیرش باید این خط را تغییر دهید any

allow-query     { any; };
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در نهایت تغییر بازگشت به no

recursion no;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

👉 تنظیم بازگشت به no پرس و جو بازگشتی را برای عدم رفتن به سرور کش ایجاد می کند. ما این ویژگی را به دلایل امنیتی خاموش می کنیم.

💡 به عبارت ساده تر، ما سرور DNS را مجبور می کنیم به جای جستجوی آن، به هر درخواستی که DNS نمی داند پاسخ دهد.

این موضوع باعث ایجاد یک موضوع دیگر می شود. اگر از یک سرور محلی DNS در شبکه خود استفاده می کنیم، هیچ نام DNS دیگری از سرورهای DNS دیگر جستجو نمی کند. این باعث می شود کاربرانی که از سرور DNS محلی استفاده می کنند نتوانند به وب سایت دیگری خارج از مجموعه آدرس محلی DNS دسترسی داشته باشند.

برای حل مشکل فوق از یک قانون ACL استفاده می کنیم

     12 acl AllowRecursion {
     13         127.0.0.1;
     14         <Your-Local-Network-ID>;
     15 };
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همچنین اضافه کردن

     27         recursion yes;
     28         allow-recursion { AllowRecursion; };
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به پایین فایل کانفیگ نگاه کنید

include "/etc/named.rfc1912.zones";
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

👉 اینجا جایی است که ما نام های دامنه خود را که خریداری کرده ایم اضافه می کنیم

همچنین،

zone "." IN {
        type hint;
        file "named.ca";
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

👉 این نشان می دهد که اگر آدرس درخواستی پیدا نشد، DNS باید به دنبال پرس و جو درخواست شده از named.ca فایل. را named.ca فایل حاوی آدرس های سرور DNS از سراسر جهان است

حال باید نام دامنه را در فایل zones قرار دهیم

vi /etc/named.rfc1912.zones

# Adding the following at the end
zone "waji.com" IN {
        type master;
        file "waji.zone";
        allow-update { 192.168.1.129; };
        allow-transfer { 192.168.1.129; };
};

zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "waji.rev";
        allow-update { 192.168.1.129; };
        allow-transfer { 192.168.1.129; };
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

👉 192.168.1.129 آدرس IP سرور DNS پشتیبان است.

ما به تازگی تنظیمات DNS را برای جستجوی رو به جلو و معکوس انجام داده ایم

💡 داریم master slave و hint انواع برای ورودی های DNS. master برای سرور اصلی DNS، slave برای ورودی DNS پشتیبان و hint برای سرور کش

💡 waji.zone و waji.rev فایل های zone هستند. این فایل ها باید دارای سوابق (سوابق A و غیره) باشند.

اگر از DDNS استفاده نمی کنیم، نیازی نخواهیم داشت allow-update خط

من از DDNS استفاده نمی کنم بنابراین موارد بالا تبدیل می شوند

zone "waji.com" IN {
        type master;
        file "waji.zone";
        allow-transfer { 192.168.1.129; };
};

zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "waji.rev";
        allow-transfer { 192.168.1.129; };
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

💡 هرگز استفاده نکنید any که در allow-transfer. ما اجازه می‌دهیم فایل منطقه‌ای را که حاوی نام رکورد است، منتقل کنیم. اگر این فایل در اختیار هر شخص ناشناس قرار گیرد، او می تواند از جزئیات آن فایل برای آسیب رساندن به ما سوء استفاده کند

👉 ما فقط باید به سرور DNS Slave اجازه دهیم. در مورد من 192.168.1.129 سرور DNS برده ما است

در حال حاضر، ما باید به

cd /var/named
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا، ما باید فایل ها را ایجاد کنیم

cp named.localhost waji.zone
cp named.localhost waji.rev
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در waji.zone فایل

$TTL 1D
@       IN SOA  ns1.waji.com.         root(
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1.waji.com.
ns1     IN      A       192.168.1.128
www     IN      A       192.168.1.128
aaa     IN      CNAME   www.waji.com.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

👉 در اینجا ما آن را طوری تنظیم کرده ایم که اگر مشتری جستجو کند ns1.waji.com، سرور به 192.168.1.128 پاسخ خواهد داد

@ -> به نام دامنه (منبع) ترجمه می شود

در حال حاضر، در waji.rev فایل

$TTL 1D
@       IN SOA  ns1.waji.com.    root(
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1.waji.com.
128     IN      PTR     ns1.waji.com.
128     IN      PTR     www.waji.com.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما باید مالکیت فایل ها و دایرکتوری های زیر را تغییر دهیم /var/named به named برای اینکه DNS واقعاً کار کند

# Current owner
-rw-r----- 1 root  root   198  2월 23 13:28 waji.rev
-rw-r----- 1 root  root   222  2월 23 13:09 waji.zone

# Changing the group ownership
chown .named ./waji.*

-rw-r----- 1 root  named  198  2월 23 13:28 waji.rev
-rw-r----- 1 root  named  222  2월 23 13:09 waji.zone
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون فقط باید سرویس را فعال و راه اندازی کنیم

systemctl start named
systemctl enable named
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در نهایت سرویس را به فایروال اضافه کنید

firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما با موفقیت سرور اصلی DNS را پیکربندی کردیم.

👉 از سرور DNS برده پیکربندی نشده، آزمایش خواهیم کرد که آیا Master به درستی پیکربندی شده است

از سرور DNS برده،

nslookup
> server 192.168.1.128   
Default server: 192.168.1.128
Address: 192.168.1.128#53

> www.waji.com
Server:     192.168.1.128
Address:    192.168.1.128#53

Name:   www.waji.com
Address: 192.168.1.128
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما می توانیم نام دامنه دیگر را آزمایش کنیم

> ns1.waji.com
Server:     192.168.1.128
Address:    192.168.1.128#53

Name:   ns1.waji.com
Address: 192.168.1.128
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یا می توانیم جستجوی معکوس را انجام دهیم

> 192.168.1.128
128.1.168.192.in-addr.arpa  name = ns1.waji.com.
128.1.168.192.in-addr.arpa  name = www.waji.com.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون برای پیکربندی سرور DNS برده،

vi /etc/named.conf

listen-on port 53 { any; };
allow-query     { any; };
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در حال پیکربندی در داخل /etc/named.rfc1912.zones فایل

zone "waji.com" IN {
        type slave;
        file "slaves/waji.zone.slave";
        notify yes;
        masterfile-format text;
        masters { 192.168.1.128; };
};

zone "1.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/waji.rev.slave";
        notify yes;
        masterfile-format text;
        masters { 192.168.1.128; };
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

👉 ما به آن نیاز نداریم masterfile-format text پیکربندی در راه اندازی واقعی، زیرا در برابر حملات آسیب پذیر است. فایل ها باید در “باینری” که پیش فرض است ذخیره شوند. من فقط از این تنظیم برای بررسی محتوای فایل برای این دست استفاده می کنم.

بازگشت به سرور DNS Master و اضافه کردن چند خط

zone "waji.com" IN {
        type master;
        file "waji.zone";
        allow-transfer { 192.168.1.129; };
        also-notify { 192.168.1.129; };
};

zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "waji.rev";
        allow-transfer { 192.168.1.129; };
        also-notify { 192.168.1.129; };
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

👉 ما باید اجازه می دادیم notify قابلیت استاد همانطور که پیکربندی کردیم notify yes; در سرور DNS برده ما

در نهایت، هنوز از Master DNS،

vi /etc/named.rfc1912.zones

$TTL 1D
@       IN SOA  ns1.waji.com.   root(
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1.waji.com.
        IN      NS      ns2.waji.com.
ns1     IN      A       192.168.1.128
ns2     IN      A       192.168.1.129
www     IN      A       192.168.1.128
aaa     IN      CNAME   www.waji.com.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و برای جستجوی معکوس

vi /var/named/waji.rev

$TTL 1D
@       IN SOA  ns1.waji.com.    root(
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1.waji.com.
        IN      NS      ns2.waji.com.
128     IN      PTR     ns1.waji.com.
129     IN      PTR     ns2.waji.com.
128     IN      PTR     www.waji.com.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه اندازی مجدد سرویس

systemctl restart named
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

👉 بازگشت به سرور DNS برده،

systemctl start named
systemctl enable named
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر حرکت کنیم به /var/named/slaves

ls -l /var/named/slaves/
total 8
-rw-r--r-- 1 named named 408 Feb 23 14:55 waji.rev.slave
-rw-r--r-- 1 named named 380 Feb 23 14:55 waji.zone.slave
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

✔ ما می توانیم تأیید کنیم که اطلاعات DNS در سرور DNS برده وجود دارد


✨ با استفاده از ماشین‌های مجازی به بررسی این موضوع پرداختیم که سرور DNS چیست و چگونه کار می‌کند. ما همچنین سرورهای DNS Master-slave را که افزونگی و تحمل خطا را فراهم می‌کنند، پیوند دادیم

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا