hiddenboy
10-04-2008, 08:04 PM
مقدمه
در شبکههای با ساختار کوچک پیکربندی شبکه کامپیوترهای رومیزی به صورت دستی امکان پذیر است اما پیکربندی شبکه سیستمها در ساختار های بزرگتر امری است مشکل و بعضا غیر ممکن. حتی در شبکههای کوچک، پیکربندی سیستمها با هر تغییراتی، فعالیت کاربران مختل و نارضایتی را در نحوه پشتیبانی بوجودخواهد آورد. در نتیجه راه حل این است که یک سرور فعالیت آدرس دهی شبکه و پیکربندی را بطور اتوماتیک انجام دهد.
پروتکل Bootstrap
این پروتکل (BootP) اولین پروتکل پیکربندی بوده که میتواند کلیه اطلاعات برای پیکربندی TCP/IP یک کلاینت که تقاضای IP نموده را فراهم کند تا براحتی با سرور شبکه و سایر کلاینتها در ارتباط باشد. مکانیزم عملکرد این پروتکل بدین صورت است که یک بسته به نام BootRequest به پورت های UDP شماره ٦٧ همه دستگاههای شبکه ارسال میکند. کلاینت همه اطلاعاتی را که راجع به خودش دارد را در بسته BootRequest قرار میدهد که میتواند فقط آدرس لایه فیزیکی باشد. فقط هنگامی که یک سرور BootP یک بسته روی پورت ٦٧ دریافت میکند، یک بسته BootReply میسازد و داخل آنرا تا آنجایی که بتواند با اطلاعات پیکربندی مورد نیاز کلاینت پر میکند. سپس سرور با استفاده از پورت شماره ٦٨ UDP، بسته را روی شبکه انتشارمی دهد. کلاینت روی پورت ٦٨ منتظر دریافت بسته است. هنگام که یک بسته روی پورت دریافت کرد که حاوی آدرس فیزیکیاش است از اطلاعات داخل بسته برای پیکربندی TCP/IP خود استفاده میکند.
پروتکل DHCP (Dynamic Host Configuration Protocol)
DHCP روی پورتهای مشابه BootP یعنی ٦٧ و ٦٨ کار میکند. DHCP کلیه سرویسهای BootP بعلاوه تعدادی کاربرد مهم دیگر را ارائه میدهد.
یک خاصیت مهم اضافه در DHCP این است که آدرسها میتوانند بصورت پویا به یک سیستم داده شوند.
آدرس IP که با استفاده از دستور ifconfig یا بوسیله BootP، به یک سیستم تخصیص می یابد، به صورت دائم برای آن در نظر گرفته می شود و سیستم دیگری در شبکه نمی تواند آنرا اختیار کند. اما DHCP آدرس را برای یک مدت زمانی مشخص به کلاینت اجاره میدهد و بعد از اتمام دوران اجاره، میتواند آن آدرس را به کلاینتهای دیگر اجاره دهد.
مزیت استفاده از آدرسدهی پویا، استفاده بهینه از تعداد کم آدرس است. آدرسهای بلا استفاده برای استفاده سایر کلاینتها آزاد میشود. آدرس دهی پویا بوسیله DHCP، مانند همه چیزهای دیگر بدون نقص نیست. از آنجاییکه DNS از آدرسهایی که توسط DHCP تخصیص مییابد اطلاعی ندارد در نتیجه
کامپیوترهای خارج از شبکه داخلی نمیتوانند سیستمی را که از طریق DHCP، آدرس دریافت کرده را پیدا کنند در نتیجه این سیستم نمیتواند به سایر سیستمهای راه دور سرویس ارائه دهد. این یک نقص است ولی باعث اختلال در شبکه نمیشود.
از آنجاییکه اولا فقط سرورها باید به سایر سیستمها سرویس ارائه دهند، میتوان پیکر بندی شبکه آنها را بصورت دستی تنظیم نمود. دوما اینکه تعداد سرورها نسبت به مجموع تعداد سیستمها کمتر است. در نتیجه هزینه و حجم پیکربندی سرورها به نسبت کمتر است. پس نتیجه میگیریم که سیستمهای رومیزی نامزدهای خوبی برای پیکربندی توسط DHCP هستند. اما تکنیکهایی برای انطباق آدرسهای DHCP و DNS با استفاده از Dynamic DNS (DDNS) وجود دارد که برای توضیحات بیشتر به مقالات DNS مراجعه شود
Reverse Address Resolution Protocol (RARP)
همانگونه که از جمله استنباط می گردد، این پروتکل برعکس ARP می باشد. بجای سؤال کردن آدرس اترنت در پاسخ به آدرسهای IP، این پروتکل آدرس اترنت را در شبکه انتشار می دهد و آدرسIP را درخواست میکند. یک سرور RARP از فایل /etc/ethernets برای نگاشت آدرسهای اترنت به آدرسهای IP، استفاده میکند.
نصب DHCP Server
اکثر توزیعهای Linux، DHCP را در مراحل اولیه نصب در صورت درخواست کاربر، برروی سیستم نصب میکنند. اگر لینوکس مورد نظر شما حاوی سرویس DHCP نبود یا یک نسخه جدیدتر از نسخهای که به همراه سیستمتان است میخواهید، در هر دو صورت میتوانید سورس DHCP را از سایت www.isc.org دانلود کنید و آنرا کامپایل کنید.
dhcpd با هسته لینوکس ٢.٤ به بالا به خوبی کار میکند اما اگر لینوکس مورد استفاده هسته قدیمی دارد امکان دارد مشکلاتی بوجود آید که یکی از آنها مشکل سرویسدهی به کلاینتهای ویندوزی است. پس ترجیحاً از نسخههای بالاتر DHCP و کرنلهای جدیدتر استفاده کنید.
اجرای dhcpd
با دستور زیر dhcpd شروع به فعالیت می نماید.
[ root] # /etc/init.d/dhcpd start
dhcpd لیست آدرسهایی را که به کلاینتها تخصیصی میدهد در فایل /var/lib/dhcp/dhcpd/lease نگهداری میکند. dhcpd برای شروع به این فایل احتیاج دارد. هنگامیکه سرور برای اولین بار نصب میگردد، یک فایل (lease) خالی تولید می کند تا مطمئن شود سرویس از ابتدا بدرستی شروع به کار می کند.
dhcpd اطلاعات را در به صورت متنی نگه داری می نماید.
هر سطر فایل قالب زیر را دارد:
lease address {statements}
هر آدرس اجارهای با کلمه کلیدی lease و آدرس IP که توسط DHCP اختصاص داده شده آغاز میشود. {statements} مشخصات و شرایط اجاره آدرس را بیان میکند. مقادیری که ممکن است در این قسمت برای بیان شرط استفاده شوند از این قرارند:
starts date: زمان آغاز اجاره را ضبط میکند.
ends date: زمانی که اجاره به پایان میرسد را نشان میدهد. .
hardware_type mac_address hardware
آدرس لایه فیزیکی کلاینت را ضبط میکند. درشبکه مبتنی بر اترنت، مقدار hardware_type ،ethernet است و مقدار mac_address ، آدرس Ethernet است .
uid client_identifier
dhcp یک شناسه برای کلاینتی که از آدرس اجارهای استفاده میکند در نظر میگیرد. بسیاری از کلاینتها با آدرس اترنت خود شناسایی می شوند واحتیاج به مشخصه جداگانه ندارند.
client_hostname "name"
اگر در DHCP، گزینه client_hostname ذکر شده باشد در قسمت “name” قرار میگیرد.
hostname “name”
اگر در DHCP، گزینه hostname ذکر شود، در این قسمت گذاشته میشود. کلاینتهای ویندوزی نام میزبانشان را با استفاده از این گزینه برای سرور ارسال میکنند.
abandoned
از این گزینه به عنوان اجاره ممنوعه قلمداد میشود. اگر سرور برای تخصیص یک آدرس با مشکل مواجه شود آن آدرس را ممنوع و از آن استفاده نمیکند اما اگر با کمبود آدرس مواجه شود دوباره از آن استفاده میکند.
لازم به ذکر است که فایل lease فقط توسط DHCP استفاده شده و تغییر مییابد و احتیاجی به تغییرات کاربر ندارد. کاربر فقط فایل dhcpd.conf را تغییر میدهد.
پیکربندی کارگزار DHCP
بعد از نصب DHCP، باید آنرا پیکربندی کرد. DHCP توسط dhcpd.conf پیکربندی میشود. زبان پیکربندی dhcpd شامل جملههای host وsubnet است که دامنه سیستمهایی که سرویس میگیرند را مشخص میکند. عبارت host ممکن است به صورت زیر باشد.
host osprey {
hardware ethernet 00:00:0C:43:8D:FB ;
fixed−address 172.16.70.8 ; }
این عبارت نام میزبان، آدرس اترنت و آدرس IP کلاینت را مشخص میکند. هنگامیکه به این شکل ساختاربندی شود، dhcpd سرویس تخصیص آدرس ایستا مانند پروتکل bootp را ارائه میدهد. این مدل آدرسدهی برای سرورهایی مانند DNS مناسب است که احتیاج به آدرس ایستا و ثابت دارند.
قالب عبارت subnet به صورت زیر
subnet 172.16.70.0 netmask 255.255.255.0 {
range 172.16.70.100 172.16.70.250 ; }
عبارت subnet بیان میکند که یک سرویس DHCP برای شبکه 172.167.0.0 فراهم شدهاست. range بیانگر دامنه آدرسها برای تخصیص پویاست.
کنترل سرور و عملیات پروتکل
زبان پیکربندی شامل امکانات زیادی است که عملکرد سرور و پروتکل DHCP را کنترل میکند. اول لغات Allow و Deny که کنترل میکند dhcpd درخواستهای کلاینتها را چگونه کنترل کند. هر عبارت با دستور allow یا deny به دنبال کلمه کلیدی که بیان میکند چه درخواستی مورد قبول یا رد قرار گیرد، آغاز میشود. سه کلمه کلیدی ممکن، عبارتند از ١-unknown_clients ٢- bootp٣-booting
1.unknown_clients
درخواستهای پیکربندی از کلاینتهایی که برای سرور نا آشنا هستند و تعریف نشده اند، میتوانند قبول یا رد شوند. به طور پیشفرض این کلاینتها مورد قبول واقع میشوند در غیر اینصورت برخی از قابلیتهای DHCP از بین میرود.
2.bootp
سرور میتواند پیکربندی درخواستهایی که از کلاینتهای bootp میآیند را قبول یا رد کند. به طور پیشفرض کلاینتهای bootp مجازند که توسط این سرور پیکربندی شوند در نتیجه تمام کلاینتهای bootp و DHCP توسط یک سرور پیکربندی میشوند.
3.booting
عبارت deny booting در عبارت host استفاده میشود و به سرور میگوید که سرور نباید درخواست از یک کلاینت مشخص را بررسی کند. پیش فرض این است که درخواستهای کلاینت جواب داده شود و احتیاجی به عبارت allow booting نیست.
علاوه بر سه عبارت که در بالا توضیح داده شد، پارامترهای پیکربندی متفاوتی وجود دارند که عملیات پروتکل را کنترل میکنند که در اینجا به برخی از آنها اشاره می گردد.
default_lease_time seconds
اگر کلاینت مدت زمان اجاره را مشخص نکند. سیستم این زمان را به طور پیش فرض برای مدت زمان اجاره یک آدرس در نظر میگیرد.
fixed_address address [, address…]
یک آدرس ثابت به عنوان بخشی از یک عبارت host به یک میزبان تخصیص میدهد. بیش از یک آدرس به کلاینتهایی که در بیش از یک زیر شبکه قراردارند داده میشود.
get_lease_hostnames flag
اگر flag برابر true باشد، dhcpd یک جستجوی معکوس برای هر آدرسی که اجاره میدهد انجام میدهد. داده و نام میزبان را از DNS دریافت نموده و به کلاینت ارسال میکند. این فرایند میتواند باعث بالا رفتن حجم فعالیت خادم روی شبکههای بزرگ شود. این flag به صورت پیشفرض false است و هیچ جستجویی در DNS صورت نمیگیرد.
hardware hardware_type mac_address
آدرس اترنت کلاینت را مشخص میکند. پارامتر hardware باید قسمتی از عبارت host باشد، که با استفاده از آدرس پایه فیزیکی، اطلاعات یک میزبان را به یک کلاینت مشخص مربوط میکند.
آدرس لایه فیزیکی تنها راه برای کلاینت bootp است تا شناسایی شود. کلاینتهای DHCP از مقادیر دیگری علاوه بر آدرس لایه فیزیکی برای شناسایی خودشان میتوانند داشته باشند.
max_lease_time seconds
ماکزیمم مدت زمان اجاره را بدون در نظر گرفتن مدت زمان درخواستی کاربر بیان میکند. مدت زمان به ثانیه بیان میشود.
range [dynamic_bootp] low_address[high_address]
بیانگر دامنه آدرسهای موجود برای تخصیص پویاست. کلمه کلیدی [dynamic_bootp] اگر در این عبارت قرار گیرد dhcpd تشخیص می دهد که آدرسهای پویا را به کلاینتهای bootp علاوه بر کلاینتهای DHCP اختصاص دهد. کلاینتهای bootp درکی از آدرسهای اجارهای ندارند بنابر این معمولاً آدرسهای پویا نمیگیرند.
server_identifier address
این گزینه آدرس IP سروری که برای کلاینتها فرستاده میشود را بیان میکند.
این عبارات و پارامترها نحوه عملکرد سرور را مشخص میکنند. اما بیشتر اطلاعات فایل پیکربندی DHCP، اطلاعاتی برای کلاینت هستند. در قسمت بعدی به گزینههای پیکربندی که اطلاعات پیکربندی برای کلاینتها را بیان میکند پرداخته خواهد شد.
گزینههای پیکربندی dhcpd
عبارتهای گزینه ای dhcpd، تمام گزینههای پیکربندی که در RFC(Request For Comments) بیان شده است را پوشش میدهد. بیش از ٦٠ گزینه پیکربندی استاندارد وجود دارد. این گزینهها را در شش گروه زیر تقسیم میکنیم:
١- گزینههای پایه ٢- گزینههای میزان سازی ٣- گزینههای مسیریابی ٤- گزینههای NetBIOS ٥- گزینههای کلاینتهای بدون دیسک و٦- سایر گزینهها
1.گزینههای پایه:
این گزینهها مواردی از قبیل آدرس،subnet mask و مسیریاب پیشفرض را بیان میکند. لیست زیر همچنین شامل سرورهایی مانند سرورهای DNS و سرورهای چاپگر است که معمولاً در یک فایل پیکربندی آورده میشوند.
option broadcast_address address
آدرس انتشار را بیان میکند.
option DHCP_client_identifier string
یک رشته را به جای آدرس سخت افزاری کلاینت معرفی میکند.
option domain_name domain
نام دامنه را بیان میکند.
option domain_name_servers address_list
لیست آدرس سرورهای DNS را نشان میدهد.
option lpr−servers address−list
لیست آدرس سرورهای چاپگر را نشان میدهد.
option ntp_server address_list
لیست آدرس سرورهای NTP ( Network Time Protocol) را نشان میدهد.
option pop_server address_list
آدرس سرورهای POP3 را نشان میدهد.
option routers address_list
آدرس روترهای در سمت کلاینت را به ترتیب اولویت لیست میکند.
option smtp_server address_list
آدرس سرورهای SMTP e-mail را لیست میکند.
option subnet_mask mask
subnet mask را نشان میدهد. اگر این گزینه ذکر نشود، network mask از عبارت subnet استفاده میشود.
گزینههای میزان سازی
لیست زیر گزینههایی که برای میزانسازی پروتکل TCP/IP مورد استفاده قرار میگیرند را بیان میکند.
option all_subnets_local [ 0 | 1]
مشخص میکند که آیا همه زیرشبکهها از MTU (Maximum Transmission Unit) استفاده میکنند یا نه. یک به معنای این است که همه استفاده میکنند و صفر به معنای این است که بعضی از زیرشبکهها MTUهای کوچکتری دارند.
option arp_cache_timeout seconds
بیان میکند که چه مدت کلاینتها باید ورودیهای جدول ARP را در cache نگهدارند.
option default_ip_ttl ttl
بیانگر زمان زنده ماندن (TTL) پیشفرض برای بستههای IP خروجی است. مقادیر ممکن بین ١ تا ٢٥٥ است.
option default_tcp_ttl ttl
بیانگر مقدار TTL برای سگمنتهای TCP است. مقادیر ممکن بین ١ تا ٢٥٥ است.
option interface_mtu bytes
بیانگر حداکثر واحد انتقال (MTU) که باید توسط کلاینت مورد استفاده قرار گیرد.
option mask_supplier 0 | 1
مشخص میکند که آیا کلاینت باید به درخواستهای ICMP subnet mask پاسخ بدهد یا خیر. صفر یعنی خیر و یک یعنی بله که مقدار پیشفرض صفر است چون کلاینتها معمولاً به این درخواستها پاسخ نمیدهند.
option max_dgram_reassembly bytes
بیانگر بزرگترین بسته IP ای است که کلاینت باید سرهم بندی کند. اندازه آن نمیتواند کمتر از 576 بایت باشد.
گزینههای مسیریابی
گزینههای زیر مربوط به مسیریابی هستند. به جز معرفی مسیر پیشفرض، هر چیزی مربوط به مسیریابی در اینجا پوشش داده میشود. مسیر پیشفرض در قسمت گزینههای پایه توضیح داده شده است.
option ip_forwarding 0 | 1
به کلاینت میگوید که ارسال IP را غیرفعال (٠) و یا فعال (١) کند.
0 | 1 option non_local_source_routing
به کلاینت میگوید که مسیر منبع غیر محلی را غیر فعال (٠) و یا فعال (١) کند. مقدار صفر از امنیت بیشتری برخوردار است. مسیرهای منبع چون ممکن است باعث خروج داده از شبکه محلی شوند، به عنوان مشکل امنیتی در نظر گرفته می شوند.
option policy_filter address mask
آدرسهای mask/مقصد مجاز برای مسیرهای منبع ورودی را مشخص میکند. هر بسته منبع مسیریابی شده که آدرس مقصد بعدی آن با یکی از فیلترها منطبق نباشد توسط کلاینت به دور انداخته میشود.
option static_routes destination gateway
مسیرهای ایستا برای کلاینت به صورت جفتهایی از مقصد و دروازه عبور را نشان میدهد.
گزینههای NetBIOS
گزینههای زیر NetBIOS را روی TCP/IP پیکربندی میکند.
option netbios_dd_server address_list
آدرس سرورهای NBDD(NetBIOS datagram destinations server) را لیست می کند.
option netbios_name_servers address_list
آدرس IP سرورهای (NetBIOS name servers) NBNS را لیست میکند.
option netbios_scope string
NetBIOS را روی حوزه پارامتری TCP/IP بیان میکند.
برای درک بهتر این مقادیر به مباحث NetBIOS و اشتراکگذاری فایل مراجعه کنید.
گزینههای کلاینت بدون دیسک
DHCP میتواند برای بوتکردن کلاینتهای بدون دیسک مانند پایانه های گرافیکی استفاده شود. این لیست شامل گزینههایی وابسته به کلاینتهای بدون دیسک میشود.
option bootfile_name string
فایل بوت کلاینت را مشخص میکند.
option boot_size blocks
تعداد بلاکهای 512-Octet در بوت فایل را مشخص میکند.
option root_path path
مسیر دیسک اصلی کلاینت روی سرور را مشخص میکند.
option merit_dump path
مسیر فایلی که کلاینت به هنگام crash از آن به عنوان dump استفاده میکند را مشخص میکند.
سایر گزینههای سرور
بسیاری از سرورهایی که معمولاً در شبکه مورد استفاده قرار میگیرند، در قسمت گزینههای پایه لیست شدند. اما تعداد دیگری سرورهای شبکه نیز وجود دارند که در این قسمت لیست می شوند اما به دلیل کاربرد کم آنها از ذکر آنها خودداری می شود.
این شش لیست گزینههای ممکن برای DHCP را جمع بندی کرده است. بسیاری از گزینههای دیگر تقریباً هیچوقت مورد استفاده قرار نخواهند گرفت به دلیل اینکه مقادیر پیشفرض این گزینههای درست تنظیم شده است. گزینهها، پارامترها، عبارات گروهی، عبارات میزبان و عبارات زیر شبکه در فایل dhcpd.conf با هم جمع شدهاند تا پیکربندی سرور را انجام داده تا اطلاعاتی که برای کلاینت فرستاده میشوند را تعیین کنند. قسمت بعدی فایل پیکربندی را به جزئیات بررسی میکند.
ساختن یک فایل dhcpd.conf
DHCP پیکربندی خود را از فایل /etc/dhcpd.conf میخواند. dhcpd.conf کلاینت را به سرور میشناساند و پیکربندی سرور برای هر کلاینت در آن مشخص میشود. یک فایل dhcpd.conf در زیر آمده است.
# Define global values that apply to all systems.
max−lease−time 604800;
default−lease−time 86400;
option subnet−mask 255.255.255.0;
option domain "foobirds.org";
option domain−name−servers 172.16.55.1, 172.16.5.1;
option pop−server 172.16.18.1;
# Define the dynamic address range for the subnet.
subnet 172.16.55.0 netmask 255.255.255.0 {
option routers 172.16.55.1;
option broadcast−address 172.16.55.255;
range 172.16.55.64 172.16.55.192;
range 172.16.55.200 172.16.55.250;
}
# Use host statements for clients that get static addresses
group {
use−host−decl−names true;
host kestrel {
hardware ethernet 00:80:c7:aa:a8:04;
fixed−address 172.16.55.4;
}
host ibis {
hardware ethernet 00:00:c0:a1:5e:10;
fixed−address 172.16.55.16;
}
نمونه تنظیمات dhcp
این فایل با پارامترها و گزینههایی که در همه زیر شبکهها و کلاینتها استفاده میشود، آغاز میگردد. دو خط اول بیان میکند که چگونه dhcpd باید تخصیص آدرس پویا را مدیریت کند.
max_lease_time: طولانیترین زمانی که dhcpd میتواند آدرسی را اجاره بدهد مشخص میکند. این زمان بدون در نظر گرفتن مدت زمان درخواستی کلاینت است. در مثال فوق مقدارداده شده معادل یک هفته است.
default_lease_time
اگر کلاینت مدت زمان اجاره آدرس را مشخص نکند از این مقدار به عنوان مدت زمان اجاره استفاده میشود.
٤ خط بعدی در مثال فوق بیانگر گزینههایی برای subnet mask، نام دامنه، آدرس سرورهای دامنه و آدرس سرور pop است.
شبکهای که dhcpd به آن سرویس ارائه میدهد توسط یک آدرس و یک الگو آدرس در عبارت subnet مشخص میشود. dhcpd تنها به کلاینتهایی که در این شبکه قرار دارند و یا مستقیماً توسط عبارات host مشخص شدهاند، سرویس ارائه میدهد. گزینهها و پارامترهای در عبارت subnet فقط برای زیر شبکه و کلاینتهای آن اعمال میشود. در مثال گزینهها مسیریاب پیشفرض زیرشبکه و آدرس انتشار را بیان کرده است.
دو آدرسی که در پارامتر range، آمده است بیان کننده دامنه آدرسهایی است که برای تخصیص آدرس پویا موجود است. اولین آدرس کمترین آدرسی است که میتواند اتوماتیک تخصیص یابد و آدرس دوم بالاترین آدرسی است که میتواند اختصاص یابد. عبارت subnet در مثال دارای دو محدده برای ساخت دو گروه مجزا برای آدرس های پویا است. این نشان میدهد می توان یک فضای آدرس گسسته با استفاده از چند عبارت range داشت.
نکته: اگر پارامتر range در یک عبارت بیان شده باشد و هر کلاینت DHCP در subnet که درخواست آدرس نماید تا زمانیکه آدرس موجود باشد، به آن آدرس اختصاص مییابد. اگر پارامتر range بیان نشده باشد آْدرسدهی پویا فعال نمیشود.
پیکربندی با یک گروه از عبارات host خاتمه مییابد. عبارت گروه از مجموعهای از عبارات host تشکیل شده است. در عبارات host از پارامتر use_host_decl_name استفاده شده است که برای همه میزبانها اعمال شده میشود.
با مقدار دادن این پارامتر، کلاینت در آدرس اترنت 00:80:C7:aa:a8:04، نام میزبان kestrel را به عنوان قسمتی از اطلاعات پیکربندی خویش دریافت میکند. بدون مقداردادن این پارامتر، برای کلاینت آدرس IP فرستاده میشود ولی نام میزبان فرستاده نمیشود.
آدرس اترنت که در عبارت host قرار دارد به عنوان کلیدی برای شناسایی اینکه چه کلاینتی چه اطلاعات پیکربندی دریافت میکند استفاده میشود. در مثال، عبارات میزبان، نام میزبان و آدرس IP کلاینتها را مشخص میکنند. به کلاینتها آدرسهای ایستا داده میشود بنابر این احتیاج به تمدید مدت اجاره آدرسها ندارند.
به علاوه اطلاعاتی که در عبارت host برای کلاینت فرستاده میشود، dhcpd برای آنها الگو زیرشبکه، نام دامنه، آدرسهای سرور DNS و آدرس سرور چاپگر که در قسمت عمومی فایل پیکربندی تعریف شده است را نیز می فرستد.
با استفاده از فایل dhcpd.conf، میتوان هر اطلاعات پیکربندی که مورد نیاز هر میزبان یا زیرشبکهای که از سیستم شما سرویس می گیرد را فراهم نمود. اما سرور DHCP نمیتواند به یک درخواست که دریافت نمیکند پاسخ دهد. درخواستهای DHCP برای آدرس limited broad cast ممکن است توسط مسیریاب ها عبور داده نشوند. برای اینکه در یک شبکه بنگاهی ،که از اتصال چند شبکه به وسیله مسیر یاب تشکیل شده، از یک سرور بتوانیم استفاده کنیم، ممکن است احتیاج به نصب سرورهای DHCP relay داشته باشیم.
مفهوم DHCP relay agent
relay agent درخواست هایی که از زیر شبکه بدون DHCP سرور ارسال می گردد را به DHCP سرور های زیر شبکه های دیگر که مشخص شده اند بازپخش میکند.
http://foss.ir/modules/typetool/pnincludes/uploads/dhcpart.png
شکل۱
دلیل استفاده از DHCP Relay Agent اینست که مسیریاب، انتشار را از خود عبور نمیدهد وکلاینت ها برای گرفتن IP از انتشار استفاده میکنند پس برای حل این مشکل ما از یک DHCP Relay Agent استفاده میکنیم که بدین ترتیب عمل میکند :
DHCP Relay Agent پیغام هایی که به صورت انتشار ارسال میشود و تقاضای IP میکنند را جمع آوری میکند و سپس خود بصورت unicast با DHCP سرور درخواست مورد نظر را مطرح میکند و جواب گرفته شده را برای client ارسال میکند.در واقع DHCP Relay Agent نقش میانجی را ایفا میکند.
در شبکههای با ساختار کوچک پیکربندی شبکه کامپیوترهای رومیزی به صورت دستی امکان پذیر است اما پیکربندی شبکه سیستمها در ساختار های بزرگتر امری است مشکل و بعضا غیر ممکن. حتی در شبکههای کوچک، پیکربندی سیستمها با هر تغییراتی، فعالیت کاربران مختل و نارضایتی را در نحوه پشتیبانی بوجودخواهد آورد. در نتیجه راه حل این است که یک سرور فعالیت آدرس دهی شبکه و پیکربندی را بطور اتوماتیک انجام دهد.
پروتکل Bootstrap
این پروتکل (BootP) اولین پروتکل پیکربندی بوده که میتواند کلیه اطلاعات برای پیکربندی TCP/IP یک کلاینت که تقاضای IP نموده را فراهم کند تا براحتی با سرور شبکه و سایر کلاینتها در ارتباط باشد. مکانیزم عملکرد این پروتکل بدین صورت است که یک بسته به نام BootRequest به پورت های UDP شماره ٦٧ همه دستگاههای شبکه ارسال میکند. کلاینت همه اطلاعاتی را که راجع به خودش دارد را در بسته BootRequest قرار میدهد که میتواند فقط آدرس لایه فیزیکی باشد. فقط هنگامی که یک سرور BootP یک بسته روی پورت ٦٧ دریافت میکند، یک بسته BootReply میسازد و داخل آنرا تا آنجایی که بتواند با اطلاعات پیکربندی مورد نیاز کلاینت پر میکند. سپس سرور با استفاده از پورت شماره ٦٨ UDP، بسته را روی شبکه انتشارمی دهد. کلاینت روی پورت ٦٨ منتظر دریافت بسته است. هنگام که یک بسته روی پورت دریافت کرد که حاوی آدرس فیزیکیاش است از اطلاعات داخل بسته برای پیکربندی TCP/IP خود استفاده میکند.
پروتکل DHCP (Dynamic Host Configuration Protocol)
DHCP روی پورتهای مشابه BootP یعنی ٦٧ و ٦٨ کار میکند. DHCP کلیه سرویسهای BootP بعلاوه تعدادی کاربرد مهم دیگر را ارائه میدهد.
یک خاصیت مهم اضافه در DHCP این است که آدرسها میتوانند بصورت پویا به یک سیستم داده شوند.
آدرس IP که با استفاده از دستور ifconfig یا بوسیله BootP، به یک سیستم تخصیص می یابد، به صورت دائم برای آن در نظر گرفته می شود و سیستم دیگری در شبکه نمی تواند آنرا اختیار کند. اما DHCP آدرس را برای یک مدت زمانی مشخص به کلاینت اجاره میدهد و بعد از اتمام دوران اجاره، میتواند آن آدرس را به کلاینتهای دیگر اجاره دهد.
مزیت استفاده از آدرسدهی پویا، استفاده بهینه از تعداد کم آدرس است. آدرسهای بلا استفاده برای استفاده سایر کلاینتها آزاد میشود. آدرس دهی پویا بوسیله DHCP، مانند همه چیزهای دیگر بدون نقص نیست. از آنجاییکه DNS از آدرسهایی که توسط DHCP تخصیص مییابد اطلاعی ندارد در نتیجه
کامپیوترهای خارج از شبکه داخلی نمیتوانند سیستمی را که از طریق DHCP، آدرس دریافت کرده را پیدا کنند در نتیجه این سیستم نمیتواند به سایر سیستمهای راه دور سرویس ارائه دهد. این یک نقص است ولی باعث اختلال در شبکه نمیشود.
از آنجاییکه اولا فقط سرورها باید به سایر سیستمها سرویس ارائه دهند، میتوان پیکر بندی شبکه آنها را بصورت دستی تنظیم نمود. دوما اینکه تعداد سرورها نسبت به مجموع تعداد سیستمها کمتر است. در نتیجه هزینه و حجم پیکربندی سرورها به نسبت کمتر است. پس نتیجه میگیریم که سیستمهای رومیزی نامزدهای خوبی برای پیکربندی توسط DHCP هستند. اما تکنیکهایی برای انطباق آدرسهای DHCP و DNS با استفاده از Dynamic DNS (DDNS) وجود دارد که برای توضیحات بیشتر به مقالات DNS مراجعه شود
Reverse Address Resolution Protocol (RARP)
همانگونه که از جمله استنباط می گردد، این پروتکل برعکس ARP می باشد. بجای سؤال کردن آدرس اترنت در پاسخ به آدرسهای IP، این پروتکل آدرس اترنت را در شبکه انتشار می دهد و آدرسIP را درخواست میکند. یک سرور RARP از فایل /etc/ethernets برای نگاشت آدرسهای اترنت به آدرسهای IP، استفاده میکند.
نصب DHCP Server
اکثر توزیعهای Linux، DHCP را در مراحل اولیه نصب در صورت درخواست کاربر، برروی سیستم نصب میکنند. اگر لینوکس مورد نظر شما حاوی سرویس DHCP نبود یا یک نسخه جدیدتر از نسخهای که به همراه سیستمتان است میخواهید، در هر دو صورت میتوانید سورس DHCP را از سایت www.isc.org دانلود کنید و آنرا کامپایل کنید.
dhcpd با هسته لینوکس ٢.٤ به بالا به خوبی کار میکند اما اگر لینوکس مورد استفاده هسته قدیمی دارد امکان دارد مشکلاتی بوجود آید که یکی از آنها مشکل سرویسدهی به کلاینتهای ویندوزی است. پس ترجیحاً از نسخههای بالاتر DHCP و کرنلهای جدیدتر استفاده کنید.
اجرای dhcpd
با دستور زیر dhcpd شروع به فعالیت می نماید.
[ root] # /etc/init.d/dhcpd start
dhcpd لیست آدرسهایی را که به کلاینتها تخصیصی میدهد در فایل /var/lib/dhcp/dhcpd/lease نگهداری میکند. dhcpd برای شروع به این فایل احتیاج دارد. هنگامیکه سرور برای اولین بار نصب میگردد، یک فایل (lease) خالی تولید می کند تا مطمئن شود سرویس از ابتدا بدرستی شروع به کار می کند.
dhcpd اطلاعات را در به صورت متنی نگه داری می نماید.
هر سطر فایل قالب زیر را دارد:
lease address {statements}
هر آدرس اجارهای با کلمه کلیدی lease و آدرس IP که توسط DHCP اختصاص داده شده آغاز میشود. {statements} مشخصات و شرایط اجاره آدرس را بیان میکند. مقادیری که ممکن است در این قسمت برای بیان شرط استفاده شوند از این قرارند:
starts date: زمان آغاز اجاره را ضبط میکند.
ends date: زمانی که اجاره به پایان میرسد را نشان میدهد. .
hardware_type mac_address hardware
آدرس لایه فیزیکی کلاینت را ضبط میکند. درشبکه مبتنی بر اترنت، مقدار hardware_type ،ethernet است و مقدار mac_address ، آدرس Ethernet است .
uid client_identifier
dhcp یک شناسه برای کلاینتی که از آدرس اجارهای استفاده میکند در نظر میگیرد. بسیاری از کلاینتها با آدرس اترنت خود شناسایی می شوند واحتیاج به مشخصه جداگانه ندارند.
client_hostname "name"
اگر در DHCP، گزینه client_hostname ذکر شده باشد در قسمت “name” قرار میگیرد.
hostname “name”
اگر در DHCP، گزینه hostname ذکر شود، در این قسمت گذاشته میشود. کلاینتهای ویندوزی نام میزبانشان را با استفاده از این گزینه برای سرور ارسال میکنند.
abandoned
از این گزینه به عنوان اجاره ممنوعه قلمداد میشود. اگر سرور برای تخصیص یک آدرس با مشکل مواجه شود آن آدرس را ممنوع و از آن استفاده نمیکند اما اگر با کمبود آدرس مواجه شود دوباره از آن استفاده میکند.
لازم به ذکر است که فایل lease فقط توسط DHCP استفاده شده و تغییر مییابد و احتیاجی به تغییرات کاربر ندارد. کاربر فقط فایل dhcpd.conf را تغییر میدهد.
پیکربندی کارگزار DHCP
بعد از نصب DHCP، باید آنرا پیکربندی کرد. DHCP توسط dhcpd.conf پیکربندی میشود. زبان پیکربندی dhcpd شامل جملههای host وsubnet است که دامنه سیستمهایی که سرویس میگیرند را مشخص میکند. عبارت host ممکن است به صورت زیر باشد.
host osprey {
hardware ethernet 00:00:0C:43:8D:FB ;
fixed−address 172.16.70.8 ; }
این عبارت نام میزبان، آدرس اترنت و آدرس IP کلاینت را مشخص میکند. هنگامیکه به این شکل ساختاربندی شود، dhcpd سرویس تخصیص آدرس ایستا مانند پروتکل bootp را ارائه میدهد. این مدل آدرسدهی برای سرورهایی مانند DNS مناسب است که احتیاج به آدرس ایستا و ثابت دارند.
قالب عبارت subnet به صورت زیر
subnet 172.16.70.0 netmask 255.255.255.0 {
range 172.16.70.100 172.16.70.250 ; }
عبارت subnet بیان میکند که یک سرویس DHCP برای شبکه 172.167.0.0 فراهم شدهاست. range بیانگر دامنه آدرسها برای تخصیص پویاست.
کنترل سرور و عملیات پروتکل
زبان پیکربندی شامل امکانات زیادی است که عملکرد سرور و پروتکل DHCP را کنترل میکند. اول لغات Allow و Deny که کنترل میکند dhcpd درخواستهای کلاینتها را چگونه کنترل کند. هر عبارت با دستور allow یا deny به دنبال کلمه کلیدی که بیان میکند چه درخواستی مورد قبول یا رد قرار گیرد، آغاز میشود. سه کلمه کلیدی ممکن، عبارتند از ١-unknown_clients ٢- bootp٣-booting
1.unknown_clients
درخواستهای پیکربندی از کلاینتهایی که برای سرور نا آشنا هستند و تعریف نشده اند، میتوانند قبول یا رد شوند. به طور پیشفرض این کلاینتها مورد قبول واقع میشوند در غیر اینصورت برخی از قابلیتهای DHCP از بین میرود.
2.bootp
سرور میتواند پیکربندی درخواستهایی که از کلاینتهای bootp میآیند را قبول یا رد کند. به طور پیشفرض کلاینتهای bootp مجازند که توسط این سرور پیکربندی شوند در نتیجه تمام کلاینتهای bootp و DHCP توسط یک سرور پیکربندی میشوند.
3.booting
عبارت deny booting در عبارت host استفاده میشود و به سرور میگوید که سرور نباید درخواست از یک کلاینت مشخص را بررسی کند. پیش فرض این است که درخواستهای کلاینت جواب داده شود و احتیاجی به عبارت allow booting نیست.
علاوه بر سه عبارت که در بالا توضیح داده شد، پارامترهای پیکربندی متفاوتی وجود دارند که عملیات پروتکل را کنترل میکنند که در اینجا به برخی از آنها اشاره می گردد.
default_lease_time seconds
اگر کلاینت مدت زمان اجاره را مشخص نکند. سیستم این زمان را به طور پیش فرض برای مدت زمان اجاره یک آدرس در نظر میگیرد.
fixed_address address [, address…]
یک آدرس ثابت به عنوان بخشی از یک عبارت host به یک میزبان تخصیص میدهد. بیش از یک آدرس به کلاینتهایی که در بیش از یک زیر شبکه قراردارند داده میشود.
get_lease_hostnames flag
اگر flag برابر true باشد، dhcpd یک جستجوی معکوس برای هر آدرسی که اجاره میدهد انجام میدهد. داده و نام میزبان را از DNS دریافت نموده و به کلاینت ارسال میکند. این فرایند میتواند باعث بالا رفتن حجم فعالیت خادم روی شبکههای بزرگ شود. این flag به صورت پیشفرض false است و هیچ جستجویی در DNS صورت نمیگیرد.
hardware hardware_type mac_address
آدرس اترنت کلاینت را مشخص میکند. پارامتر hardware باید قسمتی از عبارت host باشد، که با استفاده از آدرس پایه فیزیکی، اطلاعات یک میزبان را به یک کلاینت مشخص مربوط میکند.
آدرس لایه فیزیکی تنها راه برای کلاینت bootp است تا شناسایی شود. کلاینتهای DHCP از مقادیر دیگری علاوه بر آدرس لایه فیزیکی برای شناسایی خودشان میتوانند داشته باشند.
max_lease_time seconds
ماکزیمم مدت زمان اجاره را بدون در نظر گرفتن مدت زمان درخواستی کاربر بیان میکند. مدت زمان به ثانیه بیان میشود.
range [dynamic_bootp] low_address[high_address]
بیانگر دامنه آدرسهای موجود برای تخصیص پویاست. کلمه کلیدی [dynamic_bootp] اگر در این عبارت قرار گیرد dhcpd تشخیص می دهد که آدرسهای پویا را به کلاینتهای bootp علاوه بر کلاینتهای DHCP اختصاص دهد. کلاینتهای bootp درکی از آدرسهای اجارهای ندارند بنابر این معمولاً آدرسهای پویا نمیگیرند.
server_identifier address
این گزینه آدرس IP سروری که برای کلاینتها فرستاده میشود را بیان میکند.
این عبارات و پارامترها نحوه عملکرد سرور را مشخص میکنند. اما بیشتر اطلاعات فایل پیکربندی DHCP، اطلاعاتی برای کلاینت هستند. در قسمت بعدی به گزینههای پیکربندی که اطلاعات پیکربندی برای کلاینتها را بیان میکند پرداخته خواهد شد.
گزینههای پیکربندی dhcpd
عبارتهای گزینه ای dhcpd، تمام گزینههای پیکربندی که در RFC(Request For Comments) بیان شده است را پوشش میدهد. بیش از ٦٠ گزینه پیکربندی استاندارد وجود دارد. این گزینهها را در شش گروه زیر تقسیم میکنیم:
١- گزینههای پایه ٢- گزینههای میزان سازی ٣- گزینههای مسیریابی ٤- گزینههای NetBIOS ٥- گزینههای کلاینتهای بدون دیسک و٦- سایر گزینهها
1.گزینههای پایه:
این گزینهها مواردی از قبیل آدرس،subnet mask و مسیریاب پیشفرض را بیان میکند. لیست زیر همچنین شامل سرورهایی مانند سرورهای DNS و سرورهای چاپگر است که معمولاً در یک فایل پیکربندی آورده میشوند.
option broadcast_address address
آدرس انتشار را بیان میکند.
option DHCP_client_identifier string
یک رشته را به جای آدرس سخت افزاری کلاینت معرفی میکند.
option domain_name domain
نام دامنه را بیان میکند.
option domain_name_servers address_list
لیست آدرس سرورهای DNS را نشان میدهد.
option lpr−servers address−list
لیست آدرس سرورهای چاپگر را نشان میدهد.
option ntp_server address_list
لیست آدرس سرورهای NTP ( Network Time Protocol) را نشان میدهد.
option pop_server address_list
آدرس سرورهای POP3 را نشان میدهد.
option routers address_list
آدرس روترهای در سمت کلاینت را به ترتیب اولویت لیست میکند.
option smtp_server address_list
آدرس سرورهای SMTP e-mail را لیست میکند.
option subnet_mask mask
subnet mask را نشان میدهد. اگر این گزینه ذکر نشود، network mask از عبارت subnet استفاده میشود.
گزینههای میزان سازی
لیست زیر گزینههایی که برای میزانسازی پروتکل TCP/IP مورد استفاده قرار میگیرند را بیان میکند.
option all_subnets_local [ 0 | 1]
مشخص میکند که آیا همه زیرشبکهها از MTU (Maximum Transmission Unit) استفاده میکنند یا نه. یک به معنای این است که همه استفاده میکنند و صفر به معنای این است که بعضی از زیرشبکهها MTUهای کوچکتری دارند.
option arp_cache_timeout seconds
بیان میکند که چه مدت کلاینتها باید ورودیهای جدول ARP را در cache نگهدارند.
option default_ip_ttl ttl
بیانگر زمان زنده ماندن (TTL) پیشفرض برای بستههای IP خروجی است. مقادیر ممکن بین ١ تا ٢٥٥ است.
option default_tcp_ttl ttl
بیانگر مقدار TTL برای سگمنتهای TCP است. مقادیر ممکن بین ١ تا ٢٥٥ است.
option interface_mtu bytes
بیانگر حداکثر واحد انتقال (MTU) که باید توسط کلاینت مورد استفاده قرار گیرد.
option mask_supplier 0 | 1
مشخص میکند که آیا کلاینت باید به درخواستهای ICMP subnet mask پاسخ بدهد یا خیر. صفر یعنی خیر و یک یعنی بله که مقدار پیشفرض صفر است چون کلاینتها معمولاً به این درخواستها پاسخ نمیدهند.
option max_dgram_reassembly bytes
بیانگر بزرگترین بسته IP ای است که کلاینت باید سرهم بندی کند. اندازه آن نمیتواند کمتر از 576 بایت باشد.
گزینههای مسیریابی
گزینههای زیر مربوط به مسیریابی هستند. به جز معرفی مسیر پیشفرض، هر چیزی مربوط به مسیریابی در اینجا پوشش داده میشود. مسیر پیشفرض در قسمت گزینههای پایه توضیح داده شده است.
option ip_forwarding 0 | 1
به کلاینت میگوید که ارسال IP را غیرفعال (٠) و یا فعال (١) کند.
0 | 1 option non_local_source_routing
به کلاینت میگوید که مسیر منبع غیر محلی را غیر فعال (٠) و یا فعال (١) کند. مقدار صفر از امنیت بیشتری برخوردار است. مسیرهای منبع چون ممکن است باعث خروج داده از شبکه محلی شوند، به عنوان مشکل امنیتی در نظر گرفته می شوند.
option policy_filter address mask
آدرسهای mask/مقصد مجاز برای مسیرهای منبع ورودی را مشخص میکند. هر بسته منبع مسیریابی شده که آدرس مقصد بعدی آن با یکی از فیلترها منطبق نباشد توسط کلاینت به دور انداخته میشود.
option static_routes destination gateway
مسیرهای ایستا برای کلاینت به صورت جفتهایی از مقصد و دروازه عبور را نشان میدهد.
گزینههای NetBIOS
گزینههای زیر NetBIOS را روی TCP/IP پیکربندی میکند.
option netbios_dd_server address_list
آدرس سرورهای NBDD(NetBIOS datagram destinations server) را لیست می کند.
option netbios_name_servers address_list
آدرس IP سرورهای (NetBIOS name servers) NBNS را لیست میکند.
option netbios_scope string
NetBIOS را روی حوزه پارامتری TCP/IP بیان میکند.
برای درک بهتر این مقادیر به مباحث NetBIOS و اشتراکگذاری فایل مراجعه کنید.
گزینههای کلاینت بدون دیسک
DHCP میتواند برای بوتکردن کلاینتهای بدون دیسک مانند پایانه های گرافیکی استفاده شود. این لیست شامل گزینههایی وابسته به کلاینتهای بدون دیسک میشود.
option bootfile_name string
فایل بوت کلاینت را مشخص میکند.
option boot_size blocks
تعداد بلاکهای 512-Octet در بوت فایل را مشخص میکند.
option root_path path
مسیر دیسک اصلی کلاینت روی سرور را مشخص میکند.
option merit_dump path
مسیر فایلی که کلاینت به هنگام crash از آن به عنوان dump استفاده میکند را مشخص میکند.
سایر گزینههای سرور
بسیاری از سرورهایی که معمولاً در شبکه مورد استفاده قرار میگیرند، در قسمت گزینههای پایه لیست شدند. اما تعداد دیگری سرورهای شبکه نیز وجود دارند که در این قسمت لیست می شوند اما به دلیل کاربرد کم آنها از ذکر آنها خودداری می شود.
این شش لیست گزینههای ممکن برای DHCP را جمع بندی کرده است. بسیاری از گزینههای دیگر تقریباً هیچوقت مورد استفاده قرار نخواهند گرفت به دلیل اینکه مقادیر پیشفرض این گزینههای درست تنظیم شده است. گزینهها، پارامترها، عبارات گروهی، عبارات میزبان و عبارات زیر شبکه در فایل dhcpd.conf با هم جمع شدهاند تا پیکربندی سرور را انجام داده تا اطلاعاتی که برای کلاینت فرستاده میشوند را تعیین کنند. قسمت بعدی فایل پیکربندی را به جزئیات بررسی میکند.
ساختن یک فایل dhcpd.conf
DHCP پیکربندی خود را از فایل /etc/dhcpd.conf میخواند. dhcpd.conf کلاینت را به سرور میشناساند و پیکربندی سرور برای هر کلاینت در آن مشخص میشود. یک فایل dhcpd.conf در زیر آمده است.
# Define global values that apply to all systems.
max−lease−time 604800;
default−lease−time 86400;
option subnet−mask 255.255.255.0;
option domain "foobirds.org";
option domain−name−servers 172.16.55.1, 172.16.5.1;
option pop−server 172.16.18.1;
# Define the dynamic address range for the subnet.
subnet 172.16.55.0 netmask 255.255.255.0 {
option routers 172.16.55.1;
option broadcast−address 172.16.55.255;
range 172.16.55.64 172.16.55.192;
range 172.16.55.200 172.16.55.250;
}
# Use host statements for clients that get static addresses
group {
use−host−decl−names true;
host kestrel {
hardware ethernet 00:80:c7:aa:a8:04;
fixed−address 172.16.55.4;
}
host ibis {
hardware ethernet 00:00:c0:a1:5e:10;
fixed−address 172.16.55.16;
}
نمونه تنظیمات dhcp
این فایل با پارامترها و گزینههایی که در همه زیر شبکهها و کلاینتها استفاده میشود، آغاز میگردد. دو خط اول بیان میکند که چگونه dhcpd باید تخصیص آدرس پویا را مدیریت کند.
max_lease_time: طولانیترین زمانی که dhcpd میتواند آدرسی را اجاره بدهد مشخص میکند. این زمان بدون در نظر گرفتن مدت زمان درخواستی کلاینت است. در مثال فوق مقدارداده شده معادل یک هفته است.
default_lease_time
اگر کلاینت مدت زمان اجاره آدرس را مشخص نکند از این مقدار به عنوان مدت زمان اجاره استفاده میشود.
٤ خط بعدی در مثال فوق بیانگر گزینههایی برای subnet mask، نام دامنه، آدرس سرورهای دامنه و آدرس سرور pop است.
شبکهای که dhcpd به آن سرویس ارائه میدهد توسط یک آدرس و یک الگو آدرس در عبارت subnet مشخص میشود. dhcpd تنها به کلاینتهایی که در این شبکه قرار دارند و یا مستقیماً توسط عبارات host مشخص شدهاند، سرویس ارائه میدهد. گزینهها و پارامترهای در عبارت subnet فقط برای زیر شبکه و کلاینتهای آن اعمال میشود. در مثال گزینهها مسیریاب پیشفرض زیرشبکه و آدرس انتشار را بیان کرده است.
دو آدرسی که در پارامتر range، آمده است بیان کننده دامنه آدرسهایی است که برای تخصیص آدرس پویا موجود است. اولین آدرس کمترین آدرسی است که میتواند اتوماتیک تخصیص یابد و آدرس دوم بالاترین آدرسی است که میتواند اختصاص یابد. عبارت subnet در مثال دارای دو محدده برای ساخت دو گروه مجزا برای آدرس های پویا است. این نشان میدهد می توان یک فضای آدرس گسسته با استفاده از چند عبارت range داشت.
نکته: اگر پارامتر range در یک عبارت بیان شده باشد و هر کلاینت DHCP در subnet که درخواست آدرس نماید تا زمانیکه آدرس موجود باشد، به آن آدرس اختصاص مییابد. اگر پارامتر range بیان نشده باشد آْدرسدهی پویا فعال نمیشود.
پیکربندی با یک گروه از عبارات host خاتمه مییابد. عبارت گروه از مجموعهای از عبارات host تشکیل شده است. در عبارات host از پارامتر use_host_decl_name استفاده شده است که برای همه میزبانها اعمال شده میشود.
با مقدار دادن این پارامتر، کلاینت در آدرس اترنت 00:80:C7:aa:a8:04، نام میزبان kestrel را به عنوان قسمتی از اطلاعات پیکربندی خویش دریافت میکند. بدون مقداردادن این پارامتر، برای کلاینت آدرس IP فرستاده میشود ولی نام میزبان فرستاده نمیشود.
آدرس اترنت که در عبارت host قرار دارد به عنوان کلیدی برای شناسایی اینکه چه کلاینتی چه اطلاعات پیکربندی دریافت میکند استفاده میشود. در مثال، عبارات میزبان، نام میزبان و آدرس IP کلاینتها را مشخص میکنند. به کلاینتها آدرسهای ایستا داده میشود بنابر این احتیاج به تمدید مدت اجاره آدرسها ندارند.
به علاوه اطلاعاتی که در عبارت host برای کلاینت فرستاده میشود، dhcpd برای آنها الگو زیرشبکه، نام دامنه، آدرسهای سرور DNS و آدرس سرور چاپگر که در قسمت عمومی فایل پیکربندی تعریف شده است را نیز می فرستد.
با استفاده از فایل dhcpd.conf، میتوان هر اطلاعات پیکربندی که مورد نیاز هر میزبان یا زیرشبکهای که از سیستم شما سرویس می گیرد را فراهم نمود. اما سرور DHCP نمیتواند به یک درخواست که دریافت نمیکند پاسخ دهد. درخواستهای DHCP برای آدرس limited broad cast ممکن است توسط مسیریاب ها عبور داده نشوند. برای اینکه در یک شبکه بنگاهی ،که از اتصال چند شبکه به وسیله مسیر یاب تشکیل شده، از یک سرور بتوانیم استفاده کنیم، ممکن است احتیاج به نصب سرورهای DHCP relay داشته باشیم.
مفهوم DHCP relay agent
relay agent درخواست هایی که از زیر شبکه بدون DHCP سرور ارسال می گردد را به DHCP سرور های زیر شبکه های دیگر که مشخص شده اند بازپخش میکند.
http://foss.ir/modules/typetool/pnincludes/uploads/dhcpart.png
شکل۱
دلیل استفاده از DHCP Relay Agent اینست که مسیریاب، انتشار را از خود عبور نمیدهد وکلاینت ها برای گرفتن IP از انتشار استفاده میکنند پس برای حل این مشکل ما از یک DHCP Relay Agent استفاده میکنیم که بدین ترتیب عمل میکند :
DHCP Relay Agent پیغام هایی که به صورت انتشار ارسال میشود و تقاضای IP میکنند را جمع آوری میکند و سپس خود بصورت unicast با DHCP سرور درخواست مورد نظر را مطرح میکند و جواب گرفته شده را برای client ارسال میکند.در واقع DHCP Relay Agent نقش میانجی را ایفا میکند.