مقدمه
بخش مهمی از مدیریت زیرساخت و پیکربندی سرور، شامل حفظ و برقراری راهی آسان برای جستجوی (look up) رابط ها و آی پی آدرس های شبکه بر اساس نام است که با برقراری یک DNS بی عیب و نقص قابل انجام است. استفاده از FQDN ها بجای آدرس های آی پی، برای مشخص کردن آدرس های شبکه باعث شده است پیکربندی سرویس ها و اپلیکیشن ها آسان تر شود و قابلیت نگهداری فایل های پیکربندی را افزایش میدهد. نصب و برقراری DNS برای شبکه خصوصی تان روشی فوق العاده برای بهبود مدیریت سرورهای تان است.
در این مقاله آموزشی به راه اندازی یک DNS سرور داخلی با استفاده از نرم افزار سرور نامِ (name server) بایند (BIND9) روی سرور مجازی لینوکس اوبونتو ۱۴٫۰۴ میپردازیم که میتواند توسط سرور مجازی تان برای حل و فصل نام دامنه های شخصی و آی پی آدرس های شخصی مورد استفاده قرار گیرد. اینکار روشی اساسی برای مدیریت نام میزبان های (hostnames) داخلی و آی پی آدرس های شخصی در اختیارتان میگذارد که اگر محیط تان به بیش از چند میزبان گسترش پیدا کند، حتمی و لازم الاجراست.
پیش نیازها
به این موارد نیاز دارید:
– چند سرور که در یک دیتاسنتر در حال اجرا هستند و قابلیت private networking آنها فعال شده باشد.
– یک سرور مجازی جدید که به عنوان DNS سرور اصلی خدمت کند: ns1
– اختیاری: یک سرور مجازی جدید به عنوان DNS سرور ثانویه: ns2
– دسترسی روت (root access) به همه موارد بالا
میزبان ها
در مثال های این مقاله، فرض بر این است:
– دو سرور مجازی داریم به نام های host1 و host2
– هر دو سرور مجازی در دیتاسنتر nyc3 هستند.
– قابلیت private networking در هر دو سرور فعال است و در سابنت (subnet) 10.128.0.0/16 هستند.
– هر دو سرور مجازی باید به گونه ای با اپلیکیشن وب ما که در این مثال بر روی example.com اجرا میشود در ارتباط باشند.
با این پیش فرض ها، استفاده از طرح نامگذاری که از nyc3.example.com برای ارجاع به سابنت یا حوزه شخصی ما استفاده کند، منطقی به نظر میرسد. پس FQDN شخصی host1 میشود host1.nyc3.example.com . برای جزئیات مربوطه به این جدول رجوع کنید:
Host | Role | Private FQDN | Private IP Address |
host1 | Generic Host 1 | host1.nyc3.example.com | ۱۰٫۱۲۸٫۱۰۰٫۱۰۱ |
host2 | Generic Host 2 | host2.nyc3.example.com | ۱۰٫۱۲۸٫۲۰۰٫۱۰۲ |
نکته: ممکن است تنظیمات موجود شما فرق داشته باشد ولی برای نشان دادن اینکه چگونه یک DNS سرور را پیکربندی کنیم تا یک DNS داخلی داشته باشیم که عملاً جواب دهد، از اسامی و آی پی آدرس های فرضی استفاده خواهیم کرد. با جایگزین کردن نام میزبان ها و آی پی آدرس های خودتان با آدرس های این مثال ها، به راحتی میتوانید این تنظیمات را با محیط خودتان سازگار کنید. لازم نیست در طرح نامگذاری، از نام ناحیه (region name) دیتاسنتر استفاده کنید ولی ما اینجا استفاده خواهیم کرد تا مشخص کنیم این میزبان ها به یک شبکه شخصیِ دیتاسنتر مشخصی تعلق دارند. اگر از چندین دیتاسنتر استفاده میکنید میتوانید برای هر دیتاسنتر یک DNS داخلی راه بیاندازید.
هدف
با طی کردن مراحلی که در این مقاله خواهد آمد، یک DNS سرور اصلی (ns1) اصلی خواهیم داشت و یک DNS سرور ثانویه (که اختیاری بود) که به عنوان پشتیبان و بکاپ عمل خواهد کرد.
اینهم جدول آی پی آدرس ها و نام های مثالی:
Host | Role | Private FQDN | Private IP Address |
ns1 | Primary DNS Server | ns1.nyc3.example.com | ۱۰٫۱۲۸٫۱۰٫۱۱ |
ns2 | Secondary DNS Server | ns2.nyc3.example.com | ۱۰٫۱۲۸٫۲۰٫۱۲ |
با نصب ns1 یا همان DNS سرور اصلی کار را شروع میکنیم.
نصب بایند روی DNS سرور
توجه: قسمت هایی که به رنگ قرمز نوشته شده اند مهم هستند و غالباً باید با تنظیمات شما جایگزین شوند و یا باید به یک فایل پیکربندی اضافه شوند. پس اگر چیزی همچون host1.nyc3.example.com دیدید، بجایش FQDN سرور خودتان را بنویسید و بجای host1_private_IP ، آی پی آدرس شخصی سرورتان را بگذارید.
apt را در هر دو DNS سرورِ ns1 و ns2 آپدیت کنید:
• sudo apt-get update
حال بایند را نصب کنید:
sudo apt-get install bind9 bind9utils bind9-doc
حالت IPv4
قبل از ادامه کار، بایند را با حالت IPv4 سِت میکنیم. در هر دو سرور، فایل پارامترهای سرویس بایند۹ را ادیت کنید:
• sudo vi /etc/default/bind9
-۴ را به متغیر OPTIONS اضافه کنید:
/etc/default/bind9
OPTIONS="-4 -u bind"
سپس ذخیره کرده و خارج شوید.
حال بایند نصب شده است. برویم سراغ پیکربندی DNS سرور اصلی.
پیکربندی DNS سرور اصلی
پیکربندی بایند از چندین فایل تشکیل شده است که از فایل اصلی پیکربندی یعنی named.conf هستند. این filename ها با named آغاز میشوند چون نام پروسه ای هستند که بایند اجرایش میکند. ما با پیکربندی فایل options شروع میکنیم.
پیکربندی فایل options
در ns1 فایل named.conf.options را برای ادیت کردن باز کنید:
• sudo vi /etc/bind/named.conf.options
بالای بلاک options موجود، یک بلاک فهرست کنترل (ACL) جدید به نام trusted ایجاد کنید. در اینجا لیست کلاینت هایی را تعریف میکنیم که به آنها اجازه پرس و جوی بازگشتی DNS از (مثلاً سرورهای خودتان که در همان دیتاسنتر ns1 قرار دارند) را داده ایم. از آی پی آدرس های شخصی مثالی استفاده کرده و ns1 و ns2 و host1 و host2 را به لیست کلاینت های trusted (مورد اعتماد) اضافه میکنیم:
/etc/bind/named.conf.options — ۱ of 3
acl “trusted” {
۱۰٫۱۲۸٫۱۰٫۱۱; # ns1 – can be set to localhost
۱۰٫۱۲۸٫۲۰٫۱۲; # ns2
۱۰٫۱۲۸٫۱۰۰٫۱۰۱; # host1
۱۰٫۱۲۸٫۲۰۰٫۱۰۲; # host2
};
حال که لیست کلاینت های مورد اعتماد را داریم، میخواهیم بلاک options را ادیت کنیم. در اینجای کار، آغاز بلاک چیزی شبیه این خواهد بود:
/etc/bind/named.conf.options — ۲ of 3
options {
directory “/var/cache/bind”;
…
}
زیر دایرکتیوِ directory ، سطرهای پیکربندی هایلایت شده را اضافه کنید و آی پی آدرس های صحیح ns1 را جایگزین کنید. نتیجه چیزی شبیه این خواهد شد:
/etc/bind/named.conf.options — ۳ of 3
options {
directory “/var/cache/bind”;
recursion yes; # enables resursive queries
allow-recursion { trusted; }; # allows recursive queries from “trusted” clients
listen-on { 10.128.10.11; }; # ns1 private IP address – listen on private network only
allow-transfer { none; }; # disable zone transfers by default
forwarders {
۸٫۸٫۸٫۸;
۸٫۸٫۴٫۴;
};
…
};
حالا named.conf.options را ذخیره کرده و خارج شوید. پیکربندی بالا مشخص میکند که فقط سرورهای شما (trusted ها) قادر خواهند بود DNS سرورتان را پرس و جو (query) کنند.
سپس لوکال فایل را پیکربندی کنید تا حوزه های DNS را مشخص کنید.
پیکربندی لوکال فایل
فایل named.conf.local را در ns1 باز کنید تا ادیتش کنید:
• sudo vi /etc/bind/named.conf.local
به غیر از چند کامنت، فایل باید خالی باشد. در اینجا حوزه های رو به جلو (forward zone) و حوزه های معکوس (reverse zone) را مشخص میکنیم.
فوروارد زون را با این سطر ها اضافه کنید: (نام حوزه خودتان را جایگزین کنید)
/etc/bind/named.conf.local — ۱ of 2
zone “nyc3.example.com” {
type master;
file “/etc/bind/zones/db.nyc3.example.com”; # zone file path
allow-transfer { 10.128.20.12; }; # ns2 private IP address – secondary
};
با این فرض که سابنت شخصی ما ۱۰٫۱۲۸٫۰٫۰/۱۶ است، بوسیله سطور زیر، حوزه معکوس را اضافه کنید: توجه داشته باشید که حوزه معکوس ما با ۱۲۸٫۱۰ شروع میشود که معکوس هشت تایی (octet reversal) 10.128 است.
/etc/bind/named.conf.local — ۲ of 2
zone “128.10.in-addr.arpa” {
type master;
file “/etc/bind/zones/db.10.128”; # 10.128.0.0/16 subnet
allow-transfer { 10.128.20.12; }; # ns2 private IP address – secondary
};
اگر سرور شما چندین سابنت شخصی دارد ولی همگی در یک دیتاسنتر هستند، مطمئن شوید که یک حوزه و فایل حوزه (zone file) اضافی برای هر سابنت مشخص کنید. پس از اینکه همه حوزه ها را اضافه کردید، فایل named.conf.local را ذخیره کرده و خارج شوید.
حال که حوزه هایمان را در بایند مشخص کردیم، باید فایل حوزه های رو به جلو (forward zone file) و فایل حوزه های معکوس (reverse zone file) را هم ایجاد کنیم.
ایجاد Forward Zone File
این فایل همان جایی است که رکوردهای جستجوهای فوروارد DNS را تعریف میکنیم. یعنی وقتی که DNS یک پرس و جوی نام دریافت میکند مثلاً host1.nyc3.example.com آنگاه DNS به فوروارد زون فایل رجوع میکند تا آی پی آدرس مربوط به host1 را بیابد.
حال یک دایرکتوری میسازیم تا این فایل در آن قرار بگیرد. طبق پیکربندی named.conf.local مکانش باید /etc/bind/zones باشد.
• sudo mkdir /etc/bind/zones
فایل فوروارد زون را در فایل ناحیه db.local قرار میدهیم. با فرمان های زیر آنرا در جای مناسبش کپی کنید:
• cd /etc/bind/zones
•
• sudo cp ../db.local ./db.nyc3.example.com
حال forward zone file را ادیت میکنیم:
• sudo vi /etc/bind/zones/db.nyc3.example.com
اصولاً باید چیزی شبیه این بشود:
/etc/bind/zones/db.nyc3.example.com — original
$TTL 604800
@ IN SOA localhost. root.localhost. (
۲ ; Serial
۶۰۴۸۰۰ ; Refresh
۸۶۴۰۰ ; Retry
۲۴۱۹۲۰۰ ; Expire
۶۰۴۸۰۰ ) ; Negative Cache TTL
;
@ IN NS localhost. ; delete this line
@ IN A 127.0.0.1 ; delete this line
@ IN AAAA ::1 ; delete this line
اول باید رکورد SOA را ادیت کنید. اولین localhost را با FQDN سرور sn1 جایگزین کنید سپس root.localhost را با admin.nyc3.example.com جایگزین کنید. همچنین هرباری که یک zone file را ادیت میکنید باید قبل از ریستارت پروسه named، مقدار serial را افزایش دهید. در اینجا این مقدار را به ۳ افزایش میدهیم. چیزی شبیه این میشود:
/etc/bind/zones/db.nyc3.example.com — updated 1 of 3
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
۳ ; Serial
حال سه رکورد انتهای فایل (بعد از رکورد SOA) را حذف کنید. اگر مطمئن نیستید که کدام سطرها را باید حذف کنید، بالاتر و کنار آن سطرها نوشته ایم delete this line
در انتهای فایل، رکوردهای nameserver خود را با استفاده از این سطور جایگزین کنید: توجه داشته باشید که ستون دوم مشخص میکند که اینها رکوردهای NS هستند.
/etc/bind/zones/db.nyc3.example.com — updated 2 of 3
; name servers – NS records
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
سپس A رکوردهای میزبان هایتان که به این حوزه تعلق دارند را اضافه کنید که درواقع شامل هر سروری است که میخواهیم با .nyc3.example.com ختم شود. بر اساس نام ها و آی پی آدرس های مثالی، A رکوردها را برای ns1 و ns2 و host1 و host2 اضافه میکنیم:
/etc/bind/zones/db.nyc3.example.com — updated 3 of 3
; name servers – A records
ns1.nyc3.example.com. IN A 10.128.10.11
ns2.nyc3.example.com. IN A 10.128.20.12
; ۱۰٫۱۲۸٫۰٫۰/۱۶ – A records
host1.nyc3.example.com. IN A 10.128.100.101
host2.nyc3.example.com. IN A 10.128.200.102
ذخیره کرده و از فایل db.nyc3.example.com خارج شوید.
در نهایت فوروارد زون فایل ما در این مثال اینگونه خواهد شد:
/etc/bind/zones/db.nyc3.example.com — updated
$TTL 604800
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
۳ ; Serial
۶۰۴۸۰۰ ; Refresh
۸۶۴۰۰ ; Retry
۲۴۱۹۲۰۰ ; Expire
۶۰۴۸۰۰ ) ; Negative Cache TTL
;
; name servers – NS records
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
; name servers – A records
ns1.nyc3.example.com. IN A 10.128.10.11
ns2.nyc3.example.com. IN A 10.128.20.12
; ۱۰٫۱۲۸٫۰٫۰/۱۶ – A records
host1.nyc3.example.com. IN A 10.128.100.101
host2.nyc3.example.com. IN A 10.128.200.102
ایجاد Reverse Zone File
این فایل جایی است که PTR رکوردهای DNS برای پرس و جوی معکوس DNS را تعریف میکنیم. این وقتیست که DNS یک پرس و جو بوسیله آدرس آی پی را دریافت میکند. مثلاً اگر آی پی آدرس ۱۰٫۱۲۸٫۱۰۰٫۱۰۱ باشد، به فایل یا فایل های حوزه معکوس رجوع کرده تا FQDN مربوطه را بیابد که در این مثال میشود host1.nyc3.example.com
در ns1 برای هر حوزه معکوس که در فایل named.conf.local مشخص شده است، یک فایل حوزه معکوس ایجاد کنید. این فایل ها را در فایل حوزه مثالی db.127 قرار خواهیم داد. با این فرمان ها آن را در جای مناسب کپی کنید:
• cd /etc/bind/zones
•
• sudo cp ../db.127 ./db.10.128
فایل حوزه معکوسی که با حوزه معکوس تعریف شده در named.conf.local متناظر است را ادیت کنید:
• sudo vi /etc/bind/zones/db.10.128
اصولاً چیزی شبیه این خواهد شد:
/etc/bind/zones/db.10.128 — original
$TTL 604800
@ IN SOA localhost. root.localhost. (
۱ ; Serial
۶۰۴۸۰۰ ; Refresh
۸۶۴۰۰ ; Retry
۲۴۱۹۲۰۰ ; Expire
۶۰۴۸۰۰ ) ; Negative Cache TTL
;
@ IN NS localhost. ; delete this line
۱٫۰٫۰ IN PTR localhost. ; delete this line
همچون فایل فوروارد زون، باید رکورد SOA را ادیت کرده و مقدار serial را افزایش دهید:
/etc/bind/zones/db.10.128 — updated 1 of 3
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
۳ ; Serial
حال دو رکورد آخر را حذف کنید. اگر مطمئن نیستید کدامها را حذف کنید، آن بالا و در کنارشان نوشته شده است delete this line
رکوردهای nameserver خود را به انتهای فایل و با این فرمان ها اضافه کنید. توجه داشته باشید که ستون دوم مشخص میکند که اینها رکوردهای NS هستند:
/etc/bind/zones/db.10.128 — updated 2 of 3
; name servers – NS records
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
سپس PTR رکوردهای همه سرورهایتان که آی پی آدرس هایشان در سابنت فایل حوزه ای است که ادیت میکنید را اضافه کنید. در این مثال همه میزبان هایمان را شامل میشود چون همگی در سابنت ۱۰٫۱۲۸٫۰٫۰/۱۶ هستند. توجه داشته باشید که ستون اول حاوی دو اوکتت (octet) آخر آی پی آدرس شخصی سرورتان است البته به صورت برعکس. حتماً نام ها و آی پی آدرس های سرور خودتان را جایگزین کنید:
/etc/bind/zones/db.10.128 — updated 3 of 3
; PTR Records
۱۱٫۱۰ IN PTR ns1.nyc3.example.com. ; 10.128.10.11
۱۲٫۲۰ IN PTR ns2.nyc3.example.com. ; 10.128.20.12
۱۰۱٫۱۰۰ IN PTR host1.nyc3.example.com. ; 10.128.100.101
۱۰۲٫۲۰۰ IN PTR host2.nyc3.example.com. ; 10.128.200.102
فایل را ذخیره کرده و خارج شوید. اگر لازم بود که فایل های بیشتری اضافه کنید، این قسمت را تکرار کنید.
فایل حوزه معکوس ما آخرسر اینچنین خواهد شد:
/etc/bind/zones/db.10.128 — updated
$TTL 604800
@ IN SOA nyc3.example.com. admin.nyc3.example.com. (
۳ ; Serial
۶۰۴۸۰۰ ; Refresh
۸۶۴۰۰ ; Retry
۲۴۱۹۲۰۰ ; Expire
۶۰۴۸۰۰ ) ; Negative Cache TTL
; name servers
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
; PTR Records
۱۱٫۱۰ IN PTR ns1.nyc3.example.com. ; 10.128.10.11
۱۲٫۲۰ IN PTR ns2.nyc3.example.com. ; 10.128.20.12
۱۰۱٫۱۰۰ IN PTR host1.nyc3.example.com. ; 10.128.100.101
۱۰۲٫۲۰۰ IN PTR host2.nyc3.example.com. ; 10.128.200.102
سینتکس های پیکربندی بایند را چک کنید.
برای چک کردن سینتکس فایل های named.conf* فرمان زیر را اجرا کنید:
• sudo named-checkconf
اگر این فایل شما خطای سینتکس نداشت، به shell prompt بازخواهید گشت و پیغام no error را خواهید دید. اگر فایل های پیکربندی مشکلی داشته باشند، پیغام خطا را خوانده و به قسمت «پیکربندی DNS سرور اصلی» در این مقاله رجوع کنید و آخرسر بازهم named-checkconf را امتحان کنید.
برای تشخیص صحت فایل های حوزه از فرمان named-checkzone استفاده میشود. اولین آرگومان آن، نام حوزه را مشخص میکند و دومین آرگومان هم فایل حوزه متناظر با آن را نشان میدهد و هر دو در named.conf.local تعریف شده اند.
مثلاً برای چک کردن پیکربندی فوروارد زون nyc3.example.com از این فرمان استفاده کنید:
sudo named-checkzone nyc3.example.com db.nyc3.example.com
و برای چک کردن پیکربندی معکوس ۱۲۸٫۱۰٫in-addr.arpa از این فرمان:
sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
اگر در هیچکدام ایرادی یافت نشد میرویم سراغ ریستارت کردن سرویس بایند
ریستارت بایند
BIND را restart کنید:
• sudo service bind9 restart
اینک DNS سرور اصلی شما آماده است تا به پرس و جوهای DNS پاسخ دهد.
پیکربندی DNS سرور ثانویه
در اکثر محیط ها راه اندازی یک DNS سرور ثانویه فکر خوبیست و اگر سرور اصلی از دسترس خارج شد، میتواند به درخواستها پاسخ دهد. خوشبختانه پیکربندی DNS سرور ثانویه بسیار راحت تر است.
فایل named.conf.options را در ns2 ادیت کنید:
• sudo vi /etc/bind/named.conf.options
ACL را با همه آی پی آدرس های سرورهای مورد اعتمادتان به بالای فایل اضافه کنید:
/etc/bind/named.conf.options — updated 1 of 2 (secondary)
acl “trusted” {
۱۰٫۱۲۸٫۱۰٫۱۱; # ns1
۱۰٫۱۲۸٫۲۰٫۱۲; # ns2 – can be set to localhost
۱۰٫۱۲۸٫۱۰۰٫۱۰۱; # host1
۱۰٫۱۲۸٫۲۰۰٫۱۰۲; # host2
};
زیر دایرکتیو directory این سطور را اضافه کنید:
/etc/bind/named.conf.options — updated 2 of 2 (secondary)
recursion yes;
allow-recursion { trusted; };
listen-on { 10.128.20.12; }; # ns2 private IP address
allow-transfer { none; }; # disable zone transfers by default
forwarders {
۸٫۸٫۸٫۸;
۸٫۸٫۴٫۴;
};
named.conf.options را ذخیره کرده و خارج شوید. این فایل باید دقیقاً شبیه فایل named.conf.options در ns1 باشد با این استثنا که باید در آی پی آدرس های شخصی ns2 به گوش بنشیند.
فایل named.conf.local را ادیت کنید:
• sudo vi /etc/bind/named.conf.local
حوزه های فرعی (slave zone) را متناظر با حوزه های اصلی (master zone) در DNS سرور اصلی تعریف کنید. توجه کنید که از نوع slave است، فایل دارای path نیست و یک دایرکتیو masters وجود دارد که باید به آی پی شخصیِ DNS سرور سِت شده باشد. اگر در DNS سرور اصلی چندین حوزه معکوس تعریف کرده اید حتماً آنها را اینجا هم اضافه کنید:
/etc/bind/named.conf.local — updated (secondary)
zone “nyc3.example.com” {
type slave;
file “slaves/db.nyc3.example.com”;
masters { 10.128.10.11; }; # ns1 private IP
};
zone “128.10.in-addr.arpa” {
type slave;
file “slaves/db.10.128”;
masters { 10.128.10.11; }; # ns1 private IP
};
named.conf.local را ذخیره کرده و خارج شوید.
برای بررسی اعتبار (validity) فایل های پیکربندی این فرمان را اجرا کنید:
• sudo named-checkconf
بعد از اتمام بررسی، بایند را ریستارت کنید:
• sudo service bind9 restart
سرورهای اصلی و ثانویه شما آماده است و حالا باید سرورهایتان را برای استفاده از DNS سرورهای شخصی تان پیکربندی کنید.
پیکربندی کلاینت های DNS
قبل از اینکه همه سرورهای trusted در ACL بتوانند به DNS سرورها درخواست بدهند باید تک تک آنها را برای استفاده از ns1 و ns2 به عنوان nameserver پیکربندی کنید. این پروسه در سیستم عامل های مختلف فرق میکند ولی در اکثر توزیع های لینوکس باید nameserver ها را به فایل /etc/resolve.conf اضافه کنید.
کلاینت های اوبونتو
در لینوکس VPS های اوبونتو (Ubuntu) و دبیان (Debian) میتوان فایل head را ادیت کرد که در بوت به ابتدای resolve.config اضافه میشود:
• sudo vi /etc/resolvconf/resolv.conf.d/head
این سطور را به فایل اضافه کنید:
/etc/resolvconf/resolv.conf.d/head
search nyc3.example.com # your private domain
nameserver 10.128.10.11 # ns1 private IP address
nameserver 10.128.20.12 # ns2 private IP address
حال resolvconf را اجرا کنید تا یک فایل resolv.conf جدید تولید کند:
• sudo resolvconf -u
اینک کلاینت شما برای استفاده از DNS سرورتان پیکربندی شده است.
کلاینت های CentOS
در لینوکس VPS های CentOS ، RedHat و Fedora فقط کافیست فایل resolv.conf را ادیت کنید:
• sudo vi /etc/resolv.conf
سپس این سطور را به TOP فایل اضافه کنید:
/etc/resolv.conf
search nyc3.example.com # your private domain
nameserver 10.128.10.11 # ns1 private IP address
nameserver 10.128.20.12 # ns2 private IP address
ذخیره کرده و خارج شوید. اینک کلاینت شما برای استفاده از DNS سرورتان پیکربندی شده است.
کلاینت ها را تست کنید.
از nslookup استفاده کنید تا ببینید آیا کلاینت های شما میتوانند به name server های شما درخواست بدهند. باید بتوانید اینکار را با تمام کلاینت هایی که پیکربندی کرده اید و در فهرست کنترل دسترسی trusted قرار دارند، انجام دهید.
Forward Lookup
مثلاً میتوانیم یک فوروارد لوکاپ برای بدست آوردن آی پی آدرس host1.nyc3.example.com انجام دهیم. با این فرمان:
• nslookup host1
پرس و جوی host1 به host1.nyc3.example.com بسط مییابد چون آپشن search به زیردامنه (subdomain) شخصی شما ست شده است و درخواست های DNS قبل از هرجای دیگری به سراغ این زیردامنه میروند. خروجیِ فرمان بالا اینگونه خواهد بود:
Output:
Server: 10.128.10.11
Address: 10.128.10.11#53
Name: host1.nyc3.example.com
Address: 10.128.100.101
Reverse Lookup
برای تست لوکاپ معکوس، با آی پی آدرس شخصی host1 ، DNS را پرس و جو کنید:
• nslookup 10.128.100.101
خروجی اینگونه خواهد بود:
Output:
Server: 10.128.10.11
Address: 10.128.10.11#53
۱۱٫۱۰٫۱۲۸٫۱۰٫in-addr.arpa name = host1.nyc3.example.com.
اگر تمام آی پی آدرس ها به مقادیر صحیحی resolve شوند یعنی zone file های شما به درستی پیکربندی شده اند. اگر مقدار غیرمنتظره ای به دست آمد، حتماً zone file های DNS سرور اصلی را بررسی کنید.
تبریک میگم، بالاخره DNS سرورهایتان بدرستی راه اندازی شدند.
نگهداری رکوردهای DNS
حال که یک DNS داخلی دارید لازم است که رکوردهای DNS تان را نگه دارید تا بازتاب دقیقی از محیط سرورتان به دست دهند.
اضافه کردن میزبان به DNS
هروقت که یک میزبان را به محیط تان اضافه میکنید باید آن را به DNS هم اضافه کنید:
سرور نام اصلی
– فایل حوزه فوروارد: یک رکورد A برای میزبان جدید اضافه کنید و مقدار serial را افزایش دهید.
– فایل حوزه معکوس: یک رکورد PTR برای میزبان جدید اضافه کرده و مقدار serial را افزایش دهید.
– آی پی آدرس های شخصی میزبان های جدید را به فهرست کنترل دسترسیِ trusted اضافه کنید. (named.conf.options)
سپس بایند را ریلود کنید:
• sudo service bind9 reload
سرور نام ثانویه
آی پی آدرس های میزبان های جدید را به فهرست کنترل دسترسی trusted اضافه کنید.
سپس بایند را ریلود کنید:
• sudo service bind9 reload
میزبان های جدید را برای استفاده از DNS تان پیکربندی کنید.
– resolv.conf را پیکربندی کنید تا از DNS سرورهایتان استفاده کند.
– با استفاده از nslookup چک کنید.
حذف میزبان از DNS
اگر یک میزبان را از محیط تان برمیدارید یا میخواهید آن را از DNS بردارید، کافیست تمام چیزهایی که هنگام اضافه کردن آن میزبان افزوده اید را حذف کنید. یعنی مراحلی که در بالا آمده است را برعکس کنید.
نتیجه
حالا میتوانید به رابط های شبکه خصوصی تان نه بوسیله آی پی بلکه با نامشان ارجاع دهید. با اینکار، پیکربندی سرویس ها و برنامه ها راحت تر میشود چون دیگر نیازی نیست آی پی آدرس های شخصی را حفظ کنید و همچنین خواندن و فهمیدن فایل ها هم آسان تر میشود. همچنین اینک میتوانید پیکربندی تان را تغییر دهید تا به یک سرور جدید واقع در فقط یک محل اشاره داشته باشند (یعنی DNS سرور اصلی تان) و نیازی نیست تعداد زیادی فایل های پیکربندی مختلف و پراکنده را ادیت کنید. درنتیجه باعث سهولت نگهداری میشود.
بعد از اینکه DNS داخلی تان راه اندازی شد و فایل های پیکربندی از FQDN ها برای مشخص کردن ارتباطات شبکه استفاده کردند، نگهداری صحیح از DNS سرورهایتان بسیار حیاتی و ضروری میشود. اگر هر دو از دسترس خارج شوند، سرویس ها و برنامه های مربوطه به درستی عمل نخواهند کرد. به همین دلیل توصیه میشود که حداقل یک DNS سرور ثانویه داشته باشید و از همه آنها بکاپ داشته باشید.
ترجمه شده توسط : بابک طهماسبی (تیم کندوهاست)
چطور یک سرور آپاچی با استفاده از یک گواهینامه رایگان SSL بر روی سرور مجازی لینوکس ایجاد کنیم؟
سرور مجازی لینوکس :نحوه ی استفاده ازSSHFS برای نصب سیستم های فایل راه دور رویSSH