DHCP (که مخفف Dynamic Host Configuration Protocol) در حقیقت یک پروتکل client/server ی میباشد که یک سرور را برای اختصاص دادن اتوماتیک ip آدرس و دیگر پارامترهای کانفیگی مرتبط (مانند subnet mask و default gateway) به یک کلاینت روی شبکه فعال میکند.
DHCP به این دلیل مهم است که از کانفیگ دستی ip آدرس به کامپیوترهای جدید اضافه شده به شبکه و کامپیوترهایی که از یک subnet به یک subnet دیگر منتقل شده اند جلوگیری میکند.
ip آدرسی که از یک DHCP سرور به یک DHCP کلاینت اختصاص داده میشود روی یک "lease" میباشد، lease time به صورت نرمال بسته به مدت زمانیکه یک کامپیوتر کلاینت نیاز به ارتباط یا تنظیمات DHCP دارد تغییر میکند.
در این مقاله، ما نحوه کانفیگ DHCP Server در توزیع لینوکسی CentOS و Ubuntu را برای اختصاص دادن ip آدرس به یک ماشین کلاینت به صورت اتوماتیک شرح خواهیم داد.
نصب DHCP Server در CentOS و Ubuntu
پکیج DHCP Server در ریپازیتوری رسمی از توزیع لینوکسی در دسترس است، نصب آن بسیار آسان است و به سادگی با استفاده از دستورات زیر میتوان آنرا نصب کرد.
به محض اینکه نصب تمام شد، اینترفیسی را که میخواهید سرویس DHCP درخواست های مرتبط با آن را در فایل کانفیگ /etc/default/isc-dhcp-server یا /etc/sysconfig/dhcpd قرار دهد، کانفیگ کنید.
به طور مثال اگر میخواهید سرویس DHCP روی اینترفیس eth0 لیسن (listen) کند با استفاده از بخش زیر آنرا تعریف کنید.
در Ubuntu :q:
در CentOS :
فایل را ذخیره و از آن خارج شوید.
کانفیگ DHCP Server در CentOS و Ubuntu
فایل کانفیگ اصلی DHCP در /etc/dhcp/dhcpd.conf قرار دارد که باید شامل تعریف تمام پارامترهای شبکه که باید برای کلاینت فراهم آورده شود، باشد.
این فایل اساسا شامل لیستی از عبارات گروه بندی شده در دو دسته اصلی میباشد.
اکنون، فایل کانفیگ را برای تنظیم DHCP سرورتان باز کنید.
کار را با تعریف global parameters در بالای فایل، که برای همه شبکه های پشتیبانی شده مشترک است آغاز میکنیم. این تنظیمات برای همه declarations اعمال خواهد شد.
سپس شما نیاز دارید که یک subnet work برای یک subnet داخلی مانند 192.168.1.0/24 همانند زیر تعریف کنید.
کانفیگ آی پی static روی کلاینت dhcp
برای اختصاص دادن یک آی پی آدرس ثابت (static) قسمت زیر را هنگامی که نیاز به mac address و ip استاتیک دارید ،اضافه کنید. در قسمت hardware ethernet مک آدرس سیستم مورد نظر و در قسمت fixed-address هم ip آدرس سیستم را وارد کنید.
دقت کنید هاست هایی که به آپشن های تنظیماتی خاص نیاز دارند را میتوان در host.statements (صفحه راهنمای dhcp.conf را مشاهده کنید) لیست کرد.
اکنون که شما سرویس DHCP سرورتان را کانفیگ کرده اید، شما باید سرویس را start کنید و آنرا برای boot های بعدی سیستم فعال کنید. (که به صورت اتوماتیک start شود) و با استفاده از دستورات زیر چک کنید که سرویس up و در حال اجرا باشد.
سپس، درخواست های به سرویس DHCP روی فایروال را permit کنید، که روی پورت 67/UDP لیسن میکند.
کانفیگ کلاینت های DHCP
در نهایت شما نیاز دارید که تست کنید آیا DHCP سرور به درستی کار میکند. به یکسری از ماشین های کلاینت روی شبکه لاگین کنید و آنها را کانفیگ کنید که به صورت اتوماتیک از سرور ip بگیرند.
فایل کانفیگ مناسب را برای اینترفیسی که میخواهید روی کلاینت به صورت اتوماتیک ip آدرس بگیرد بررسی و تغییر دهید.
تنظیمات DHCP Client روی CentOS
روی CentOS فایل های کانفیگ اینترفیس در مسیر /etc/sysconfig/network-scripts/ قرار گرفته اند.
آپشن های زیر را اضافه کنید.
فایل را ذخیره و سرویس شبکه را restart کنید. (یا سیستم را reboot کنید)
تنظیمات DHCP Client روی Ubuntu
روی Ubuntu 16.04 شما میتوانید همه اینترفیس ها را در فایل کانفیگ /etc/network/interfaces تعریف کنید.
خطوط زیر را به آن اضافه کنید.
فایل را ذخیره و سرویس شبکه را restart کنید. (یا سیستم را reboot کنید)
روی Ubuntu 18.04 شبکه با برنامه netplan کنترل میشود. شما نیاز دارید که فایل مناسب را در دایرکتوری /etc/netplan ویرایش کنید. به طو ر مثال :
سپس dhcp4 را تحت اینترفیس خاص به طور مثال برای ethernets, ens0 فعال کنید و کانفیگ های مرتبط با ip static را کامنت کنید. (اینجا چک شود)
تغییرات را ذخیره کنید و کامند زیر را برای اعمال تغییرات اجرا کنید.
برای اطلاعات بیشتر صفحه راهنمای dhcp و dhcp.conf را مشاهده کنید.
در این مقاله ما نحوه کانفیگ یک DHCP Server در توزیع های لینوکسی CentOS و Ubuntu شرح دادیم. اگر شما نیاز به توضیحات بیشتر روی موارد بالا داشتید آنرا در همین پست مطرح کنید.
DHCP به این دلیل مهم است که از کانفیگ دستی ip آدرس به کامپیوترهای جدید اضافه شده به شبکه و کامپیوترهایی که از یک subnet به یک subnet دیگر منتقل شده اند جلوگیری میکند.
ip آدرسی که از یک DHCP سرور به یک DHCP کلاینت اختصاص داده میشود روی یک "lease" میباشد، lease time به صورت نرمال بسته به مدت زمانیکه یک کامپیوتر کلاینت نیاز به ارتباط یا تنظیمات DHCP دارد تغییر میکند.
در این مقاله، ما نحوه کانفیگ DHCP Server در توزیع لینوکسی CentOS و Ubuntu را برای اختصاص دادن ip آدرس به یک ماشین کلاینت به صورت اتوماتیک شرح خواهیم داد.
نصب DHCP Server در CentOS و Ubuntu
پکیج DHCP Server در ریپازیتوری رسمی از توزیع لینوکسی در دسترس است، نصب آن بسیار آسان است و به سادگی با استفاده از دستورات زیر میتوان آنرا نصب کرد.
کد PHP:
# yum install dhcp #CentOS
$ sudo apt install isc-dhcp-server #Ubuntu
کد PHP:
# vim /etc/sysconfig/dhcpd #CentOS
$ sudo vim /etc/default/isc-dhcp-server #Ubuntu
در Ubuntu :q:
کد PHP:
INTERFACESv4="eth0"
در CentOS :
کد PHP:
DHCPDARGS=”eth0”
کانفیگ DHCP Server در CentOS و Ubuntu
فایل کانفیگ اصلی DHCP در /etc/dhcp/dhcpd.conf قرار دارد که باید شامل تعریف تمام پارامترهای شبکه که باید برای کلاینت فراهم آورده شود، باشد.
این فایل اساسا شامل لیستی از عبارات گروه بندی شده در دو دسته اصلی میباشد.
- Global parameters : مشخص میکند که چگونه یک تسک باید انجام شود، در حقیقت انجام یک تسک یا اینکه چه پارامترهای کانفیگی شبکه باید برای کلاینت DHCP فراهم آورده شود.
- Declarations : تکنولوژی شبکه را تعریف میکند، یک کلاینت را در آن قرار میدهد. برای کلاینت آدرس قرار میدهد و یا گروهی از پارامترها را برای کلاینت تعریف میکند.
اکنون، فایل کانفیگ را برای تنظیم DHCP سرورتان باز کنید.
کد PHP:
------------ On CentOS ------------
# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
# vi /etc/dhcp/dhcpd.conf
------------ On Ubuntu ------------
$ sudo vim /etc/dhcp/dhcpd.conf
کد PHP:
option domain-name "linuxzone.lan";
option domain-name-servers ns1.linuxzone.lan, ns2.linuxzone.lan;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
کد PHP:
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-search "linuxzone.lan";
option domain-name-servers 192.168.1.1;
range 192.168.1.10 192.168.1.100;
range 192.168.1.110 192.168.1.200;
}
کانفیگ آی پی static روی کلاینت dhcp
برای اختصاص دادن یک آی پی آدرس ثابت (static) قسمت زیر را هنگامی که نیاز به mac address و ip استاتیک دارید ،اضافه کنید. در قسمت hardware ethernet مک آدرس سیستم مورد نظر و در قسمت fixed-address هم ip آدرس سیستم را وارد کنید.
کد PHP:
host centos-node {
hardware ethernet 00:f0:m4:6y:89:0g;
fixed-address 192.168.1.105;
}
host fedora-node {
hardware ethernet 00:4g:8h:13:8h:3a;
fixed-address 192.168.1.106;
}
اکنون که شما سرویس DHCP سرورتان را کانفیگ کرده اید، شما باید سرویس را start کنید و آنرا برای boot های بعدی سیستم فعال کنید. (که به صورت اتوماتیک start شود) و با استفاده از دستورات زیر چک کنید که سرویس up و در حال اجرا باشد.
کد PHP:
------------ On CentOS ------------
# systemctl start dhcpd
# systemctl enable dhcpd
# systemctl enable dhcpd
------------ On Ubuntu ------------
$ sudo systemctl start isc-dhcp-server
$ sudo systemctl enable isc-dhcp-server
$ sudo systemctl enable isc-dhcp-server
کد PHP:
------------ On CentOS ------------
# firewall-cmd --zone=public --permanent --add-service=dhcp
# firewall-cmd --reload
#------------ On Ubuntu ------------
$ sudo ufw allow 67/udp
$ sudo ufw reload
کانفیگ کلاینت های DHCP
در نهایت شما نیاز دارید که تست کنید آیا DHCP سرور به درستی کار میکند. به یکسری از ماشین های کلاینت روی شبکه لاگین کنید و آنها را کانفیگ کنید که به صورت اتوماتیک از سرور ip بگیرند.
فایل کانفیگ مناسب را برای اینترفیسی که میخواهید روی کلاینت به صورت اتوماتیک ip آدرس بگیرد بررسی و تغییر دهید.
تنظیمات DHCP Client روی CentOS
روی CentOS فایل های کانفیگ اینترفیس در مسیر /etc/sysconfig/network-scripts/ قرار گرفته اند.
کد PHP:
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
کد PHP:
DEVICE=eth0
BOOTPROTO=dhcp
TYPE=Ethernet
ONBOOT=yes
کد PHP:
# systemctl restart network
تنظیمات DHCP Client روی Ubuntu
روی Ubuntu 16.04 شما میتوانید همه اینترفیس ها را در فایل کانفیگ /etc/network/interfaces تعریف کنید.
کد PHP:
$ sudo vi /etc/network/interfaces
کد PHP:
auto eth0
iface eth0 inet dhcp
کد PHP:
$ sudo systemctl restart networking
کد PHP:
$ sudo vim /etc/netplan/01-netcfg.yaml
کد PHP:
network:
version: 2
renderer: networkd
ethernets:
ens0:
dhcp4: yes
کد PHP:
$ sudo netplan apply
کد PHP:
$ man dhcpd
$ man dhcpd.conf