آموزش نصب DNS Server در لینوکس (گامبهگام)
در این مقاله میخوانید
نصب DNS در لینوکس مثل یک نقشه گوگلمپ یا GPS روی سایتتان است که به کاربران کمک میکند بهراحتی به وبسایتتان دسترسی پیدا کنند؛ بدون اینکه درگیر پیچوخم دامنه و آیپی شوند. DNS مثل یک مترجم آدرس دامنه شما را به آیپی عددی تبدیل کرده تا آن را برای مرورگر قابلفهم کند. بههمیندلیل وجود آن روی سرورتان ضروری است. اگر قصد نصب و راه اندازی DNS Server در لینوکس را دارید، جای درستی آمدید. این مقاله از بلاگ پارس پک، گامبهگام مراحل نصب DNS در لینوکس CentOS و اوبونتو را به شما نشان میدهد. چه یک مبتدی تازهکار بوده یا یک کاربر کارکشته لینوکس هستید، خواندن این مقاله از آموزش لینوکس بلاگ پارس پک به شما کمک خواهد کرد تا بهراحتی DNS را روی توزیع موردنظرتان نصب کنید.
نقش DNS Server در لینوکس چیست؟
راهاندازی DNS Server در لینوکس مانند راهاندازی یک کتابخانه دیجیتال است. همانطور که کتابخانهای برای نگهداری کتابها وجود دارد، DNS Server برای نگهداری اطلاعات DNS در سرور ایجاد میشود.
DNS Server نقش کتابدار کتابخانه را دارد که به درخواستها برای پیدا کردن اطلاعات مورد نیاز کاربران پاسخ میدهد. همانطور که کتابدار کتاب مناسب را به خواننده معرفی میکند، DNS Server نیز آدرس IP مناسب را به کاربر ارائه میدهد.
راهاندازی و پیکربندی DNS Server مانند طبقهبندی و فهرستنویسی کتابها در کتابخانه است. همانطور که کتابها به دستههای موضوعی تقسیم میشوند، دامنههای مختلف نیز در DNS ثبت و پیکربندی میشوند.
در مجموع، DNS Server مانند کتابدار یک کتابخانه دیجیتال است که اطلاعات لازم برای ترجمه آدرسها را فراهم میکند و به کاربران کمک میکند تا به محتوای مورد نظرشان دسترسی پیدا کنند.
پیشنیاز لازم برای نصب و تنظیم DNS در لینوکس
DNS سرور یک سرویس ضروری برای هر شبکه کامپیوتری است. این سرویس نام دامنه را به آدرس IP تبدیل میکند؛ درنتیجه ازطریق آن میتوانیم به وبسایتها دسترسی پیدا کنیم.
پیش از نصب DNS در لینوکس نیاز است مقدمات زیر را فراهم کنید:
- مطمئن شوید سرور لینوکس شما حداقل ۲ گیگابایت رم و ۲۰ گیگابایت فضای ذخیرهسازی دارد.
- برای اینکه بتوانید از DNS سرورتان در خارج از شبکه لوکال استفاده کنید، نیاز است آدرس IP سرور DNS را در رکوردهای A نام دامنه قرار دهید.
- برای محافظت از DNS سرور در برابر حملات، بهتر است از یک گواهینامه SSL/TLS استفاده کنید.
- برای انجام تغییرات لازم، نیاز به دسترسی روت سرور دارید.
نصب DNS در لینوکس، مثل اضافه کردن نقشه راه به سایتتان است. طوریکه همیشه بدون نگرانی از فراموشی آدرس یا احتمال گمشدنتان در صفحات وب بهراحتی از هرجایی به آن دست پیدا کنید.
نصب DNS در لینوکس اوبونتو با ۵ گام ساده
برای نصب DNS در اوبونتو کافیاست اقدامات زیر را انجام دهید. ۵ گام ساده پیشرویتان است که بهراحتی میتوانید از پس آن برآیید:
گام اول: نصب و راهاندازی بسته نصبی BIND
در اولین مرحله از راه اندازی DNS Server در لینوکس، قصد نصب پکیج BIND را داریم. این پکیج مخفف Berkeley Internet Naming Daemon است. برنامه کاربردی BIND برای نگهداری Name Server در لینوکس و نصب DNS به کار میرود. در اولین قدم، ازطریق دستور زیر این بسته را نصب میکنیم:
sudo apt install bind9
یک بسته نصبی مفید دیگر برای تست و عیبیابی DNS، ابزار dnsutils است. در نصب DNS در اوبونتو این ابزار بهصورت خودکار نصب میشود. برای اینکه ببینیم dnsutils قبلاً نصب شده یا نه، کافیاست با وارد کردن دستور زیر خیال خودمان را راحت کنیم:
sudo apt install dnsutils
BIND9 یک سرویس DNS است که به روشهای مختلفی پیکربندی میشود. برخی از رایجترین روشها عبارتند از:
Name Server کش (Caching Nameserver): در این روش، سرور پاسخ هر درخواستی را ذخیره میکند و زمانی که مجدد درخواست شود، پاسخ را از حافظه کش خود ارائه میدهد. درواقع، مثل یک دفترچه تلفن برای وبسایت عمل کرده و به شما کمک میکند آدرس IP هر سایت را بهسرعت پیدا کنید.
- سرور اصلی (Primary Server): این سرور، مثل یک بانک اطلاعاتی عمل میکند که اطلاعات مربوط به یک دامنه را در خود ذخیره میکند. هنگام فراخوانی دامنه، دادهها را از فایل ذخیره خود میخواند.
- سرور ثانویه (Secondary Server): این سرور، مثل یک کپی از بانک اطلاعاتی است که داده را از یک Name Server معتبر دیگر دریافت میکند. درصورت بروز مشکل در سرور اصلی، میتوانید از این گزینه استفاده کنید.
اکنون قصد داریم پیکربندی هر سه گزینه را در نصب DNS در اوبونتو انجام دهیم.
گام دوم: پیکربندی BIND9 به عنوان یک سرور DNS کش
برای پیکربندی سرور DNS از طریق ترمینال اوبونتو میتوانید به آدرس زیر بروید:
/etc/bind/named.conf.options
آن را بهکمک ویرایشگر nano با دستور باز کنید:
sudo nano /etc/bind/named.conf.options
اکنون، بهدنبال خطوط زیر باشید. سپس کامنت آنها را بردارید:
forwarders { 1.2.3.4; 5.6.7.8; };
در دستور بالا، بهجای 1.2.3.4 و 5.6.7.8 آدرس IP سرور DNS خود را قرار دهید. اکنون فایل را ذخیره کنید. در آخر، سرویس BIND9 را با دستور زیر دوباره راه اندازی کنید:
sudo systemctl restart bind9.service
تا این مرحله از آموزش نصب DNS در لینوکس، موفق شدید سرور DNS کش را باموفقیت پیکربندی کنید.
آیا تا به حال به این فکر کردهاید که وقتی به یک آدرس اینترنتی مراجعه میکنید، چگونه کامپیوتر شما میداند که باید چه صفحهای را باز کند؟ پاسخ این سؤالات در سیستم نام دامنه نهفته است. در مقاله زیر DNS سرور را به زبان ساده بشناسید.
گام سوم: پیکربندی BIND9 به عنوان یک سرور DNS اصلی
پس از نصب DNS در لینوکس، میخواهیم پیکربندی BIND9 را بهعنوان یک سرور DNS اصلی برای دامنهای مانند example.com انجام دهیم. فقط توجه داشته باشید بهجای example نام دامنهتان را وارد کنید.
فایل پیکربندی BIND9 را با دستور زیر باز کنید.
sudo nano /etc/bind/named.conf.local
در مرحله دوم راه اندازی DNS Server در لینوکس، با وارد کردن متن زیر یک DNS Zone برای دامنه ایجاد کنید.
zone "example.com" { type master; file "/etc/bind/db.example.com"; };
سپس با دستور زیر، یک فایل برای DNS Zone خود تعریف کنید:
sudo cp /etc/bind/db.local /etc/bind/db.example.com
اکنون فایل را بهصورت زیر ویرایش کنید:
- localhost را به FQDN سرور خود تغییر دهید.
- 127.0.0.1 را به آدرس IP سرور خود تغییر دهید.
- root.localhost را به یک آدرس ایمیل معتبر تغییر دهید.
- یک رکورد A برای دامنه پایه example.com ایجاد کنید.
- یک رکورد A برای سرور نام خود ns.example.com ایجاد کنید.
بهطور کلی، با انجام تغییرات بالا خروجی شما شبیه به دستور زیر خواهد بود:
; ; BIND data file for example.com ; $TTL 604800 @ IN SOA example.com. root.example.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL @ IN NS ns.example.com. @ IN A 192.168.1.10 @ IN AAAA ::1 ns IN A 192.168.1.10
درنهایت، پس از ایجاد تغییرات با استفاده از دستور زیر سرویس bind9 را ریاستارت کنید.
sudo systemctl restart bind9.service
در پنجمین مرحله از گام سوم راه اندازی DNS Server در لینوکس، برای ارتباط دامنه با برخی از آدرس آیپیها نیاز است File Zone معکوس را تنظیم کنید. برای این کار فایل /etc/bind/named.conf.local را باز کنید.
سپس متن زیر را به آن اضافه کنید:
zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192"; };
بهجای 192.168.1 سه اکتت اول شبکه خود قرار دهید. اکنون با استفاده از دستور زیر یک File Zone معکوس ایجاد کنید:
sudo cp /etc/bind/db.127 /etc/bind/db.192
اکنون فایل را ویرایش کنید. باتوجهبه موارد زیر آن را تغییر دهید:
- root.localhost را به ns. تغییر دهید.
- برای هر رکورد A در فایل زون اصلی، یک رکورد PTR در فایل زون معکوس ایجاد کنید.
- هر بار تغییراتی در فایل زون معکوس ایجاد کردید، نیاز است Serial Number را افزایش دهید.
خروجی شما میبایست شبیه فایل زیر باشد:
; ; BIND reverse data file for local 192.168.1.XXX net ; $TTL 604800 @ IN SOA ns.example.com. root.example.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns. 10 IN PTR ns.example.com.
درنهایت، با دستور زیر، سرور را ریاستارت کنید.
sudo systemctl restart bind9.service
گام چهارم: پیکربندی BIND9 به عنوان یک سرور DNS ثانویه
پس از نصب DNS در لینوکس و پیکربندی آن در سرور اصلی، بهتر است برای روز مبادا هم که شده یک سرور ثانویه تنظیم کنید تا در شرایطی که سرور اصلی دردسترس نبود، درخواستهای DNS بدون پاسخ باقی نماند. برای این کار بهصورت زیر عمل میکنیم:
ابتدا به سرور اصلی امکان انتقال زون را بدهید. برای این کار، گزینه allow-transfer را در زون Forward و Reverse در فایل /etc/bind/named.conf.local بهصورت زیر اضافه کنید:
zone "example.com" { type master; file "/etc/bind/db.example.com"; allow-transfer { 192.168.1.11; }; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192"; allow-transfer { 192.168.1.11; }; };
بهجای 192.168.1.11 آیپی سرور ثانویه خود را اضافه کنید. سپس برای ریاستارت مجدد BIND9 دستور زیر را وارد کنید:
sudo systemctl restart bind9.service
اکنون قصد داریم تغییرات لازم را به همان ترتیبی که روی سرور اصلی ایجاد کردیم، در این سرور نیز اعمال کنیم. این کار را با ویرایش فایل /etc/bind/named.conf.local آغاز کرده و موارد زیر را به زون Forward و Reverse اضافه کنید:
zone "example.com" { type secondary; file "db.example.com"; masters { 192.168.1.10; }; }; zone "1.168.192.in-addr.arpa" { type secondary; file "db.192"; masters { 192.168.1.10; }; };
پس از انجام این مراحل، سرور ثانویه شما پیکربندی شده است؛ درنتیجه خیالتان راحت است درصورت در دسترس نبودن سرور اصلی، کوئریهای DNS بیپاسخ باقی نمیماند. با این کار، دامنه شما همیشه دردسترس خواهد بود.
اگر میخواهید DNS دامنههای ملی و بینالمللی خود را تنظیم کنید، مقاله زیر را از دست ندهید.
گام پنجم: تست درست بودن پیکربندی BIND9
در ابتدای نصب و تنظیم DNS در لینوکس، با نصب dnsutils کارمان برای تست راحت شده است. با وارد کردن دستور زیر بررسی میکنیم آیا BIND9 کارش را بهدرستی انجام داده است یا خیر:
dig -x 127.0.0.1
پس از وارد کردن دستور زیر، خروجی مانند دستور زیر را خواهید دید:
;; Query time: 1 msec ;; SERVER: 192.168.1.10#53(192.168.1.10)
اگر BIND9 را بهعنوان Caching Nameserver پیکربندی کردید، آدرس IP برای نام دامنه خود را با استفاده از دستور dig بهصورت زیر بررسی کنید.
dig www.example.com
اگر خروجی دستور dig آدرس IP صحیح برای نام دامنه شما را نشان داد، DNS سرور شما به درستی پیکربندی شده است.
نصب DNS در لینوکس CentOS با ۸ گام ساده
برای نصب و تنظیم DNS در لینوکس و توزیع CentOS ما از تنظیمات زیر استفاده کردیم. شما میتوانید براساس اطلاعات سرور خودتان آن را تغییر دهید:
- آدرس IP: 192.168.1.100
- شبکه محلی: 192.168.1.0/24
- نام میزبان: ns1.parspack.local
گام اول: بهروزرسانی تمام بستههای نصبی
با استفاده از دستور زیر، تمام بستههای سیستمعامل را بهروز میکنیم:
yum update -y
گام دوم: نصب و اجرای BIND
در این مرحله از نصب DNS در لینوکس، قصد نصب BIND را داریم. بهصورت پیشفرض این بسته روی CentOS 8 قرار دارد. بااینحال، با استفاده از دستور زیر میتوانید آن را نصب کنید:
yun install bind bind-utils -y
پس از نصب BIND، آن را اجرا و فعال کنید:
systemctl start named systemctl enable named
گام سوم: پیکربندی BIND برای DNS سرور
بهطور پیشفرض، BIND فقط در لوکال هاست فعال است؛ بنابراین نیاز داریم آن را برای کل شبکه فعال کنیم. برای این کار، میبایست فایل /etc/named.conf را از طریق دستور زیر ویرایش کنیم:
nano /etc/named.conf
اکنون، دو خط زیر را پیدا کنید:
//listen-on port 53 { 127.0.0.1; }; //listen-on-v6 port 53 { ::1; };
بخش // ابتدای آن ها را حذف کنید تا از حالت comment خارج شوند.
خط زیر را برای مجوز درخواست به شبکه لوکال تغییر دهید:
allow-query { localhost;192.168.1.0/24; };
فایل را ذخیره کرده و آن را ببندید.
گام چهارم: ایجاد DNS زون Forward و Reverse
در گام چهارم از نصب DNS در لینوکس و توزیع CentOS قصد ایجاد DNS Zone را داریم. Forward Zone برای تبدیل اسم هاست به آدرس IP است؛ درحالیکه Reverse Zone برای تبدیل آدرس IP به اسم هاست مورداستفاده قرار میگیرد. بهطورکلی، تمام کوئریهای DNS شامل کوئریهای Forward هستند. شما میتوانید هرکدام را در فایل /etc/named.conf تعریف کنید. برای این کار، نیاز است با استفاده از دستور زیر، این فایل را ویرایش کنید:
nano /etc/named.conf
سپس دستور زیر را به انتهای فایل اضافه کنید (در اینجا parspack.local مثال زده شده است):
//Forward Zone zone "parspack.local" IN { type master; file "parspack.local.db"; allow-update { none; }; }; //Reverse Zone zone "1.168.192.in-addr.arpa" IN { type master; file "192.168.1.db"; allow-update { none; }; };
سپس فایل را ذخیره کرده و آن را ببندید.
گام پنجم: ایجاد فایل زون Forward و Reverse
در این مرحله از نصب DNS در لینوکس CentOS، نیاز است فایل Forward و Reverse زون DNS را با دستور زیر ایجاد کنیم:
nano /var/named/parspack.local.db
اکنون، دستور زیر را وارد کنید:
$TTL 86400 @ IN SOA ns1.parspack.local. root.parspackhosting.local. ( 3 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) ;Name Server Information @ IN NS ns1.parspack.local. ;IP address of Name Server ns1 IN A 192.168.1.100 ;A - Record HostName To Ip Address www IN A 192.168.1.101 ;CNAME record ftp IN CNAME www.parspack.local.
توجه داشته باشید بهجای نام دامنه، آدرس لوکال هاست و آدرس آیپی که در دستور بالا وجود دارد، مشخصات سرور خودتان را وارد کنید. سپس فایل را ذخیره کرده و ببندید.
اکنون یک فایل Reverse Zone با دستور زیر ایجاد کنید:
nano /var/named/192.168.1.db
متن زیر را وارد کنید:
$TTL 86400 @ IN SOA ns1.parspack.local. root.parspack.local. ( 3 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) ;Name Server Information @ IN NS ns1.parspack.local. ;Reverse lookup for Name Server 100 IN PTR ns1.parspack.local. ;PTR Record IP address to HostName 101 IN PTR www.parspack.local.
فایل را ذخیره کرده و ببندید.
گام ششم: بررسی تنظیمات DNS
پس از ایجاد فایلهای Zone نیاز است تنظیمات فایلها را بررسی کنید. در ابتدا، با دستور زیر سراغ بررسی فایل تنظیمات اصلی میرویم:
named-checkconf /etc/named.conf
اگر همهچیز در نصب DNS Server در لینوکس بهخوبی پیش رفته باشد، اروری مشاهده نخواهید کرد. سپس با استفاده از دستور زیر وضعیت فایل Forward Zone را بررسی میکنیم:
named-checkzone parspackhosting.local /var/named/parspackhosting.local.db
با وارد کردن دستور بالا، میبایست خروجی مانند زیر را مشاهده کنید:
zone parspackhosting.local/IN: loaded serial 3 OK
اکنون، سراغ بررسی فایل Reverse Zone میرویم:
named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.db
با وارد کردن دستور بالا، خروجی مشابه دستور زیر را خواهید دید:
zone 1.168.192.in-addr.arpa/IN: loaded serial 3 OK
درنهایت، با استفاده از دستور زیر سرویس BIND را ریاستارت میکنیم:
systemctl restart named
گام هفتم: تنظیمات فایروال
در این مرحله از نصب DNS در لینوکس CentOS نیاز است نقش فایروال برای پورت 53 ایجاد کنید تا امکان کوئریهای DNS را از کامپیوتر کلاینت فراهم کند. این کار را با وارد کردن دستور زیر انجام میدهیم:
firewall-cmd --permanent --add-port=53/udp
سپس باکمک دستور زیر سرویس فایروال را دوباره بارگذاری میکنیم تا تغییرات اعمال شود:
firewall-cmd --reload
گام هشتم: بررسی DNS سرور
تا این مرحله اگر همه چیز بهخوبی پیش رفته باشد، موفق به نصب DNS در لینوکس شدید. اکنون میخواهیم بررسی کنیم آیا همهچیز بهخوبی کار میکند یا خیر. برای این کار، نیاز است مجدد با استفاده از دستور زیر فایل etc/resolv.conf را ویرایش کنیم:
nano /etc/resolv.conf
به این فایل، آدرس آیپی DNS سرور را اضافه میکنیم:
nameserver 192.168.1.100
سپس فایل را ذخیره کرده و میبندیم. اکنون با استفاده از دستور dig وضعیت تنظیمات را بررسی خواهیم کرد:
dig www.parspack.local یا dig ns1.parspack.local
اگر همهچیز مرتب باشد، میبایست خروجی زیر را تحویل بگیرید:
; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> www.parspackhosting.local ;; global options: +cmd ;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52518 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: cd9d365f1f02621aa9c8753c5fd47154db8cae737b9ca09f (good) ;; QUESTION SECTION: ;www.parspackhosting.local. IN A ;; ANSWER SECTION: www.parspackhosting.local. 86400 IN A 192.168.1.101 ;; AUTHORITY SECTION: parspackhosting.local. 86400 IN NS ns1.parspackhosting.local. ;; ADDITIONAL SECTION: ns1.parspackhosting.local. 86400 IN A 192.168.1.100 ;; Query time: 0 msec ;; SERVER: 192.168.1.100#53(192.168.1.100) ;; WHEN: Sat Dec 12 02:29:24 EST 2020 ;; MSG SIZE rcvd: 128
تبریک میگوییم! موفق شدید با ۸ گام نسبت به نصب DNS در لینوکس و توزیع CentOS اقدام کنید.
راهنمای تصویری و گامبهگام مدیریت نیمسرورها در Cloudflare را در مقاله زیر بخوانید.
جمعبندی
نصب DNS در لینوکس مانند این است که یک GPS شخصی روی سایتتان کار بگذارید تا بهراحتی توسط کاربران قابل دسترسی باشد. در این مقاله از آموزش سیستم عامل بلاگ پارس پک، نحوه نصب DNS Server در لینوکس برای توزیعهای اوبونتو و CentOS را بهصورت گامبهگام آموزش دادیم. اگر برای نصب و تنظیم DNS در لینوکس نیاز به راهنمایی بیشتر دارید، همین حالا میتوانید از مشاوره رایگان کارشناسان پارس پک استفاده کنید. همچنین میتوانید سوالاتتان را در انتهای همین مقاله کامنت کنید تا در سریعترین زمان ممکن مشتاقانه پاسختان را دهیم.
سؤالات متداول
۱. چگونه DNS را در لینوکس نصب کنم؟
برای نصب DNS در لینوکس، ابتدا باید بسته BIND9 را نصب کنید. سپس باتوجه به نوع توزیع لینوکس خود مراحل نصب را پیش روید. برای نصب DNS در اوبونتو، میتوانید از دستور sudo apt install bind9 استفاده کنید. همچنین برای نصب آن در توزیع CentOS دستور sudo yum install bind را بهکار ببرید.
۲. چگونه یک رکورد DNS را در لینوکس اضافه کنم؟
برای اضافه کردن یک رکورد DNS در لینوکس، نیاز است فایل زون (Zone File) مربوطه یعنی named.conf.local را ویرایش کنید. سپس، میتوانید رکورد DNS جدید را در فایل زون اضافه کنید. مثلا برای اضافه کردن یک رکورد A برای سایتی با نام www.example.com، میتوانید دستور زیر را به فایل /etc/bind/db.example.com اضافه کنید:
www IN A 192.168.1.10
پس از اضافه کردن رکورد DNS جدید، فایل را ذخیره کرده و ببندید.
۳. چگونه مطمئن شوم DNS را بهدرستی روی لینوکس نصب کردم؟
برای آزمایش عملکرد DNS در لینوکس، میتوانید از دستور dig استفاده کنید. این دستور برای ارسال کوئریهای DNS به سرورهای DNS استفاده میشود. برای مثال، dig example.com وضعیت DNS را برای دامنه example.com بررسی میکند.