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
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 در زیر آمده است.