پرش به محتوا

راه‌اندازی DNS داخلی با BIND9

یک سرور DNS برای شبکه‌ی داخلی بسازید که نام‌های داخلی را پاسخ دهد و بقیه‌ی درخواست‌ها را به DNS بالادستی بفرستد.

Ubuntu 24.04 LTSسطح: متوسطبه‌روزرسانی: ۱۶ آبان ۱۴۰۵

در این آموزش سرور 192.168.10.53 برای دامنه‌ی داخلی corp.lan پاسخ می‌دهد و درخواست‌های اینترنتی را به سرورهای بالادستی ارسال (forward) می‌کند.

۱. نصب

bash
sudo apt update
sudo apt install -y bind9 bind9-utils

۲. تنظیمات کلی

bash
sudo nano /etc/bind/named.conf.options
ini
acl internal { 127.0.0.1; 192.168.10.0/24; };

options {
    directory "/var/cache/bind";
    recursion yes;
    allow-query { internal; };
    allow-recursion { internal; };
    forwarders { 1.1.1.1; 9.9.9.9; };
    dnssec-validation auto;
    listen-on { 127.0.0.1; 192.168.10.53; };
    listen-on-v6 { none; };
};
مهم: allow-recursion را حتماً به شبکه‌ی داخلی محدود کنید. DNS بازِ عمومی (open resolver) در حملات DDoS سوءاستفاده می‌شود.

۳. تعریف zone

bash
sudo nano /etc/bind/named.conf.local
ini
zone "corp.lan" {
    type primary;
    file "/etc/bind/db.corp.lan";
};
bash
sudo nano /etc/bind/db.corp.lan
ini
$TTL 3600
@   IN SOA ns1.corp.lan. admin.corp.lan. (
        2026110701 ; serial
        3600       ; refresh
        900        ; retry
        604800     ; expire
        300 )      ; negative TTL
    IN NS  ns1.corp.lan.
ns1 IN A   192.168.10.53
dc01 IN A  192.168.10.10
files IN A 192.168.10.20
www IN CNAME files

هر بار که فایل zone را تغییر می‌دهید، عدد serial را یکی زیاد کنید.

۴. بررسی و اعمال

bash
sudo named-checkconf
sudo named-checkzone corp.lan /etc/bind/db.corp.lan
sudo systemctl restart named
sudo ufw allow from 192.168.10.0/24 to any port 53

۵. آزمایش

bash
dig @192.168.10.53 dc01.corp.lan +short
dig @192.168.10.53 google.com +short