امروز با موضوع اتصال دامنه به سرور ubuntu با شما خواهیم بود.
dns چیست
کلمه dns سرواژه سازی شده از Domain Name Service است. از آن جایی که به خاطر سپردن ای پی آدرس ها سخت است این سرویس نام ها را به ای پی ترجمه میکند . به سرور ها و کامپیوتر هایی که DNS را اجرا میکنند name server میگویند . ابونتو به صورت پیشفرض BIND یا Berkley Internet Naming Daemon روی خودش نصب داره که معروف ترین نرم افزار برای resolve کردن توی لینوکس است.
آموزش نصب name server روی سرور ابونتو
با دسترسی روت وارد ترمینال بشوید و دستور زیر را اجرا کنید
sudo apt install bind9
این بخش اجباری نیست! یکی از بهترین ابزار ها برای troubleshoot کردن این سرویس پکیج dnsutils است .ممکن است روی سرورتون هم به صورت پیشفرض نصب باشه از کامند زیر استفاده کنید.
sudo apt install dnsutils
کانفیگ کردن
روش های بسیار زیادی برای کانفیگ کردن bind وجود دارد . با توجه به کاری که میخواهید انجام دهید میتوانید برخی از معروف ترین آن ها cachting namserver , primary name server و secondary server هستند.
- زمانی که BIND به صورت Caching Nameserver کانفیگ میشود بعد از ریزالو کردن یک کوئری اون را کش میکند تا برای درخواست بعدی با سرعت بیشتری به آن پاسخ بدهد.
- زمانی که BIND به صورت Primary Server کانفیگ میشود اطلاعات موجود از zone که شما درون آن تعریف میکنید میخواند و فقط به آن ها پاسخ میدهد
- زمانی که BIND به صورت Secondary Server کانفیگ میشود اطلاعات مربوط به zone از یک nameserver دیگر میگیرد (جهت اطلاع گفتم زیاد برای شما مهم نیست).
دورنمایی از ماجرا
مهم ترین کانفیگ های BIND میتوانید در فولدر /etc/bind پیدا کنید اما ما در این آموزش به محتوا این فولدر کاری نداریم فایل /etc/bind/named.conf فایل ای است که ما در این آموزش آن را ویرایش میکنیم
کانفیگ Primary Name Server
در اینجا ما از example.ir استفاده میکنم شما باید از اسم دامنه خودتون استفاده کنید.
ابتدا فایل /etc/bind/named.conf.local با ویرایش گر محبوبتون باز کنید من از nano استفاده میکنم .
nano /etc/bind/named.conf.local
سپس این خط به صورت زیر آخر فایل اضافه کنید
zone "example.ir" {
type master;
file "/etc/bind/db.example.ir";
};
سپس باید فایل db.example.ir که در بالا به آن اشاره کردم بسازیم.
کامند زیر را بزنید و وارد ویرایشگر شوید
nano /etc/bind/db.example.ir
;
; BIND data file for example.ir
;
$TTL 604800
@ IN SOA example.ir. root.example.ir. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS ns.example.ir.
@ IN A 192.168.1.10
@ IN AAAA ::1
ns IN A 192.168.1.10
سپس سرویس bind restart میکنیم با دستور زیر
sudo systemctl restart bind9
بعد نوبت کانفیگ کردن فایروال باید پورت 53 udp و 53 tcp باز کنیم
sudo ufw allow dns
یا اگه جواب نداد
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
اگه نظر منو بپرسید میگم مهم ترین بخش این کانفیگ همین جاست توی هیچ جا هم درست حسابی توضیحش ندادن . من میخوام دونه دونه براتون بازش کنم.
اولش میاد میگه SOA که به معنی Start of Authority هست شما یه سری اطلاعت بعد از پرانتز اومده مثل سریال رفش اینا که تغییرش ندید .
دوم . در DNS زمانی که از @ استفاده میشه به معنی همان دامنه که بالا تر تعریفش کردید بهش روت دامین هم میگن پس شد چی ؟ @ = example.ir.
سوم . میاد این دامین example.ir به یه دی ان اس وصل که اسمش ns.example.ir توی خط بعدی هم example.ir و ns به یه ای پی پوینت میکنه
حالا همه اینا رو که طی کنید به دی ان اس کاملا نا امن بدون کش و هیچی دارید سرعت reslove کردنش هم اصلا جالب نیست
روش پیشنهادی برای اتصال دامنه به سرور ubuntu
وقتی یه سرویس قدرمتند مثل کلادفلیر هست چرا باید دی ان اس کانفیگ کنید؟!
ابتدا وارد سایت کلافلیر بشوید اگر اکانت ندارید ابتدا ثبت نام کنید . سپس دامنه خودتون در قسمت add site وارد کنید.
dns هایی که بهتون میده مانند تصویر زیر set کنید .
حالا فرض بگیریم میخواید example.ir به ای پی 10.2.2.1 وصل کنید . اون دردسری که بالا داشتید الان ندارید با GUI خیلی راحت به صورت زیر اضافه میکنید.
حالا خیلی ها میگن دامنه ما IR نمیتونیم از cloudflare استفاده کنیم که این موضوع کاملا اشتباه شما نمیتونید از سرویس ابری و ddos protection استفاده کنید dns برای همه بازه .
خب دامین پوینت کردید . حالا اگه یه وب سرور بالا بیارید روی سرور ابونتو میبینید که وقتی وارد دامنه میشید اونو نشون میده .
امیدواریم از مطالعه اتصال دامنه به سرور ubuntu از کرالاهاست لذت برده باشید.