برای کمک به شما در آشنایی با این مجموعه نرمافزاری محبوب DNS، این مقاله نحوه نصب و پیکربندی یک سرور خصوصی BIND DNS در اوبونتو ۲۲.۰۴ را توضیح میدهد.
BIND DNS چیست؟ #
BIND یک مجموعه نرمافزاری متنباز، مقیاسپذیر و با امکانات کامل برای سرویسهای DNS است. نام BIND از این واقعیت گرفته شده است که در ابتدا در دانشگاه کالیفرنیا برکلی توسعه داده شده است. امروزه، BIND توسط ISC (کنسرسیوم سیستمهای اینترنتی) نگهداری میشود و میتوانید نسخههای امضا شده BIND 9 را از صفحه دانلود ISC دانلود کنید .
پیادهسازی فعلی BIND 9. در حالی که پروژه BIND 10 وجود داشت، ISC توسعه آن را در سال ۲۰۱۴ متوقف کرد . امروزه، پروژه BIND 10 به پروژه سرور DNS Bundy تبدیل شده است که در حال حاضر در حالت غیرفعال قرار دارد .
اکثر سرورهای DNS در اینترنت از BIND 9 استفاده میکنند و این یک جزء اصلی در محیطهای *nix است. برای مدیران لینوکس، BIND 9 یک راهحل DNS قوی برای موارد استفاده متعدد است و شامل پشتیبانی از TSIG (امضای تراکنش)، DNSSEC و IPv6 میشود .
نحوه نصب و پیکربندی سرور DNS خصوصی BIND در اوبونتو ۲۲.۰۴ #
حالا بیایید به پیکربندی یک سرور DNS خصوصی BIND در اوبونتو ۲۲.۰۴ بپردازیم. برای مثال، ما یک سرور DNS و دو کلاینت را پیکربندی خواهیم کرد.
برای مثالهایمان، فرض میکنیم:
- زیرشبکه LAN ما ۱۹۲.۰.۲.۰/۲۴ است
- آدرس IP سرور DNS ما
bindserver۱۹۲.۰.۲.۲ است. - آدرس IP اولین کلاینت ما
client1۱۹۲.۰.۲.۳ است. - آدرس IP کلاینت دوم ما
client2۱۹۲.۰.۲.۴ است. - دامنه ما
novinhost.example
مقادیر مثال ما را تغییر دهید تا با مقادیر محیط آزمایش شما مطابقت داشته باشد.
توجه داشته باشید که پیکربندی ما برای شبکههای آزمایشی طراحی شده است. قبل از استقرار در محیط عملیاتی، هرگونه پیکربندی را به درستی آزمایش و ایمن کنید تا نیازهای شما را برآورده سازد.
پیش نیازها #
قبل از شروع، به موارد زیر نیاز دارید:
- دسترسی به ترمینال سه سیستم لینوکس در یک شبکه محلی (LAN) که میتوانید برای آزمایش از آنها استفاده کنید. ما از اوبونتو ۲۲.۰۴ LTS استفاده خواهیم کرد .
- امتیازات روت/sudo
آخرین بهروزرسانیها را نصب کنید #
apt updateقبل از نصب هر بستهای، ابتدا آخرین بهروزرسانیها را با استفاده از دستورات and روی هر سه سیستم دانلود و نصب خواهیم کرد apt upgrade:
apt update -y && apt upgrade -y
توجه داشته باشید که این &&تضمین میکند که apt upgradeفقط در صورت apt updateموفقیتآمیز بودن اجرا میشود.
نصب BIND 9 روی سرور DNS #
در مرحله بعد، ما قصد داریم سه بسته را روی سرور DNS خود نصب کنیم:
bind9– نرمافزار سرور DNS بایند ۹.bind9utils– ابزارهایی که کار با BIND 9 را آسانتر میکنند.bind9-doc– یک بسته مستندات برای BIND 9.
برای نصب آن بستهها، از این دستور استفاده کنید:
apt install bind9 bind9utils bind9-doc -y
پس از نصب، سرویس BIND 9 باید در حال اجرا باشد. میتوانید وضعیت را با این دستور بررسی کنید:
systemctl status bind9
شما باید خروجی مشابه زیر را ببینید:

فایل named.conf.options را ویرایش کنید #
این named.confفایل، فایل پیکربندی اصلی BIND 9 است. این فایل اصلی شامل مرجعی است /etc/bind/named.conf.optionsکه میتوانیم گزینههای مورد نیاز برای پیکربندی خود را در آن مشخص کنیم. ما چهار تغییر در این /etc/bind/named.conf.optionsفایل ایجاد خواهیم کرد:
- یک
aclدستورالعمل که شبکه محلی (LAN) ما را تعریف میکند. - دستورالعملی
allow-queryکه مشخص میکند کدام آدرسهای IP میتوانند درخواستهای DNS را به سرور ارسال کنند. - دستورالعملی
forwardersکه تعریف میکند این سرور، کوئریهای بازگشتی را به کدام سرورهای DNS ارسال کند. - دستورالعملی
recursionکه امکان پرسوجوهای بازگشتی DNS به سرور را فراهم میکند.
برای ایجاد این تغییرات، فایلها را /etc/bind/named.conf.optionsدر یک ویرایشگر متن (مثلاً nanoیا ) باز کنید و آنها را طوری تغییر دهید که شبیه به این باشند:vim
// allow only LAN traffic from 192.168.2.0-192.168.2.255
acl LAN {
۱۹۲.۱۶۸.۲.۰/۲۴;
};
options {
directory "/var/cache/bind"; // default directory
allow-query { localhost; LAN; }; // allow queries from localhost and 192.168.2.0-192.168.2.255
forwarders { 1.1.1.1; }; // use CloudFlare 1.1.1.1 DNS as a forwarder
recursion yes; // allow recursive queries
};
پس از اعمال تغییرات، با استفاده از دستور زیر، سینتکس فایل را بررسی کنید named-checkconf:
named-checkconf /etc/bind/named.conf.options
اگر سینتکس (نحوه نگارش) درست باشد، دستور نباید هیچ خروجی مانند این را برگرداند:![]()
اگر میخواهید خروجی مفصلتری را در یک تست موفق ببینید، -pسوئیچ را به دستور ( named-checkconf -p) اضافه کنید.
فایل named.conf.local را ویرایش کنید. #
این named.conf.localمعمولاً برای تعریف مناطق DNS محلی برای یک دامنه خصوصی استفاده میشود. ما این فایل را بهروزرسانی خواهیم کرد تا مناطق DNS رو به جلو و معکوس ما را نیز شامل شود.
برای ایجاد تغییرات، آن را /etc/bind/named.conf.localدر یک ویرایشگر متن (مثلاً nanoیا vim) باز کنید و این خطوط را اضافه کنید:
zone "novin.example" IN { \\ define the forward zone
type master;
file "/etc/bind/zones/novin.example";
};
zone "0.116.10.in-addr.arpa" IN { \\ define the reverse zone
type master;
file "/etc/bind/zones/novin.example.rev";
};
پس از اعمال تغییرات، با استفاده از دستور زیر، سینتکس فایل را بررسی کنید named-checkconf:
named-checkconf /etc/bind/named.conf.options
یک دایرکتوری برای فایلهای منطقه خود ایجاد کنید #
در مرحله بعد، یک دایرکتوری برای ذخیره فایلهای منطقهای که در مرحله قبل مشخص کردیم، ایجاد خواهیم کرد.
mkdir /etc/bind/zones
فایل منطقه فوروارد را ایجاد کنید #
حالا، یک فایل منطقه مربوطه ایجاد میکنیم /etc/bind/zones/novin.example. فایل منطقه رو به جلو به سرور DNS Bind اجازه میدهد تا نامها (مانند bindserver.novin.example) را به آدرسهای IP (مانند ۱۹۲.۱۶۸.۲.۲) تبدیل کند.
ابتدا، فایل پیشفرض db.local zone را در مسیر زیر کپی کنید /etc/bind/zones/novin.example:
cp /etc/bind/db.local /etc/bind/zones/novin.example
/etc/bind/zones/novin.exampleدر یک ویرایشگر متن (مثلاً nanoیا ) باز کنید vimو تغییرات ذکر شده در نظرات زیر را اعمال کنید:
$TTL 604800
; SOA record with MNAME and RNAME updated
@ IN SOA novin.example. root.novin.example. (
۳ ; Serial Note: increment after each change
۶۰۴۸۰۰ ; Refresh
۸۶۴۰۰ ; Retry
۲۴۱۹۲۰۰ ; Expire
۶۰۴۸۰۰ ) ; Negative Cache TTL
; Name server record
@ IN NS bindserver.novin.example.
; A record for name server
bindserver IN A 192.168.2.2
; A record for clients
client1 IN A 192.168.2.3
client2 IN A 192.168.2.4
پس از اتمام تغییرات، از named-checkzoneدستور زیر برای بررسی پیکربندی استفاده کنید:
named-checkzone novin.example /etc/bind/zones/novin.example
شما باید خروجی مشابه زیر را ببینید:

ایجاد فایل زون معکوس #
اکنون، یک فایل زون معکوس مربوطه ایجاد خواهیم کرد /etc/bind/zones/novin.example.rev. فایل زون معکوس به سرور DNS Bind اجازه میدهد تا آدرسهای IP (مانند ۱۹۲.۱۶۸.۲.۲) را به نامها (مانند bindserver.novin.example) تبدیل کند.
ابتدا، فایل پیشفرض db.local zone را کپی کنید./etc/bind/zones/novin.example.rev
cp /etc/bind/db.127 /etc/bind/zones/novin.example.rev
/etc/bind/zones/novin.example.revدر یک ویرایشگر متن (مثلاً nanoیا ) باز کنید vimو تغییرات ذکر شده در نظرات زیر را اعمال کنید:
$TTL 604800
; SOA record with MNAME and RNAME updated
@ IN SOA novin.example. root.novin.example. (
۲ ; Serial Note: increment after each change
۶۰۴۸۰۰ ; Refresh
۸۶۴۰۰ ; Retry
۲۴۱۹۲۰۰ ; Expire
۶۰۴۸۰۰ ) ; Negative Cache TTL
; Name server record
@ IN NS bindserver.novin.example.
; A record for name server
bindserver IN A 10.116.0.2
; PTR record for name server
۲ IN PTR bindserver.novin.example
; PTR record for clients
۳ IN PTR client1.novin.example
۴ IN PTR client2.novin.example
پس از اتمام تغییرات، از named-checkzoneدستور زیر برای بررسی پیکربندی استفاده کنید:
named-checkzone novin.example /etc/bind/zones/novin.example.rev
شما باید خروجی مشابه زیر را ببینید:

بایند ۹ را مجدداً راهاندازی کنید #
برای اینکه سرور DNS BIND از پیکربندی جدید استفاده کند، سرویس BIND 9 را با این دستور مجدداً راهاندازی کنید:
🇦🇪 سرور مجازی امارات 🇦🇪
systemctl restart bind9
پیکربندی کلاینتها برای استفاده از پیکربندی #
پس از پیکربندی سرور DNS خصوصی Bind، میتوانیم کلاینتها را برای استفاده از آن پیکربندی کنیم. این مراحل را برای هر دو دنبال client1کنید client2.
ابتدا، با استفاده از این دستور بررسی کنید که از کدام رابط برای اتصال LAN استفاده میشود:
ip -brief addr show to 192.168.2.0/24
رابطی که ما نیاز داریم اولین مقداری خواهد بود که نمایش داده میشود. برای مثال، eth1در خروجی زیر:
eth1 UP 10.116.2.0/24
در مرحله بعد، از یک ویرایشگر متن (مثلاً nanoیا vi) برای ویرایش netplanفایل YAML خود استفاده کنید تا پیکربندی DNS که به سرور DNS خصوصی Bind اشاره میکند را در آن بگنجانید. معمولاً netplanفایلهای پیکربندی در مسیر . ذخیره میشوند /etc/netplan. در صورت تمایل میتوانید یک فایل پیکربندی جدید نیز ایجاد کنید.
YAML باید شبیه به این باشد:
eth1:
addresses:
- ۱۹۲.۱۶۸.۰.۳/۲۴ # The IP address of client1
match:
macaddress: 00:53:00:AB:CD:EF
mtu: 1500
dhcp4-overrides:
use-dns: no # override DHCP supplied DNS if applicable
nameservers:
addresses:
- ۱۹۲.۱۶۸.۲.۲ # IP for name server
search: [ novin.example ] # The private DNS zone
set-name: eth1
در اینجا مثالی از یک netplanفایل YAML کامل برای یک کلاینت اوبونتو با دو رابط شبکه مشخص شده ( eth0و eth1) آورده شده است:

پس از اتمام پیکربندی، آن را با این دستور آزمایش کنید:
netplan try
ENTERبرای پذیرش تغییرات، کلید زیر را فشار دهید :

برای جزئیات بیشتر در مورد نحوه استفاده ، مستندات راnetplan بررسی کنید .
پیکربندی کلاینت را آزمایش کنید #
پس از اتمام پیکربندی، client1برای تبدیل نام در شبکه محلی (LAN) client2استفاده خواهد شد .bindserver
برای تأیید صحت عملکرد پیکربندی، از nslookupدستور زیر برای جستجوی نام دامنههای ما در … client1و … استفاده کنید client2. هر ۶ دستور زیر:
nslookup client1nslookup client2nslookup bindservernslookup client1.novin.examplenslookup client2.novin.examplenslookup bindserver.novin.example
باید به درستی حل شود و خروجی مشابه زیر را ارائه دهد:
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: client1.novin.example
Address: 192.168.2.3
علاوه بر این، اکنون میتوانید از نامها (مانند client1) و FQDNها (مانند client1.novin.example) برای ارتباط بین کلاینتها استفاده کنید. برای مثال، اگر هر دو کلاینت به پاسخ دهند ping، میتوانید از نام یا FQDN آنها برای بررسی اتصال استفاده کنید.
نتیجه گیری #
همین! حالا شما اصول اولیه نحوه کار با BIND 9 در اوبونتو ۲۲.۰۴ را میدانید. برای آشنایی عمیقتر با مجموعه نرمافزاری BIND DNS، توصیه میکنیم راهنمای مرجع BIND 9 Administrator را مطالعه کنید.
