Product SiteDocumentation Site

10.6. سرورهای نام دامنه (DNS)

10.6.1. اصول و مکانیزم

سرویس نام دامنه (DNS) یک جز اساسی از اینترنت به حساب می‌آید: کار آن نگاشت نام‌ دامنه به نشانی IP (و برعکس) است، به طوری که امکان استفاده www.debian.org بجای 5.153.231.4 یا 2001:41c8:1000:21::21:4 را فراهم می‌کند.
رکوردهای DNS به صورت منطقه یا zone طبقه‌بندی می‌شوند؛ هر منطقه شامل یک دامنه (یا زیردامنه) یا یک نشانی IP (از آنجا که این نشانی‌ها به صورت متوالی تخصیص داده می‌شوند) است. یک سرور اصلی قابلیت مدیریت محتوای یک منطقه را دارد؛ سرورهای فرعی، که معمولا روی رایانه‌های جداگانه قرار می‌گیرند، رونوشت‌های تازه‌ای از منطقه اصلی را فراهم می‌آورند.
هر منطقه می‌تواند شامل رکوردها با انواع گوناگونی باشد (Resource Records):
  • A: نشانی IPv4.
  • CNAME: نام مستعار (canonical name).
  • MX: mail exchange، یک سرور ایمیل. این اطلاعات توسط سایر سرورهای ایمیل برای یافتن مکان مورد نیاز جهت ارسال نشانی‌های ایمیل است. هر رکورد MX یک اولویت دارد. سرور اولویت-بالا (با کمترین عدد) ابتدا استفاده می‌شود (قسمت بارگشت به مقدمات SMTP را مشاهده کنید)؛ در صورت عدم برقراری ارتباط با این سرور، سایر سرورها بر اساس اولویت خود مورد استفاده قرار می‌گیرند.
  • PTR: نگاشت یک نشانی IP به یک منطقه. چنین رکوردی در یک منطقه “DNS معکوس” نامگذاری شده با محدوده نشانی IP قرار می‌گیرد. برای نمونه، 1.168.192.in-addr.arpa منطقه شامل نگاشت برعکس برای تمام نشانی‌های موجود در بازه 192.168.1.0/24 است.
  • AAAA: نشانی‌های IPv6.
  • NS: یک نام را به یک سرور نام نگاشت می‌کند. هر دامنه حداقل باید یک رکورد NS داشته باشد. این رکوردها به سرور DNS اشاره می‌کنند که می‌توانند به درخواست‌های این دامنه پاسخ دهند؛ معمولا به سرورهای اصلی و فرعی این دامنه اشاره دارند. این رکوردها همچنین اجازه DNS Delegation را می‌دهند؛ برای نمونه، منطقه falcot.com می‌تواند شامل یک رکورد NS برای falcot.com باشد، که یعنی منطقه internal.falcot.com توسط سرور دیگری مدیریت می‌شود. البته، این سرور باید یک منطقه internal.falcot.com را تعریف کند.
Bind، سرور نام مرجع، توسط ISC (Internet Software Consortium) توسعه یافته و مدیریت می‌شود. در دبیان توسط بسته bind9 ارائه می‌گردد. نسخه ۹ شامل دو تغییر بزرگ در مقایسه با نسخه‌های پیشین است. ابتدا، سرور DNS اکنون می‌تواند تحت فرمان یک کاربر عادی نیز کار کند، به منظور اینکه در زمان بروز آسیب‌پذیری امنیتی مجوزهای اصلی آن به فرد مهاجم منتقل نشود (طوری که در نسخه‌های ۸ دیده می‌شد).
علاوه بر این، Bind از استاندارد DNSSEC برای امضا (و احراز هویت) رکوردهای DNS پشتیبانی می‌کند که حین حملات مرد میانی (MITM) امکان مسدودسازی داده‌های جعلی را فراهم می‌سازد.

10.6.2. پیکربندی

فایل‌های پیکربندی bind، صرف‌نظر از نسخه آن، ساختار مشابهی دارند.
مدیرسیستم‌های فالکوت یک منطقه اصلی به نام falcot.com برای ذخیره اطلاعات مربوط به این دامنه و یک منطقه به نام 168.192.in-addr.arpa برای نگاشت معکوس نشانی‌های IP در شبکه‌های محلی تعریف کرده‌اند.
گزیده پیکربندی پیش رو، که از فایل‌های شرکت فالکوت برداشت شده، می‌تواند به عنوان نقطه آغازی برای پیکربندی سرور DNS استفاده شود:

مثال 10.12. گزیده‌ای از /etc/bind/named.conf.local

zone "falcot.com" {
        type master;
        file "/etc/bind/db.falcot.com";
        allow-query { any; };
        allow-transfer {
                195.20.105.149/32 ; // ns0.xname.org
                193.23.158.13/32 ; // ns1.xname.org
        };
};

zone "internal.falcot.com" {
        type master;
        file "/etc/bind/db.internal.falcot.com";
        allow-query { 192.168.0.0/16; };
};

zone "168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192.168";
        allow-query { 192.168.0.0/16; };
};

مثال 10.13. گزیده‌ای از /etc/bind/db.falcot.com

; falcot.com Zone 
; admin.falcot.com. => zone contact: admin@falcot.com
$TTL    604800
@       IN      SOA     falcot.com. admin.falcot.com. (
                        20040121        ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
; The @ refers to the zone name ("falcot.com" here)
; or to $ORIGIN if that directive has been used
;
@       IN      NS      ns
@       IN      NS      ns0.xname.org.

internal IN      NS      192.168.0.2

@       IN      A       212.94.201.10
@       IN      MX      5 mail
@       IN      MX      10 mail2

ns      IN      A       212.94.201.10
mail    IN      A       212.94.201.10
mail2   IN      A       212.94.201.11
www     IN      A       212.94.201.11

dns     IN      CNAME   ns

مثال 10.14. گزیده‌ای از /etc/bind/db.192.168

; Reverse zone for 192.168.0.0/16
; admin.falcot.com. => zone contact: admin@falcot.com
$TTL    604800
@       IN      SOA     ns.internal.falcot.com. admin.falcot.com. (
                        20040121        ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL

        IN      NS      ns.internal.falcot.com.

; 192.168.0.1 -> arrakis
1.0     IN      PTR     arrakis.internal.falcot.com.
; 192.168.0.2 -> neptune
2.0     IN      PTR     neptune.internal.falcot.com.

; 192.168.3.1 -> pau
1.3     IN      PTR     pau.internal.falcot.com.