شما اینجا هستید
پروتکل DHCP
طراحان پروتکلهای TCP/IP در طول سالها تلاش، روی چندین روش برای حل مشکل پیکربندی تنظیمات TCP/IP در شبکههای بزرگ کارکردند. اولین راهحل پروتکل تحلیل آدرس معکوس (RARP) بود که برای ایستگاههای کاری بدون دیسکی که نمیتوانستند تنظیمات TCP/IP خود را بهصورتی ثابت ذخیره کنند، طراحیشده بود .RARP درواقع عکس ARP عمل میکند به این دلیل که ARP در تلاش برای به دست آوردن آدرس سختافزاری یک آدرس IP ، آن آدرس IP را بهصورت همگانی پخش میکند، اما RARP یک آدرس سختافزاری را بهصورت همگانی پخش میکند تا یک سرور RARP آدرس IP واگذارشده به آن کامپیوتر سرویسگیرنده را برگرداند.
RARP برای استفاده روی ایستگاههای کاری بدون دیسک در شبکههای TCP/IP اولیه مناسب بود، اما چون این پروتکل فقط آدرس IP را میتواند در اختیار یک کامپیوتر بگذارد برای نیازهای امروزی جوابگو نمیباشد. این پروتکل هیچیک از تنظیمات موردنیاز یک دستگاه امروزی، از قبیل الگوی زیر شبکه (Subnet Mask) و Gateway پیشفرض را نمیتواند برآورده کند. تلاش بعدی برای به دست آوردن یک مکانیزم پیکربندی TCP/IP خودکار BOOTPنامیده شد. از این پروتکل در حال حاضر نیز استفاده میشود به این دلیل که یک دستگاه را قادر میسازد تنظیمات لازم برای همه پارامترهای پیکربندی خود را که شامل آدرس IP، الگوی زیر شبکه، Gateway پیشفرض و آدرس سرور DNS باشد، دریافت کند. یک دستگاه همچنین میتواند یک فایل راهانداز قابلاجرا را از یک سرور BOOTP با استفاده از پروتکل TFTP دریافت کند. بنابراین واضح است که این پروتکل همانند RARP برای ایستگاههای کاری بدون دیسک طراحیشده است. عیب BOOTP این است که مدیر شبکه باید تنظیمات لازم برای هر دستگاه را روی سرور BOOTP انجام بدهد یعنی در این پروتکل مکانیزمی خودکار برای واگذاری یک آدرس IP به هر یک از کامپیوترها نمیباشد و هیچ امکانی هم برای جلوگیری از اینکه دو کامپیوتر به دلیل خطای مدیر شبکه آدرس های IP یکسانی دریافت نکنند وجود ندارد. مایکروسافت برای رفع این مشکلات RARP و BOOT، پروتکل DHCP را ایجاد کرد. DHCP بر مبنای BOOTP میباشد با این تفاوت که بهجای تغذیهی پارامترهای پیکربندی از پیش تعیینشده، میتواند بهطور پویا آدرسهای IP را از یک منبع IP به ایستگاههای کاری اختصاص دهد و درصورتیکه از آنها استفاده نشود دوباره آنها را جمعآوری کند. در این صورت دیگر امکان اینکه به دو دستگاه یک IP تخصیص داده شود وجود ندارد و مدیران شبکه هم میتوانند بدون اینکه کامپیوترها را مجدداً پیکربندی کنند، آنها را از زیر شبکهای به زیر شبکهی دیگر منتقل کنند.
DHCP يك استاندارد باز است كه در ۲۱۳۲ RFC ي IEEE تعریفشده است. سازندگان ديگر نيز سرویسدهنده DHCP را به بازار عرضه کردهاند، ولي مايكروسافت سرویسدهنده DHCP خود را دربسته ويندوز سرور ۲۰۰۳ قرار داده است .
هر دستگاه و یا اینترفیسی که با اینترنت کار میکند برای استفاده از شبکه و ارتباطات خود نیاز به IP دارد که این IP به دو روش به آن اختصاص داده میشود. روش استاتیک (Static) و روش داینامیک (Dynamic).
در روش استاتیک کاربر بهصورت دستی خودش اقدام به دادن IP به دستگاه میکند. ازجمله مزایای این روش میتوان به شناسایی راحتتر کلاینتها و داشتن IP مشخص و عیبیابی سادهتر نام برد. در کنار این مزایا این روش معایبی نیز دارد که در ادامه به آن اشاره میشود :
- درصورتیکه بخواهد تغییراتی در سیستم اعمال شود این تغییرات باید بهصورت تکتک به سیستمها اعمال شود.
- در صورت زیاد بودن تعداد دستگاهها واردکردن IP بهصورت دستی دشوار است.
- امکان استفاده از IP های مشابه وجود دارد که باعث بروز مشکل در سیستم میشود.
در روش دینامیک از سرویس DHCP استفاده میشود که این سرویس به مدیریت و سازماندهی آدرسدهی میپردازد و این اجازه را به دستگاهها میدهد که برای دریافت IP درخواست داشته باشند.
DHCP را میتوان روی دستگاههای مختلف ازجمله روتر راهاندازی کرد که به آن DHCP Server میگویند. و کلاینتی را که درخواست IP میکند DHCP Client نامیده میشود.
چهار مرحله زیر بعد از دادن درخواست IP رخ میدهد:
- کلاینت درخواست خود را جهت دریافت IP در شبکه پخش میکند که به این مرحله DHCP Discover میگویند.
- در مرحله بعد تمام DHCP Server هایی که Broadcast را دریافت نمودهاند از رنج IP در دسترس خود یک IP انتخاب کرده و بهصورت زیر در اختیار کلاینت قرار میدهند:
Source IP =IP of DHCP Server
Destination MAC Address= Client Destination IP=255.255.255.255
- کلاینت درخواستکننده پس از دریافت DHCP Offer ها اولین آنها را انتخاب نموده و توسط یک Packet در شبکه پخش میکند و در آن Packet آدرس DHCP Server که پیشنهاد آن را قبول کرده بود مشخص میکند.
- DHCP Ack, DHCP Nack
پس از آنکه کلاینت به DHCP Server که انتخاب او قبولشده Request DHCP را فرستاد درصورتیکه IP انتخابشده هنوز در رنج او وجود داشته باشد و حذف نشده باشدDHCP Server تأیید خود را مبنی بر اختصاص IP به کلاینت اعلام میکند در غیر این صورت پیغام DHCP Nack را ارسال میکند و همه مراحل مجدداً باید توسط کلاینت انجام شود.
بهطورکلی اگر DHCP در شبکه موجود نباشد کلاینت بعد از ارسال پیغام اول یک ثانیه منتظر جواب میماند درصورتیکه جوابی دریافت نکرد به فاصله زمانی ۹ و ۱۳ و ۱۶ ثانیه دوباره Broadcast میکند اگر بازهم جواب نگرفت هر ۵ دقیقه یکبار به کار خود ادامه میدهد.
اگر کلاینت به هر دلیلی DHCP را پیدا نکند بهصورت اتوماتیک از APIPA، یک آدرس انتخاب میکند که از رنج ۲۵۴.۱۶۹.x.y است و قبل از استفاده، آن را Broadcast میکند تا کلاینت دیگری در حال استفاده از آن IP نباشد.
به مدتزمانی که به یک کلاینت اختصاص داده میشود Lease Time میگویند که بهصورت پیشفرض ۸ روز است.
Operation Code : به پیامی از نوع BOOTREQUEST و یا BOOTREPLY اختصاصیافته است. بهعبارتیدیگر مشخص میکند که پیام از سرویسدهنده تولیدشده است یا سرویسگیرنده و اندازهاین پیام همانطور که در جدول هم مشاهده میشود ۸ بیت است که معادل یک بایت میباشد.
HTYPE : نوع آدرس سختافزاری موجود در فیلد chaddr را مشخص میکند و اندازه آنهم یک بایت است.
Hlen : طول آدرس سختافزاری موجود در فیلد Chaddr را برحسب بایت نشان میدهد.
Hops: تعداد مسیریابهای موجود بین سرور و سرویسگیرنده را مشخص میکند و اندازه آنیک بایت است.
Xid یا Transaction ID : حاوی یک شناسه برای نسبت دادن جوابها به درخواستها میباشد و بهنوعی کد متعلق به فرایند اختصاصیافته بین سرویسدهنده و سرویسگیرنده میباشد و چهار بایت است.
Secs: مدتزمان گذشته از شروع یک تخصیص آدرس یا فرایند تمدید اجاره را مشخص میکند و ۲ بایت حجم آن است.
Flags: یا بیت پرچم که دو بایت است و مشخص میکند که سرورهای DHCP و واسطهای رله کننده باید برای ارتباط با یک سرویسگیرنده بجای انتقال تکپخشی از انتقال با پخش همگانی استفاده کنند یا خیر.
CIADDR: آدرس IP سرویسگیرنده بهعبارتدیگر آدرس IP کامپیوتر زمانی که در وضعیت باند، تمدید اجاره IP و یا ارتباط مجدد میباشد را دارا است و اندازه آن چهار بایت است.
YIADDR: آدرس IP سرویسگیرنده شما بهعبارتدیگر آدرس IP که توسط DHCP به یک کامپیوتر واگذارشده است را در بردارد و اندازه آن چهار بایت است.
SIADDR: آدرس IP سرور بعدی را در یک دنباله Bootstrap مشخص میکند از این مقدار فقط زمانی که سرور DHCP یک فایل راهانداز اجرایی به یک سرویسگیرنده بدون دیسک میدهد استفاده میشود و اندازه آن ۴ بایت است.
GIADDR: در صورت نیاز، حاوی آدرس IP یک واسط رله کننده DHCP مستقر روی شبکهای دیگر میباشد و اندازه آن ۴ بایت است.
CHADDR: آدرس سختافزاری سرویسگیرنده یا بهعبارتیدیگر، با استفاده از نوع و اندازهای که در فیلدهای htype و hlen مشخصشده است نشاندهنده آدرس سختافزاری سرویسگیرنده میباشد. و مقدار آن ۱۶ بایت است.
SERVER HOST NAME که یا حاوی نام DHCP server است یا حاوی دادههای سرریز فیلد option میباشد و مقدار آن ۶۴ بایت است.
BOOT FILE NAME: شامل نام فایلboot ، یکرشته خاتمه دهنده تهی، نام عمومی یا یکرشته تهی در DHCPDISCOVER ، یک fully qualified directory-path name در DHCPOFFER است و به عبارتی برای client های بدون دیسک حاوی نام و آدرس یک فایل راهانداز اجرایی میباشد و ۱۲۸ بایت است .
Option: فیلد پارامترهای اختیاری و بهنوعی حاوی مجموعهای از گزینههای DHCP میباشد که مشخصکننده پارامترهای پیکربندی کامپیوتر سرویسگیرنده هستند.
در این سناریو روتر ژرف بهعنوان سرور DHCP در نظر گرفتهشده است و از پورت gigbethernet 0 به PC ای که بهعنوان DHCP Client در نظر گرفتهشده است ، متصل است.
- تنظیمات روتر ژرف بهعنوانDHCP Server
Zharf1(config)# interface gigbethernet 0
Zharf1(config-if)# ip address 192.168.100.1 255.255.255.0
Zharf1(config)# no shutdown
Zharf1(config)# ip dhcp pool pool1
Zharf1(dhcp-config)# network 192.168.100.0 255.255.255.0
Zharf1(config)# ip dhcp excluded_address 192.168.100.1 192.168.100.10 pool
Gateway: 192.168.100.1
بعد از تنظیمات انجامشده در PC مشاهده خواهد شد که IP اختصاصیافته است و در رنج آدرس مشخصشده در pool تعریفشده است.
PC1> show ip
NAME : PC1[1]
IP/MASK : 192.168.100.11/24
GATEWAY : 0.0.0.0
DNS :
DHCP SERVER : 192.168.100.1
DHCP LEASE : 43195, 43200/21600/37800
MAC : 00:50:79:66:68:00
LPORT : 10000
RHOST:PORT : 127.0.0.1:10001
در این سناریو هدف تست روتر ژرف در ۳ نقش DHCP Server (zharf1) ، DHCP Relay (zharf2) ، DHCP Client (zharf3) میباشد، zharf1 وظیفه اختصاص دادن IP به Client ها را به عهده دارد ، zharf2 در نقش واسط که DHCP Server را برای کلاینتها جهت دریافت IP قابلدسترس میکند.
- تنظیمات روتر ژرف بهعنوانDHCP Server
Zharf1(config)#interface gigbethernet 0
Zharf1(config-if)# ip address 192.168.12.1 255.255.255.0
Zharf1(config)# no shutdown
Zharf1(config)# exit
Zharf1(config)# ip dhcp pool pool1
Zharf1(dhcp-config)# network 192.168.23.0 255.255.255.0
Zharf1(dhcp-config)# exit
Zharf1(config)# ip dhcp pool pool2
Zharf1(dhcp-config)# network 192.168.12.0 255.255.255.0
Zharf1(dhcp-config)# exit
Zharf1(config)# ip route 0.0.0.0/0 192.168.12.2
- تنظیمات روتر ژرف بهعنوانDHCP relay
Zharf2(config)# interface gigbethernet 0
Zharf2(config-if)# ip address 192.168.12.2 255.255.255.0
Zharf2(config-if)# no shutdown
Zharf2(config-if)# ip helper-address 192.168.12.1
Zharf2(config)# interface gigbethernet 1
Zharf2(config-if)# ip address 192.168.23.2 255.255.255.0
Zharf2(config-if)# no shutdown
Zharf2(config-if)# ip helper-address 192.168.12.1
- تنظیمات روتر ژرف بهعنوانDHCP Client
Zharf3(config)# interface gigbethernet 0
Zharf3(config-if)# ip address dhcp
Zharf3(config) # no shutdown
بعد از تنظیمات انجام داده در روتر ژرف که بهعنوان client در نظر گرفته شده است مشاهده خواهد شد که IP اختصاصیافته است و در رنج آدرس مشخصشده در pool تعریفشده است. به کمک دستور show ip interface brief میتوان از صحت این مورداطمینان یافت.
Zharf3(config-if)# do show ip int bri
Interface OK? IP-Address Method Status Protocol
---------- ----- ----------- ------ ------ ------
gbeth0 YES unassigned unset Administratively down down
gbeth1 YES 192.168.23.3 dhcp up up
gbeth2 YES unassigned unset Administratively down down
gbeth3 YES unassigned unset Administratively down down
gbeth4 YES unassigned unset Administratively down down
gbeth5 YES unassigned unset Administratively down down
پیشنهاد میشود، در صورت نگرفتن IP توسط کلاینت ابتدا ارتباط کلاینت با DHCP Relay و سپس با DHCP Server بررسی شود، در صورت درست بودن ارتباط ، ابتدا تنظیمات روتر DHCP Relay و سپس تنظیمات DHCP Server بررسی شود.