روش نصب و تنظیم سرور DHCP در لینوکس
یکی از رایج ترین پروتکل های شبکه که روزمره از آن استفاده می کنیم DHCP یا Dynamic Host Configuration Protocol است که به کامپیوتر های درون شبکه قابلیت دریافت آدرس IP و دیگر تنظیمات شبکه را می دهد. در این پست بررسی می کنیم که چگونه این پروتکل را در سیستم عامل لینوکس راه اندازی کنیم.
چرا ؟ 🤔
شاید همین اول کار براتون سوال پیش بیاد که اصلا چرا باید چنین کاری انجام بدیم ؟ خب تمام روتر ها - مودم ها و سوییچ های لایه ۳ چنین کاری برای ما انجام میدن. پس چرا باید به طور نرم افزاری یه سرور DHCP راه اندازی کنیم ؟
خیلی وقت ها پیش میاد که دسترسی به سخت افزار خودمون نداریم یا نمیتونیم/نمیخوایم تنظیمات روتر خودمون رو عوض کنیم. یا مثال خیلی بهتر ! دستگاه های ما به صورت Cross به همدیگه متصل شدن و فقط یه Hub در اختیار داریم.
یا خیلی مثال های دیگه ...
در چنین سناریو هایی به راحتی میشه با تبدیل یکی از سیستم ها به سرور DHCP مشکل رو برطرف کرد و مدیریت ساده ای روی این موضوع داشت. 👨🏻🔧
DHCP چطور کار میکنه ؟
اینجا قصد نداریم پروتکل DHCP رو بررسی کنیم ولی خیلی کلی روند کاریش رو براتون شرح می دم.
- وقتی یه کلاینت توی شبکه فعال میشه در اولین مراحل کاری خودش یه بسته DHCPDISCOVER به سرور میفرسته.
- وقتی سرور بسته DHCPDISCOVER رو دریافت کرد در پاسخ به اون یه بسته DHCPOFFER به کلاینت میفرسته.
- وقتی کلاینت بسته DHCPOFFER رو دریافت می کنه با ارسال بسته DHCPREQUEST به سرور اعلام میکنه که آماده است تنظیمات شبکه ای که در بسته DHCPOFFER به اون ارایه شده رو دریافت کنه.
- در نهایت وقتی سرور بسته DHCPREQUEST رو از سمت کلاینت دریافت کنه بسته DHCPACK رو به کلاینت ارسال میکنه و بهش تنظیمات تعیین شده در قبل رو تخصیص میده. در نتیجه کلاینت یه آدرس IP پیدا میکنه و توی شبکه تعریف میشه.
شروع به کار
در حال حاضر از چنین سیستم عامل هایی استفاده شده :
DHCP Server - Ubuntu 20.04
DHCP Clients - CentOS 7
1- نصب سرور
برای تنظیم یک سیستم به عنوان سرور از برنامه ای که قبلا با عنوان dhcp3-server
شناخته میشد استفاده می کنیم. جهت نصب دستور زیر را اجرا کنید :
sudo apt install isc-dhcp-server
زمانی که نصب به اتمام رسید فایل /etc/default/isc-dhcp-server
را باز کنید تا interface مورد نظر برای مدیریت درخواست های DHCP را تعریف کنید. برای مثال اگر میخواهید از eth0
استفاده کنید به این صورت باید تنظیم کنید :
INTERFACES="eth0"
2- تنظیم سرور
تمامی تنظیمات مربوط به سرور DHCP شما در فایل به آدرس /etc/dhcp/dhcpd.conf
قرار دارند و باید همه اطلاعات شبکه ای که به کلاینت ها ارسال می شوند را اینجا قرار دهید.
در این فایل دو چیز را تعریف می کنیم :
- پارامتر ها : شامل اینکه چگونه وظایف دریافت یا تقسیم شوند یا اینکه چه تنظیماتی به کلاینت ها ارسال شود
- تعاریف : شامل پیکربندی توپولوژی شبکه - وضعیت کلاینت ها - تنظیمات پیشنهاد آدرس برای کلاینت ها و همچنین اعمال دسته ای پارامتر ها
برای شروع فایل مربوطه را باز کنید :
sudo nano /etc/dhcp/dhcpd.conf
حالا پارامتر های عمومی زیر را در بالاترین سطر فایل قرار دهید ( مقادیر را با توجه به نیاز/سناریو خودتان تغییر دهید ):
option domain-name "arash-hatami.ir";
option domain-name-servers ns1.arash-hatami.ir, ns2.arash-hatami.ir;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
حالا یک زیرشبکه ( Subnetwork ) تعریف می کنیم. در اینجا DHCP را برای شبکه 192.168.10.0/24
تنظیم می کنیم :
subnet 192.168.10.0 netmask 255.255.255.0 {
option routers 192.168.10.1;
option subnet-mask 255.255.255.0;
option domain-search "arash-hatami.ir";
option domain-name-servers 192.168.10.1;
range 192.168.10.10 192.168.10.100;
range 192.168.10.120 192.168.10.210;
}
3- تخصیص آدرس ثابت
جهت تخصیص یک Static IP به کلاینتی خاص به این شکل عمل می کنیم :
host node1 {
hardware ethernet 00:f2:m3:6y:45:05;
fixed-address 192.168.10.101;
}
host node2 {
hardware ethernet 00:4h:5g:24:8f:3b;
fixed-address 192.168.10.102;
}
4- اجرای سرویس
حالا که تنظیمات مربوطه را انجام دادید فایل را ذخیره کرده و ببندید.
سپس سرویس مربوطه را برای بار اول اجرا کرده و آن را فعال می کنیم تا در بوت های بعدی به صورت خودکار اجرا شود :
sudo service isc-dhcp-server.service start
sudo service isc-dhcp-server.service enable
همچنین پورت 67 را که مربوط به DHCPD daemon می باشد در فایروال سیستم مجاز می کنیم :
sudo ufw allow 67/udp
sudo ufw reload
5- تنظیم کلاینت ها
اکنون که همه تنظیمات سرور اصلی انجام شده میتونیم کلاینت های خودمون رو هم تنظیم کنیم تا به صورت خودکار آدرس IP خودشون رو از سرور دریافت کنن. پس فایل /etc/network/interfaces
رو ویرایش می کنیم :
auto eth0
iface eth0 inet dhcp
سپس سرویس شبکه را مجدد راه اندازی می کنیم :
sudo service networking restart
اگه هم از نسخه های دسکتاپ استفاده می کنین که دیگه خیلی راحت از طریق GUI این کار رو انجام بدید 😉