DHCP

Dynamic Host Configuration Protocol (DHCP) یک پروتکل شبکه است که برای اختصاص خودکار آدرس‌های IP و سایر تنظیمات پیکربندی شبکه، مانند subnet mask و default gateway، به دستگاه‌های شبکه استفاده می‌شود. DHCP به مدیران شبکه اجازه می‌دهد تا فرآیند اختصاص آدرس IP را مدیریت و خودکار کنند و آن را کارآمدتر و کمتر مستعد خطا کنند. این پروتکل به دستگاه‌ها اجازه می‌دهد بدون نیاز به پیکربندی دستی تنظیمات شبکه به شبکه متصل شوند و راه‌اندازی و نگهداری شبکه را ساده می‌کند. DHCP به طور گسترده در شبکه‌های محلی (LAN) استفاده می‌شود و یک کامپوننت کلیدی بسیاری از شبکه‌های سازمانی است.

DHCP Client

یک DHCP client دستگاهی است که آدرس IP، subnet mask، default gateway و سایر اطلاعات پیکربندی شبکه را از یک DHCP server درخواست و دریافت می‌کند. هنگامی که یک DHCP client به شبکه متصل می‌شود، یک پیام درخواست broadcast (DHCPDISCOVER) ارسال می‌کند که اطلاعات پیکربندی IP را درخواست می‌کند. DHCP server با یک offer (DHCPOFFER) حاوی اطلاعات درخواست شده پاسخ می‌دهد. سپس client یک request (DHCPREQUEST) به server ارسال می‌کند که نشان می‌دهد آدرس IP پیشنهادی را پذیرفته است. در نهایت، server درخواست را acknowledge (DHCPACK) می‌کند و client می‌تواند شروع به استفاده از آدرس IP اختصاص داده شده و اطلاعات پیکربندی شبکه برای ارتباط در شبکه کند.

SoodarOS از DHCPCD به عنوان برنامه DHCP client خود برای دریافت خودکار آدرس IP برای اینترفیس‌ها استفاده می‌کند.

تنظیم DHCP Client

برای پیکربندی یک DHCP client، باید DHCP را روی اینترفیسی که آدرس IP را از DHCP server دریافت می‌کند، فعال کنید.

ip address dhcp

دستور ip address dhcp برای دریافت یک آدرس IP به صورت دینامیک از طریق DHCP (Dynamic Host Configuration Protocol) از یک DHCP server استفاده می‌شود.

هنگامی که این دستور روی یک اینترفیس استفاده می‌شود، روتر به عنوان یک DHCP client عمل می‌کند و یک آدرس IP از یک DHCP server درخواست می‌کند. DHCP server یک آدرس IP همراه با سایر تنظیمات شبکه، مانند subnet mask، default gateway و آدرس DNS server را به دستگاه اختصاص می‌دهد.

soodar(config)# int ge1
soodar(config-if)# ip address dhcp
ip dhcp client hostname HOSTNAME

این دستور برای پیکربندی hostname برای یک DHCP client استفاده می‌شود. هنگامی که روتر یا switch یک درخواست DHCP ارسال می‌کند، hostname پیکربندی شده را در بسته درخواست شامل می‌کند. این می‌تواند برای شناسایی دستگاه روی DHCP server، به ویژه در شبکه‌های بزرگ با بسیاری از DHCP client ها مفید باشد.

  • HOSTNAME: نامی که به عنوان hostname DHCP client استفاده می‌شود را مشخص می‌کند.

Note

مقدار پیش‌فرض hostname روتر است.

ip dhcp client request router

این دستور برای پیکربندی دستگاه در حال اجرا به عنوان DHCP client برای درخواست آدرس IP default gateway (router) از DHCP server استفاده می‌شود.

به طور پیش‌فرض، DHCP client آدرس IP default gateway را از DHCP server درخواست می‌کند، بنابراین می‌توان از دستور no ip dhcp client request router برای غیرفعال کردن این رفتار استفاده کرد.

Note

هنگامی که فرم no دستور استفاده می‌شود، آدرس gateway ارائه شده را رد می‌کند.

ip dhcp client request dns-nameserver

درخواست (یا رد در صورت نفی) گزینه DNS از server.

DHCP Server

یک DHCP server یک سرور شبکه است که به طور خودکار آدرس‌های IP و سایر پارامترهای پیکربندی شبکه، مانند subnet mask، default gateway و DNS server ها را به دستگاه‌های شبکه اختصاص می‌دهد. این سرور با ارائه یک روش متمرکز برای مدیریت آدرس‌های IP و کاهش احتمال تداخل آدرس، مدیریت شبکه را ساده می‌کند. DHCP server به درخواست‌های DHCP از client ها گوش می‌دهد و با اطلاعات پیکربندی لازم برای فعال کردن client برای ارتباط در شبکه پاسخ می‌دهد. DHCP server ها معمولاً در شبکه‌های خانگی و تجاری استفاده می‌شوند.

SoodarOS از Kea DHCP به عنوان backend برای ارائه قابلیت‌های DHCP server استفاده می‌کند. این قابلیت‌ها شامل:

  • اضافه کردن IP pool ها و تعریف subnet و محدوده IP برای اختصاص به میزبان‌ها

  • ارائه آدرس‌های DNS server به client ها

  • ارائه آدرس gateway به client ها

  • ارائه آدرس‌های NTP server به client ها

  • تنظیم زمان lease برای هر pool

  • نمایش/پاک کردن bindings

Configuring Pool

ip dhcp pool DHCP4POOL

این دستور برای پیکربندی یک pool سرور DHCP (Dynamic Host Configuration Protocol) برای آدرس‌های IPv4 استفاده می‌شود. هنگام پیکربندی یک DHCP pool، مدیر شبکه یک pool از آدرس‌های IP را تعریف می‌کند که می‌تواند به صورت دینامیک به client هایی که از DHCP server یک آدرس IP درخواست می‌کنند، اختصاص داده شود. این دستور برای ایجاد pool و پیکربندی پارامترهای مختلف برای pool مانند subnet mask، default gateway، DNS server، مدت lease و موارد دیگر استفاده می‌شود.

  • DHCP4POOL: نام pool را مشخص می‌کند.

soodar(config)# ip dhcp pool p1
soodar(dhcp-config)# 
network A.B.C.D/M

در پیکربندی DHCP pool، دستور network برای مشخص کردن آدرس شبکه و طول prefix از pool آدرس IP که باید به DHCP client ها اختصاص داده شود، استفاده می‌شود.

  • A.B.C.D/M: آدرس prefix pool را مشخص می‌کند.

برای مثال، برای پیکربندی یک DHCP pool با آدرس شبکه 192.168.1.0/24، دستور به این صورت خواهد بود:

soodar(config)# ip dhcp pool p1
soodar(dhcp-config)# network 192.168.1.0/24

این دستور به DHCP server می‌گوید که باید آدرس‌های IP در شبکه 192.168.1.0/24 را به DHCP client ها اختصاص دهد.

included-address A.B.C.D A.B.C.D

این دستور برای مشخص کردن یک محدوده از آدرس‌ها که می‌تواند برای اختصاص به client ها از subnet استفاده شود، استفاده می‌شود. به طور پیش‌فرض، هر IP در subnet pool برای ارائه توسط DHCP Server در دسترس است و برای تغییر این رفتار باید محدوده‌های آدرس included را تنظیم کرد.

هر pool می‌تواند چندین دستور included-address داشته باشد.

soodar(config)# ip dhcp pool p1
soodar(dhcp-config)# network 192.168.1.0/24
soodar(dhcp-config)# included-address 192.168.1.100 192.168.1.120
soodar(dhcp-config)# included-address 192.168.1.140 192.168.1.165
dns-server A.B.C.D ...

دستور dns-server برای مشخص کردن آدرس IP یک سرور Domain Name System (DNS) برای یک DHCP pool استفاده می‌شود. هنگامی که یک DHCP client یک آدرس IP از pool دریافت می‌کند، اطلاعات DNS server نیز ارائه می‌شود تا client بتواند name resolution را با استفاده از DNS انجام دهد.

  • A.B.C.D ...: آدرس IP یک DNS server را نشان می‌دهد. می‌توان چندین آدرس IP را در یک دستور یا با اضافه کردن دستورات dns-server اضافی مشخص کرد.

Note

تا 8 DNS server می‌توان تنظیم کرد. تنظیم بیش از 8 server مجاز نیست.

مثال:

خطوط زیر 1.1.1.1، 4.2.2.4 و 8.8.8.8 را به عنوان DNS server تنظیم می‌کنند:

soodar(config)# ip dhcp pool p1
soodar(dhcp-config)# dns-server 4.2.2.4 1.1.1.1
soodar(dhcp-config)# dns-server 8.8.8.8
default-router A.B.C.D ...

این دستور در حالت پیکربندی DHCP pool برای مشخص کردن آدرس IP default gateway که باید به DHCP client ها اختصاص داده شود، استفاده می‌شود.

  • A.B.C.D ...: آدرس IP default gateway که باید توسط DHCP client ها استفاده شود را مشخص می‌کند. می‌توان از چندین دستور default-router در همان پیکربندی DHCP pool برای مشخص کردن چندین آدرس IP default gateway استفاده کرد.

Note

تا 8 gateway می‌توان تنظیم کرد. تنظیم بیش از 8 آدرس مجاز نیست.

برای مثال، برای پیکربندی یک DHCP pool با default gateway 192.168.1.1، از دستور زیر استفاده می‌شود:

soodar(config)# ip dhcp pool p1
soodar(dhcp-config)# default-router 192.168.1.1
ntp-server NTP ...

دستور ntp-server برای مشخص کردن آدرس IP یک سرور Network Time Protocol (NTP) در پیکربندی DHCP pool استفاده می‌شود. سرور NTP اطلاعات زمان دقیق را به client های شبکه ارائه می‌دهد.

  • NTP: آدرس IP یا نام سرور NTP را مشخص می‌کند.

Note

تا 8 سرور NTP می‌توان تنظیم کرد. تنظیم بیش از 8 سرور مجاز نیست.

soodar(config)# ip dhcp pool p1
soodar(dhcp-config)# ntp-server ir.pool.ntp.org
domain-name NAME

نام دامنه را برای client ها مشخص می‌کند.

soodar(config)# ip dhcp pool p1
soodar(dhcp-config)# domain-name example.org
lease <(0-365)$days (0-23)$hours (0-59)$minutes|infinite>

دستور lease در پیکربندی DHCP pool برای مشخص کردن مدت lease برای DHCP client ها استفاده می‌شود. مدت lease مدت زمانی را مشخص می‌کند که یک client می‌تواند از یک آدرس IP اختصاص داده شده استفاده کند قبل از اینکه lease منقضی شود و client باید درخواست اختصاص آدرس IP جدید را بدهد.

  • days: تعداد روزها در مدت lease را مشخص می‌کند (0-365).

  • hours: تعداد ساعت‌ها در مدت lease را مشخص می‌کند (0-23).

  • minutes: تعداد دقیقه‌ها در مدت lease را مشخص می‌کند (0-59).

  • infinite: مدت lease نامحدود را مشخص می‌کند، به این معنی که اختصاص آدرس IP هرگز منقضی نمی‌شود مگر اینکه به صورت دستی لغو شود.

برای مثال، برای پیکربندی مدت lease 7 روز و 12 ساعت، از دستور زیر استفاده می‌کنید:

soodar(config)# ip dhcp pool p1
soodar(dhcp-config)# lease 7 12 0

Note

زمان lease پیش‌فرض 1 روز است.

Configure interfaces

ip dhcp server

دستور ip dhcp server برای فعال کردن دستگاه برای عمل به عنوان یک DHCP server استفاده می‌شود.

هنگامی که این دستور اجرا می‌شود، دستگاه شروع به گوش دادن روی اینترفیس برای درخواست‌های DHCP ورودی از client ها می‌کند. اگر یک درخواست client دریافت شود، DHCP server یک آدرس IP، subnet mask، default gateway و سایر گزینه‌ها (مانند DNS server ها و NTP server ها) را به client درخواست کننده اختصاص می‌دهد.

باید توجه داشت که پیکربندی اضافی برای پیکربندی DHCP server مورد نیاز است، مانند تعریف DHCP pool ها، مشخص کردن گزینه‌هایی که باید به client ها اختصاص داده شوند و پیکربندی DNS و NTP server ها.

soodar(config-if)# ip dhcp server

مثال کامل تنظیم DHCP Server

اگر می‌خواهید از روتر سودار به عنوان DHCP server استفاده کنید باید ابتدا یک DHCP pool تعریف کرده و سپس در اینترفیس مورد نظر DHCP server را فعال کنید.

  • با دستور network مشخص می‌کنید که در چه رنج شبکه‌ای باید به کلاینت‌ها IP اختصاص یابد.

  • با included-address مشخص می‌کنید چه رنج IP هایی از شبکه فوق باید به کلاینت‌ها اختصاص یابد. می‌توانید چند included-address اضافه کنید.

  • lease مشخص می‌کند که تا چه زمانی IP اختصاص داده شده به یک کلاینت را نگه دارد و به شخص دیگری اختصاص ندهد.

  • default-router آدرس gateway شبکه را مشخص می‌کند.

  • dns-server آدرس DNS server را تنظیم می‌کند.

  • ntp-server آدرس NTP server را تنظیم می‌کند.

تعریف یک DHCP pool:

soodar(config)# ip dhcp pool POOL1
soodar(dhcp-config)# network 192.168.100.0/24
soodar(dhcp-config)# included-address 192.168.100.100 192.168.100.200 
soodar(dhcp-config)# default-router 192.168.100.1
soodar(dhcp-config)# lease 1 0 0 
soodar(dhcp-config)# ntp-server 192.168.100.250
soodar(dhcp-config)# dns-server 8.8.8.8
soodar(dhcp-config)# q

فعال کردن DHCP server در اینترفیس:

soodar(config)# int ge0
soodar(config-if)# ip dhcp server

Pool status and management

show ip dhcp pool

اطلاعات کلی درباره یک pool (یا pool ها) را نمایش می‌دهد.

soodar# show ip dhcp pool p1

Pool p1 :
 Total addresses:	47
 Leased addresses:	1
 Declined addresses:	0
 2 ranges are currently in the pool :
 Range's low       Range's high   
 192.168.1.100     192.168.1.120
 192.168.1.140     192.168.1.165
show ip dhcp binding [<DHCP4POOL|A.B.C.D>]

دستور show برای نمایش اطلاعات درباره bindings DHCP روی دستگاه استفاده می‌شود. می‌تواند با یا بدون نام pool خاص یا آدرس IP client استفاده شود.

  • DHCP4POOL: (اختیاری) نام DHCP pool که bindings آن نمایش داده می‌شود را مشخص می‌کند.

  • A.B.C.D: (اختیاری) آدرس IP DHCP client که binding آن نمایش داده می‌شود را مشخص می‌کند.

اگر نام pool یا آدرس IP client مشخص شود، دستور اطلاعات درباره bindings برای آن entity خاص را نمایش می‌دهد. اگر هیچ پارامتری داده نشود، دستور اطلاعات درباره تمام bindings DHCP روی دستگاه را نمایش می‌دهد.

soodar# show ip dhcp binding
  IP Address   Client hostname   Client HW address   Lease expiration           Pool   Type        State    
  1.1.1.100    n4                00:00:00:aa:00:01   Wed Nov  3 11:20:06 2021   p2     Automatic   Leased

در مثال بالا، خروجی دستور آدرس IP، client ID یا hardware address، زمان انقضای lease و نوع binding DHCP را نمایش می‌دهد.

clear ip dhcp binding <*|A.B.C.D>

این دستور برای حذف یک binding آدرس DHCP از پایگاه داده DHCP server استفاده می‌شود.

  • *: مشخص می‌کند که تمام bindings آدرس DHCP پاک شوند.

  • A.B.C.D: آدرس IP client که binding آدرس DHCP آن باید پاک شود را مشخص می‌کند.

پاک کردن یک binding آدرس DHCP آدرس IP را به pool آدرس بازمی‌گرداند و به آن اجازه می‌دهد به client دیگری اختصاص داده شود.

soodar# clear ip dhcp binding *

خلاصه

DHCP یک پروتکل ضروری برای:

مدیریت خودکار آدرس IP و کاهش خطاهای دستی
ساده‌سازی راه‌اندازی شبکه برای دستگاه‌های جدید
مدیریت متمرکز آدرس‌های IP و تنظیمات شبکه
پیکربندی خودکار DNS، Gateway و NTP server ها
مدیریت lease و کنترل استفاده از آدرس‌های IP

با استفاده صحیح از DHCP می‌توانید مدیریت شبکه خود را ساده‌تر و کارآمدتر کنید.