| dhclient.conf(5) | File Formats Manual | dhclient.conf(5) |
نام (NAME)
dhclient.conf - پرونده پیکربندی کلاینت DHCP
توضیحات (DESCRIPTION)
پرونده dhclient.conf شامل اطلاعات پیکربندی برای dhclient، کلاینت DHCP کنسرسیوم سیستمهای اینترنتی (ISC) است.
پرونده dhclient.conf یک پرونده متنی با قالب آزاد بر پایه اسکی (ASCII) است. این پرونده توسط تجزیهکننده بازگشتی نزولی داخلی dhclient پردازش میشود. این پرونده میتواند شامل نویسههای تب و خطوط جدید اضافی برای مقاصد قالببندی باشد. کلیدواژهها در پرونده به حروف بزرگ و کوچک حساس نیستند. یادداشتها (کامنتها) را میتوان در هر جای پرونده (به جز درون نقلقولها) قرار داد. یادداشتها با نویسه # آغاز شده و در انتهای خط به پایان میرسند.
پرونده dhclient.conf میتواند برای پیکربندی رفتار کلاینت به شیوههای بسیار متنوعی استفاده شود: زمانبندی پروتکل، اطلاعات درخواستشده از سرور، اطلاعات الزامی از سرور، مقادیر پیشفرضی که در صورت عدم ارائه اطلاعات توسط سرور استفاده میشوند، مقادیری برای بازنویسی اطلاعات ارائهشده توسط سرور، یا مقادیری برای الصاق به ابتدا یا انتهای اطلاعات ارائهشده توسط سرور. همچنین پرونده پیکربندی میتواند برای استفاده در شبکههایی که سرور DHCP ندارند، از پیش با نشانیها مقداردهی اولیه شود.
زمانبندی پروتکل (PROTOCOL TIMING)
نیازی به پیکربندی رفتار زمانبندی کلاینت توسط کاربر نیست. اگر هیچ پیکربندی زمانبندی توسط کاربر ارائه نشود، به طور پیشفرض یک رفتار زمانبندی منطقی اعمال خواهد شد - رفتاری که به بهروزرسانیهای بهموقع میانجامد بدون اینکه بار بیش از حدی بر سرور تحمیل کند.
در صورت نیاز، میتوان از عبارتهای زیر برای تنظیم رفتار زمانبندی کلاینت DHCPv4 استفاده کرد. پروتکل DHCPv6 مقادیری را برای استفاده ارائه میدهد و این مقادیر در حال حاضر قابل پیکربندی نیستند.
عبارت timeout
timeout time;
عبارت timeout مدت زمانی را تعیین میکند که باید بین آغاز تلاش کلاینت برای تعیین نشانی خود و زمانی که تصمیم میگیرد قادر به برقراری ارتباط با سرور نیست، سپری شود. به طور پیشفرض، این مهلت زمانی شصت ثانیه است. پس از سپری شدن این زمان، اگر هرگونه اجاره ایستا در پرونده پیکربندی تعریف شده باشد، یا اجارههایی در پایگاه داده اجاره باقی مانده باشند که هنوز منقضی نشدهاند، کلاینت در میان این اجارهها پیمایش کرده و برای اعتبارسنجی آنها تلاش میکند؛ اگر اجارهای معتبر یافت شود، از نشانی آن اجاره استفاده خواهد کرد. اگر هیچ اجاره ایستای معتبر یا اجاره منقضینشدهای در پایگاه داده اجاره وجود نداشته باشد، کلاینت پس از بازه زمانی تعریفشده برای تلاش مجدد (retry)، پروتکل را بازراهاندازی میکند.
عبارت retry
retry time;
عبارت retry مدت زمانی را مشخص میکند که باید پس از تشخیص عدم حضور سرور DHCP توسط کلاینت سپری شود تا دوباره برای برقراری ارتباط با یک سرور DHCP تلاش کند. به طور پیشفرض، این زمان پنج دقیقه است.
عبارت select-timeout
select-timeout time;
ممکن است (و به نظر برخی مطلوب است) که بیش از یک سرور DHCP در هر شبکه مفروض در حال سرویسدهی باشند. در این حالت، ممکن است در پاسخ به پیام اولیه کشف اجاره کلاینت، بیش از یک پیشنهاد (offer) برای آن ارسال شود. همچنین ممکن است یکی از این پیشنهادها بر دیگری ارجحیت داشته باشد (برای نمونه، یکی از پیشنهادها حاوی نشانی باشد که کلاینت پیشتر استفاده کرده است و دیگری نباشد).
گزینه select-timeout مدت زمانی پس از ارسال نخستین درخواست کشف اجاره کلاینت است که پس از آن کلاینت از انتظار برای دریافت پیشنهادهای سرورها دست میکشد، با این فرض که دستکم یک پیشنهاد دریافت کرده باشد. اگر تا زمان انقضای select-timeout هیچ پیشنهادی دریافت نشود، کلاینت نخستین پیشنهادی را که برسد میپذیرد.
به طور پیشفرض، مقدار select-timeout صفر ثانیه است - به این معنی که کلاینت نخستین پیشنهادی را که مشاهده کند میپذیرد.
عبارت reboot
reboot time;
هنگامی که کلاینت بازراهاندازی میشود، ابتدا تلاش میکند آخرین نشانی را که در اختیار داشته است دوباره به دست آورد. این وضعیت INIT-REBOOT نامیده میشود. اگر کلاینت همچنان به همان شبکهای متصل باشد که در زمان آخرین اجرای خود متصل بوده است، این سریعترین راه برای شروع به کار است. عبارت reboot مدت زمانی را تنظیم میکند که باید پس از نخستین تلاش کلاینت برای دریافت مجدد نشانی قدیمی خود بگذرد، پیش از آنکه ناامید شده و تلاش برای کشف یک نشانی جدید را آغاز کند. به طور پیشفرض، مهلت زمانی reboot ده ثانیه است.
عبارت backoff-cutoff
backoff-cutoff time;
کلاینت از الگوریتم عقبنشینی نمایی با مقداری تصادفیسازی استفاده میکند، تا اگر چندین کلاینت به طور همزمان قصد پیکربندی خود را داشته باشند، درخواستهای آنها به صورت همگام و همپوشان ارسال نشود. عبارت backoff-cutoff حداکثر مدت زمانی را که کلاینت مجاز به عقبنشینی است تعیین میکند؛ مقدار واقعی به صورت تصادفی بین ۱/۲ تا ۱ ۱/۲ برابر time مشخصشده ارزیابی خواهد شد. مقدار پیشفرض آن پانزده ثانیه است.
عبارت initial-interval
initial-interval time;
عبارت initial-interval مدت زمان بین نخستین تلاش برای دسترسی به سرور و دومین تلاش را تنظیم میکند. با هر بار ارسال یک پیام، بازه زمانی بین پیامها به میزان دو برابر بازه جاری ضرب در یک عدد تصادفی بین صفر و یک افزایش مییابد. اگر این مقدار از مقدار backoff-cutoff بیشتر شود، روی همان مقدار تنظیم خواهد شد. مقدار پیشفرض آن ده ثانیه است.
عبارت initial-delay
initial-delay time;
پارامتر initial-delay حداکثر زمانی را تعیین میکند که کلاینت میتواند پس از شروع، پیش از اقدام به ارسال نخستین پیام منتظر بماند. بر اساس بخش ۴.۴.۱ از RFC2131، کلاینت باید زمان تصادفی را بین راهاندازی و نخستین ارسال واقعی منتظر بماند. نسخههای پیشین کلاینت ISC DHCP زمان تصادفی تا ۵ ثانیه منتظر میماندند، اما به دلیل تأثیر نامطلوب بر زمان راهاندازی، این رفتار کنار گذاشته شد. به این ترتیب، در نسخههای جدید مقدار تأخیر اولیه پیشفرض روی ۰ تنظیم شده است. برای بازگرداندن رفتار قبلی، لطفاً initial-delay را روی ۵ تنظیم کنید.
انتخاب اجاره در DHCPv6 (DHCPv6 LEASE SELECTION)
در پروتکل DHCPv6 کلاینت مدت زمان کوتاهی منتظر میماند تا پیامهای ADVERTISE از چندین سرور دریافت شوند. سپس کلاینت باید پیش از اقدام به ارسال درخواست به سرور برگزیده، از میان تمام پیامهایی که ممکن است دریافت شده باشند انتخاب کند.
نخستین معیار انتخاب، مجموعه گزینهها و نشانیهای موجود در پیام است. به پیامهایی که شامل گزینهای که به عنوان الزامی (required) مشخص شده است نباشند، امتیاز ۰ تعلق میگیرد و استفاده نخواهند شد. اگر گزینه -R در خط فرمان مشخص شده باشد، پیامهایی که فاقد تعداد صحیح پیوندها (IA-NA، IA-TA یا IA-PD) باشند نادیده گرفته میشوند.
معیار بعدی، مقدار اولویت (preference) در پیام است؛ بالاترین مقدار اولویت استفاده خواهد شد، حتی اگر اجارههایی با نشانیها یا گزینههای بهتر موجود باشند.
در نهایت به اجاره امتیاز داده میشود و اجاره با بالاترین امتیاز انتخاب میگردد. امتیاز یک اجاره بر اساس تعداد پیوندها، تعداد نشانیها و تعداد گزینههای موجود در آن تعیین میشود:
bindings * X + addresses * Y + options
به طور پیشفرض X = 10000 و Y = 100 است؛ این پیکربندی باعث میشود کلاینت اجارهای با پیوندهای بیشتر را بر اجارهای با پیوندهای کمتر اما نشانیهای بیشتر ترجیح دهد. این وزندهیها به عنوان بخشی از پیادهسازی RFC 7550 تغییر کردند. پیش از این مقادیر X = 50 و Y = 100 بودند، به این معنی که نشانیهای بیشتر بر پیوندهای بیشتر ارجحیت داشتند. اگر مایل هستید همچنان از شیوه قدیمی استفاده کنید، میتوانید پرونده includes/site.h را ویرایش کرده و خط تعریف USE_ORIGINAL_CLIENT_LEASE_WEIGHTS را از حالت یادداشت خارج نمایید.
نیازمندیها و درخواستهای اجاره (LEASE REQUIREMENTS AND REQUESTS)
پروتکل DHCP به کلاینت اجازه میدهد درخواست کند که سرور اطلاعات مشخصی را برای آن ارسال کند، و اطلاعات دیگری را که کلاینت آماده پذیرش آنها نیست ارسال نکند. همچنین این پروتکل به کلاینت اجازه میدهد پیشنهادهای سرورها را در صورتی که حاوی اطلاعات مورد نیاز کلاینت نباشند، یا اطلاعات ارائهشده رضایتبخش نباشد، رد کند.
دادههای گوناگونی در پیشنهادهای ارسالی از سوی سرورهای DHCP به کلاینتهای DHCP وجود دارد. دادههایی که میتوان مشخصاً درخواست کرد، گزینههای DHCP (DHCP Options) نامیده میشوند. گزینههای DHCP در dhcp-options(5) تعریف شدهاند.
عبارت request
[ also ] request [ [ option-space . ] option ]
[, ... ];
عبارت request موجب میشود کلاینت درخواست کند هر سروری که به کلاینت پاسخ میدهد، مقادیر خود را برای گزینههای مشخصشده ارسال کند. در عبارت request فقط باید نام گزینهها مشخص شود - نه پارامترهای گزینه. به طور پیشفرض، کلاینت DHCPv4 گزینههای subnet-mask، broadcast-address، time-offset، routers، domain-name، domain-name-servers و host-name را درخواست میکند، در حالی که کلاینت DHCPv6 گزینههای dhcp6 name-servers و domain-search را درخواست مینماید. توجه داشته باشید که اگر یک عبارت 'request' وارد کنید، این مقادیر پیشفرض را بازنویسی میکنید و این گزینهها درخواست نخواهند شد.
در برخی موارد، ممکن است مطلوب باشد که هیچ فهرست درخواست پارامتری ارسال نشود. برای این منظور، کافی است عبارت request را بدون مشخص کردن هیچ پارامتری بنویسید:
request;
در بیشتر موارد، مطلوب است که صرفاً یک گزینه مورد نظر کلاینت به فهرست درخواست اضافه شود. در این حالت، بهترین کار استفاده از 'also request' برای گزینههای اضافی است:
also request domain-search, dhcp6.sip-servers-addresses;
عبارت require
[ also ] require [ [ option-space . ] option ]
[, ... ];
عبارت require گزینههایی را فهرست میکند که باید حتماً ارسال شوند تا یک پیشنهاد پذیرفته شود. پیشنهادهایی که شامل تمام گزینههای فهرستشده نباشند نادیده گرفته خواهند شد. هیچ فهرست require پیشفرضی وجود ندارد.
require name-servers;
interface eth0 {
also require domain-search;
}
عبارت send
send [ option declaration ] ;
عبارت send باعث میشود کلاینت گزینه مشخصشده را با مقدار تعیینشده به سرور ارسال کند. این یک اعلان کامل گزینه است که در dhcp-options(5) شرح داده شده است. گزینههایی که همواره در پروتکل DHCP ارسال میشوند نباید در اینجا مشخص شوند، به جز اینکه کلاینت میتواند گزینه درخواستی dhcp-lease-time را به غیر از مدت زمان پیشفرض اجاره درخواستی (که دو ساعت است) تعیین کند. کاربرد آشکار دیگر این عبارت، ارسال اطلاعاتی به سرور است که به آن امکان میدهد بین این کلاینت و سایر کلاینتها یا انواع کلاینتها تمایز قائل شود.
سامانه نام دامنه پویا (DYNAMIC DNS)
کلاینت اکنون پشتیبانی بسیار محدودی برای انجام بهروزرسانیهای DNS هنگام دریافت اجاره دارد. این قابلیت آزمایشی است و احتمالاً مطابق آنچه شما میخواهید کار نمیکند. همچنین تنها زمانی کار میکند که تصادفاً کنترل سرور DNS خود را در اختیار داشته باشید، که این امر چندان محتمل نیست.
توجه داشته باشید که تمامی موارد این بخش، چه از DHCPv4 استفاده کنید چه از DHCPv6، صادق هستند. نحو دقیقاً یکسانی برای هر دو استفاده میشود.
برای فعالسازی، باید کلید (key) و منطقه (zone) را مانند سرور DHCP تعریف کنید (برای جزئیات به dhcpd.conf(5) مراجعه کنید). همچنین باید گزینه fqdn را روی کلاینت به صورت زیر پیکربندی نمایید:
send fqdn.fqdn "grosse.example.com."; send fqdn.encoded on; send fqdn.server-update off; also request fqdn, dhcp6.fqdn;
گزینه fqdn.fqdn باید یک نام دامنه کاملاً مشخص (FQDN) باشد. شما باید یک عبارت zone برای منطقهای که قرار است بهروزرسانی شود تعریف کنید. گزینه fqdn.encoded بسته به سرور DHCP مورد استفاده شما، ممکن است لازم باشد روی on یا off تنظیم شود.
عبارت do-forward-updates
do-forward-updates [ flag ] ;
اگر میخواهید بهروزرسانیهای DNS را در اسکریپت کلاینت DHCP (نگاه کنید به dhclient-script(8)) انجام دهید تا اینکه کلاینت DHCP مستقیماً بهروزرسانی را انجام دهد (برای نمونه، اگر میخواهید از احراز هویت SIG(0) استفاده کنید که مستقیماً توسط کلاینت DHCP پشتیبانی نمیشود)، میتوانید با استفاده از عبارت do-forward-updates به کلاینت دستور دهید که بهروزرسانی را انجام ندهد. در صورتی که میخواهید کلاینت DHCP بهروزرسانی را انجام دهد flag باید true باشد، و اگر نمیخواهید کلاینت DHCP بهروزرسانی را انجام دهد باید false باشد. به طور پیشفرض، کلاینت DHCP بهروزرسانی DNS را انجام خواهد داد.
تعدیلکنندههای گزینهها (OPTION MODIFIERS)
در برخی موارد، ممکن است کلاینت دادههای گزینهای را از سرور دریافت کند که واقعاً برای آن کلاینت مناسب نیستند، یا اطلاعات مورد نیاز خود را دریافت نکند در حالی که یک مقدار پیشفرض مفید برای آن وجود دارد. همچنین ممکن است اطلاعاتی دریافت کند که مفید است، اما نیاز است با اطلاعات محلی تکمیل گردد. برای پاسخگویی به این نیازها، چندین تعدیلکننده گزینه در دسترس هستند.
عبارت default
default [ option declaration ] ;
اگر برای گزینهای کلاینت باید از مقدار ارائهشده توسط سرور استفاده کند، اما در صورت عدم ارائه مقداری توسط سرور نیاز به استفاده از مقداری پیشفرض دارد، این مقادیر را میتوان در عبارت default تعریف کرد.
عبارت supersede
supersede [ option declaration ] ;
اگر برای گزینهای کلاینت باید همواره به جای هر آنچه توسط سرور ارائه میشود، از مقادیر پیکربندیشده محلی استفاده کند، این مقادیر را میتوان در عبارت supersede تعریف کرد.
عبارت prepend
prepend [ option declaration ] ;
اگر برای مجموعهای از گزینهها، کلاینت ابتدا باید مقداری را که شما مشخص کردهاید استفاده کند و سپس مقادیر ارائهشده توسط سرور (در صورت وجود) را به کار گیرد، این مقادیر را میتوان در عبارت prepend تعریف کرد. عبارت prepend تنها میتواند برای گزینههایی استفاده شود که اجازه درج بیش از یک مقدار را میدهند. این محدودیت اجبار نمیشود - اگر آن را نادیده بگیرید، رفتار سیستم غیرقابل پیشبینی خواهد بود.
عبارت append
append [ option declaration ] ;
اگر برای مجموعهای از گزینهها، کلاینت ابتدا باید مقادیر ارائهشده توسط سرور (در صورت وجود) را استفاده کند و سپس مقادیر ارائهشده توسط شما را به کار گیرد، این مقادیر را میتوان در عبارت append تعریف کرد. عبارت append تنها میتواند برای گزینههایی استفاده شود که اجازه درج بیش از یک مقدار را میدهند. این محدودیت اجبار نمیشود - اگر آن را نادیده بگیرید، رفتار سیستم غیرقابل پیشبینی خواهد بود.
اعلانهای اجاره (LEASE DECLARATIONS)
عبارت lease
lease { lease-declaration [ ... lease-declaration ]
}
کلاینت DHCP ممکن است پس از مدتی (نگاه کنید به زمانبندی پروتکل (PROTOCOL TIMING)) به این نتیجه برسد که در برقراری ارتباط با سرور موفق نخواهد شد. در آن هنگام، پایگاه داده اجارههای قدیمی خود را بررسی میکند و هر اجارهای را که هنوز منقضی نشده است با ارسال پینگ به مسیریاب فهرستشده برای آن اجاره آزمایش میکند تا ببیند آیا میتواند کار کند یا خیر. امکان تعریف یک یا چند اجاره ثابت (fixed) در پرونده پیکربندی کلاینت برای شبکههایی که سرویس DHCP یا BOOTP ندارند وجود دارد، تا کلاینت همچنان بتواند نشانی خود را به طور خودکار پیکربندی کند. این کار با عبارت lease انجام میشود.
نکته: عبارت lease همچنین در پرونده dhclient.leases برای ثبت اجارههای دریافت شده از سرورهای DHCP استفاده میشود. برخی از ساختارهای دستوری برای اجارهها همانطور که در ادامه شرح داده شدهاند، تنها در پرونده dhclient.leases مورد نیاز هستند. چنین ساختارهایی در اینجا صرفاً برای کامل بودن مستندات آورده شدهاند.
یک عبارت lease از کلیدواژه lease، به دنبال آن یک آکولاد باز، یک یا چند عبارت اعلان اجاره، و در انتها یک آکولاد بسته تشکیل میشود. اعلانهای اجاره زیر مجاز هستند:
bootp;
عبارت bootp برای نشان دادن این نکته استفاده میشود که اجاره به جای پروتکل DHCP با استفاده از پروتکل BOOTP به دست آمده است. هرگز نیازی به مشخص کردن این مورد در پرونده پیکربندی کلاینت نیست. کلاینت از این ساختار در پرونده پایگاه داده اجارههای خود استفاده میکند.
interface "string";
عبارت اجاره interface برای مشخص کردن رابطی که اجاره روی آن معتبر است به کار میرود. در صورت تنظیم، این اجاره تنها روی یک رابط مشخص آزمایش خواهد شد. هنگامی که کلاینت اجارهای را از سرور دریافت میکند، همواره شماره رابطی را که اجاره را روی آن دریافت کرده است ثبت مینماید. اگر اجارههای از پیش تعریفشده در پرونده dhclient.conf مشخص شده باشند، رابط نیز باید مشخص شود، گرچه این کار الزامی نیست.
fixed-address ip-address;
عبارت fixed-address برای تنظیم نشانی IP یک اجاره مشخص به کار میرود. این عبارت برای تمام عبارتهای lease الزامی است. نشانی IP باید به صورت چهاربخشی با نقطه (مانند 12.34.56.78) مشخص شود.
filename "string";
عبارت filename نام پرونده بوت مورد استفاده را تعیین میکند. این عبارت توسط اسکریپت استاندارد پیکربندی کلاینت استفاده نمیشود، اما برای کامل بودن آورده شده است.
server-name "string";
عبارت server-name نام سرور بوت مورد استفاده را تعیین میکند. این عبارت نیز توسط اسکریپت استاندارد پیکربندی کلاینت استفاده نمیشود.
option option-declaration;
عبارت option برای تعیین مقدار یک گزینه ارائهشده توسط سرور، یا در مورد اجارههای از پیش تعریفشده در dhclient.conf، مقداری که کاربر مایل است اسکریپت پیکربندی کلاینت در صورت استفاده از اجاره از پیش تعریفشده به کار گیرد، استفاده میشود.
script "script-name";
عبارت script برای تعیین مسیر پرونده اسکریپت پیکربندی کلاینت DHCP استفاده میشود. این اسکریپت توسط کلاینت DHCP استفاده میشود تا پیش از درخواست نشانی، پیکربندی اولیه هر رابط را تنظیم کند، نشانی را پس از پیشنهاد شدن آزمایش نماید، و پس از به دست آمدن اجاره، پیکربندی نهایی رابط را اعمال کند. اگر هیچ اجارهای به دست نیاید، این اسکریپت برای آزمایش اجارههای از پیش تعریفشده (در صورت وجود) استفاده میشود، و همچنین در صورتی که هیچ اجاره معتبری شناسایی نشود یک بار فراخوانی میگردد. برای اطلاعات بیشتر، dhclient-script(8) را ببینید.
vendor option space "name";
عبارت vendor option space برای مشخص کردن این به کار میرود که در صورت دریافت گزینه vendor-encapsulate-options، از کدام فضای گزینه باید برای رمزگشایی آن استفاده شود. از dhcp-vendor-identifier میتوان برای درخواست رده خاصی از گزینههای فروشنده از سرور استفاده کرد. برای جزئیات به dhcp-options(5) مراجعه کنید.
medium "media setup";
عبارت medium میتواند در سیستمهایی استفاده شود که رابطهای شبکه در آنها قادر به تشخیص خودکار نوع شبکهای که به آن متصل هستند نیستند. رشته تنظیمات رسانه (media setup) یک پارامتر وابسته به سیستم است که هنگام مقداردهی اولیه رابط به اسکریپت پیکربندی کلاینت DHCP ارسال میشود. در سیستمهای یونیکس و شبهیونیکس، این آرگومان در خط فرمان ifconfig هنگام پیکربندی رابط فرستاده میشود.
کلاینت DHCP در صورتی که هنگام پیکربندی رابط برای دریافت یک اجاره از نوع رسانه استفاده کند (نگاه کنید به عبارت media)، این پارامتر را به طور خودکار اعلان میکند. این عبارت در اجارههای از پیش تعریفشده تنها در صورتی باید استفاده شود که رابط شبکه نیازمند پیکربندی نوع رسانه باشد.
renew date;
rebind date;
expire date;
عبارت renew زمانی را تعیین میکند که کلاینت DHCP باید تلاش برای تماس با سرور خود جهت تمدید اجاره مورد استفاده را آغاز کند. عبارت rebind زمانی را تعیین میکند که کلاینت DHCP باید تلاش برای تماس با هر سرور DHCP را جهت تمدید اجاره خود آغاز نماید. عبارت expire زمانی را تعیین میکند که کلاینت DHCP در صورت عدم موفقیت در تماس با سرور جهت تمدید، باید استفاده از اجاره را متوقف کند.
این اعلانها در اجارههای بهدستآمده توسط کلاینت DHCP به صورت خودکار تنظیم میشوند، اما در اجارههای از پیش تعریفشده نیز باید پیکربندی شوند - اجارهای از پیش تعریفشده که زمان انقضای آن گذشته باشد توسط کلاینت DHCP استفاده نخواهد شد.
تاریخها به یکی از دو روش مشخص میشوند. نرمافزار زمانها را بسته به اینکه پارامتر پیکربندی db-time-format روی default یا local تنظیم شده باشد، در این دو قالب خروجی میدهد.
اگر روی default تنظیم شده باشد، مقادیر date به صورت زیر ظاهر میشوند:
<weekday>
<year>/<month>/<day>
<hour>:<minute>:<second>
روز هفته (weekday) برای این وجود دارد که انسان به سادگی بتواند زمان انقضای اجاره را متوجه شود - این مقدار به صورت عددی از صفر تا شش مشخص میشود که صفر نمایانگر یکشنبه است. هنگام اعلان اجاره از پیش تعریفشده، همیشه میتوان آن را برابر صفر قرار داد. سال به همراه قرن مشخص میشود، بنابراین عموماً باید چهاررقمی باشد مگر برای اجارههای بسیار طولانی. ماه به صورت عددی مشخص میشود که از ۱ برای ژانویه آغاز میگردد. روز ماه نیز به همین ترتیب با آغاز از ۱ مشخص میشود. ساعت عددی بین ۰ تا ۲۳، دقیقه عددی بین ۰ تا ۵۹، و ثانیه نیز عددی بین ۰ تا ۵۹ است.
اگر پیکربندی db-time-format روی local تنظیم شده باشد، مقادیر date به صورت زیر خواهند بود:
epoch <seconds-since-epoch>; # <day-name>
<month-name> <day-number>
<hours>:<minutes>:<seconds>
<year>
مقدار seconds-since-epoch بر اساس ساعت محلی سیستم است (که اغلب "زمان یونیکس" نامیده میشود). نماد # یادداشتی را فراهم میکند که توصیفکننده زمان واقعی مطابق با منطقه زمانی پیکربندیشده سیستم در لحظه نوشتن مقدار است. این مورد صرفاً برای بررسی انسانی ارائه شده است، و مقدار زمان مبدأ (epoch time) تنها مقدار توصیهشده برای بررسی ماشینی است.
توجه داشته باشید که هنگام تعریف یک اجاره ایستا، میتوان از هر قالب زمانی دلخواهی استفاده کرد و نیازی به درج یادداشت یا مقادیر پس از آن نیست.
اگر مدت زمان بینهایت باشد، date به جای یک تاریخ واقعی، برابر never خواهد بود.
اعلانهای نام مستعار (ALIAS DECLARATIONS)
alias { declarations ... }
برخی کلاینتهای DHCP که پروتکلهای رومینگ TCP/IP را اجرا میکنند ممکن است علاوه بر اجارهای که از طریق DHCP دریافت میکنند، نیازمند پیکربندی رابط خود با یک نام مستعار IP (IP alias) از پیش تعریفشده نیز باشند تا بتوانند حتی در حین رومینگ یک نشانی IP دائمی داشته باشند. کلاینت DHCP کنسرسیوم سیستمهای اینترنتی مستقیماً از رومینگ با نشانیهای ثابت پشتیبانی نمیکند، اما برای تسهیل چنین آزمایشهایی، کلاینت dhcp را میتوان طوری تنظیم کرد که با استفاده از اعلان alias یک نام مستعار IP را پیکربندی کند.
اعلان alias مشابه اعلان lease است، با این تفاوت که گزینههایی غیر از گزینه subnet-mask توسط اسکریپت استاندارد پیکربندی کلاینت نادیده گرفته میشوند، و زمانهای انقضا نیز نادیده گرفته میشوند. یک اعلان معمول alias شامل یک اعلان interface، یک اعلان fixed-address برای نشانی مستعار IP، و یک اعلان گزینه subnet-mask است. یک عبارت medium هرگز نباید در یک اعلان alias گنجانده شود.
سایر اعلانها (OTHER DECLARATIONS)
db-time-format [ default | local ] ;
گزینه db-time-format مشخص میکند کدام یک از دو روش خروجی برای چاپ زمانها در پروندههای اجاره استفاده شود. قالب default روز و ساعت را بر حسب UTC ارائه میدهد، در حالی که local از ثانیههای پس از مبدأ (seconds-since-epoch) برای ذخیره مقدار زمان استفاده میکند، و زمان را بر حسب منطقه زمانی محلی در یک یادداشت در همان خط قرار میدهد. این قالبها در همین صفحه راهنما، در بخش «اعلانهای اجاره (LEASE DECLARATIONS)» به تفصیل شرح داده شدهاند.
پارامتر lease-id-format
lease-id-format format;
پارامتر format باید octal یا hex باشد. این پارامتر قالب مورد استفاده برای نوشتن برخی مقادیر در پروندههای اجاره را کنترل میکند. در قالب پیشفرض یعنی octal، مقادیر به عنوان رشتههای نقلقولشده نوشته میشوند که در آنها نویسههای غیرقابل چاپ به صورت گریز هشتهشتی (یک نویسه بکاسلش به همراه سه رقم هشتهشتی) نشان داده میشوند. هنگامی که قالب hex مشخص شود، مقادیر به صورت مجموعهای بدون نقلقول از جفترقمهای هگزادسیمال جداشده با دونقطه نوشته میشوند.
در حال حاضر، مقادیری که بر اساس lease-id-format نوشته میشوند default-duid و مقدار IAID (تنها در DHCPv6) هستند. کلاینت به طور خودکار مقادیر را در هر دو قالب میخواند. توجه داشته باشید که در قالب octal، به جای یک رشته هشتهشتی، در صورتی که IAID فاقد نویسههای قابل چاپ باشد به صورت hex یا اگر تنها شامل نویسههای قابل چاپ باشد به عنوان یک رشته خروجی داده میشود. این کار برای حفظ سازگاری با گذشته انجام شده است.
reject cidr-ip-address [, ...
cidr-ip-address ] ;
عبارت reject باعث میشود کلاینت DHCP پیشنهادهای سرورهایی را که شناسه سرور آنها با هر یک از میزبانها یا زیرشبکههای مشخصشده مطابقت دارد رد کند. این ویژگی میتواند برای جلوگیری از پیکربندی شدن توسط سرورهای DHCP سرکش یا دارای پیکربندی نادرست استفاده شود، هرچند باید به عنوان آخرین چاره باشد - بهتر است سرور DHCP معیوب را ردیابی و اصلاح کنید.
نوع پیکربندی cidr-ip-address به فرم ip-address[/prefixlen] است که در آن ip-address یک نشانی IP چهاربخشی با نقطه است، و prefixlen طول پیشوند CIDR زیرشبکه است که تعداد بیتهای باارزش در ماسک شبکه را با شمارش از چپترین انتها نشان میدهد. مثال نحو پیکربندی:
reject 192.168.0.0/16, 10.0.0.5;
مثال بالا باعث میشود پیشنهادهای هر شناسه سرور در کل شبکه «کلاس C» استاندارد RFC 1918 یعنی 192.168.0.0/16، یا نشانی منفرد 10.0.0.5 رد شوند.
interface "name" { declarations ...
}
کلاینتی با بیش از یک رابط شبکه ممکن است بسته به اینکه کدام رابط در حال پیکربندی است، نیازمند رفتار متفاوتی باشد. تمام پارامترهای زمانبندی و اعلانها به غیر از اعلانهای lease و alias میتوانند درون یک اعلان interface قرار گیرند، و آن پارامترها تنها برای رابطی که با نام مشخصشده مطابقت دارد اعمال خواهند شد. رابطهایی که فاقد اعلان interface هستند از پارامترهای اعلانشده در بیرون از هرگونه اعلان رابط، یا از تنظیمات پیشفرض استفاده خواهند کرد.
نکته مهم: ابزار ISC dhclient تنها یک فهرست از رابطها نگهداری میکند که یا در زمان راهاندازی از طریق آرگومانهای خط فرمان تعیین میشود یا به صورت خودکار شناسایی میگردد. اگر فهرست رابطها را در خط فرمان وارد کرده باشید، این بند پیکربندی، رابط نامبرده را به گونهای به فهرست اضافه میکند که باعث پیکربندی آن توسط DHCP شود؛ این امر ممکن است نتیجه مورد نظر شما نباشد. این یک عارضه جانبی نامطلوب است که در نسخههای بعدی اصلاح خواهد شد.
pseudo "name" "real-name" {
declarations ... }
تحت برخی شرایط، اعلان یک شبهرابط و دریافت پیکربندی توسط کلاینت DHCP برای آن رابط میتواند مفید باشد. هر رابطی که کلاینت DHCP پشتیبانی میکند به طور معمول یک ماشین وضعیت کلاینت DHCP دارد که روی آن اجرا میشود تا اجارهاش را به دست آورد و نگهداری کند. یک شبهرابط صرفاً یک ماشین وضعیت دیگر است که روی رابطی به نام real-name با اجاره و وضعیت مستقل خود اجرا میشود. اگر از این ویژگی استفاده میکنید، باید یک شناسه کلاینت برای هر دو رابط، یعنی شبهرابط و رابط واقعی، تعیین کنید و این دو شناسه باید متمایز باشند. همچنین باید یک اسکریپت کلاینت جداگانه برای شبهرابط فراهم کنید تا عملیات مد نظر شما را با نشانی IP انجام دهد. برای مثال:
interface "ep0" {
send dhcp-client-identifier "my-client-ep0";
}
pseudo "secondary" "ep0" {
send dhcp-client-identifier "my-client-ep0-secondary";
script "/etc/dhclient-secondary";
}
اسکریپت کلاینت برای شبهرابط نباید رابط را فعال (up) یا غیرفعال (down) کند - اساساً تمام آنچه باید مدیریت کند وضعیتهایی است که در آنها یک اجاره به دست آمده یا تمدید شده است، و وضعیتهایی که در آنها یک اجاره منقضی شده است. برای اطلاعات بیشتر، dhclient-script(8) را ببینید.
media "media setup" [ ,
"media setup", ... ];
عبارت media یک یا چند پارامتر پیکربندی رسانه را تعریف میکند که ممکن است هنگام تلاش برای دریافت نشانی IP آزمایش شوند. کلاینت dhcp در میان تکتک رشتههای تنظیمات رسانه در فهرست گردش میکند، رابط را با استفاده از آن تنظیمات پیکربندی کرده و برای راهاندازی تلاش مینماید، و سپس گزینه بعدی را امتحان میکند. این ویژگی میتواند برای رابطهای شبکهای به کار رود که قادر به تشخیص خودکار نوع رسانه نیستند - هر نوع رسانهای که در ارسال درخواست به سرور و دریافت پاسخ موفق شود، احتمالاً مناسب است (اگرچه تضمینی وجود ندارد).
تنظیمات رسانه تنها برای مرحله اولیه دریافت نشانی (بستههای DHCPDISCOVER و DHCPOFFER) استفاده میشود. به محض به دست آمدن نشانی، کلاینت dhcp آن را در پایگاه داده اجارههای خود ثبت کرده و نوع رسانه مورد استفاده برای دریافت نشانی را ذخیره میکند. هر زمان که کلاینت تلاش کند اجاره را تمدید کند، از همان نوع رسانه استفاده خواهد کرد. پیش از آنکه کلاینت دوباره به بررسی چرخشی انواع رسانه بازگردد، اجاره باید منقضی شود.
hardware link-type mac-address;
عبارت hardware نشانی فیزیکی MAC مورد استفاده برای این رابط را مشخص میکند تا سرورها یا رلههای DHCP پاسخهای خود را به آن هدایت کنند. dhclient نشانی MAC رابط را به طور خودکار تعیین میکند، بنابراین استفاده از این پارامتر توصیه نمیشود. پارامتر link-type متناظر با نوع لایه پیوند رابط است (مثال: 'ethernet')، در حالی که mac-address رشتهای از مقادیر هگزادسیمال جداشده با دونقطه برای بایتها (octets) است.
anycast-mac link-type mac-address;
عبارت anycast-mac نشانی MAC برودکست تماماً یک را که dhclient هنگام ارسال بستهها به نشانی برودکست محدود سراسر یک IPv4 استفاده میکند، بازنویسی میکند. این پارامتر پیکربندی برای کاهش تعداد بستههای برودکست ارسالشده توسط کلاینتهای DHCP مفید است، اما تنها در صورتی سودمند است که پیش از پیکربندی کلاینت خود، از نشانی anycast MAC سرویس(های) DHCP آگاهی داشته باشید. پارامترهای link-type و mac-address به شیوهای مشابه عبارت hardware پیکربندی میشوند.
نمونه (SAMPLE)
پرونده پیکربندی زیر روی یک لپتاپ اجراکننده NetBSD 1.3 استفاده شده است، اگرچه دامنهها تغییر یافتهاند. این لپتاپ یک نام مستعار IP به نشانی 192.5.5.213 و یک رابط به نام ep0 (یک کارت 3com 3C589C) دارد. بازههای زمانی راهاندازی تا حدی نسبت به حالت پیشفرض کوتاهتر شدهاند، چرا که مشخص است این کلاینت بیشتر زمان خود را در شبکههایی با فعالیت اندک DHCP سپری میکند. این لپتاپ میان چندین شبکه جابهجا (roam) میشود.
timeout 60;
retry 60;
reboot 10;
select-timeout 5;
initial-interval 2;
reject 192.33.137.209;
interface "ep0" {
send host-name "andare.example.com";
hardware ethernet 00:a0:24:ab:fb:9c;
send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
send dhcp-lease-time 3600;
supersede domain-search "example.com", "rc.isc.org", "home.isc.org";
prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, host-name;
require subnet-mask, domain-name-servers;
script "CLIENTBINDIR/dhclient-script";
media "media 10baseT/UTP", "media 10base2/BNC";
}
alias {
interface "ep0";
fixed-address 192.5.5.213;
option subnet-mask 255.255.255.255;
}
این یک پرونده بسیار پیچیده dhclient.conf است - به طور کلی پرونده شما باید بسیار سادهتر باشد. در بسیاری از موارد، صرفاً ایجاد یک پرونده خالی dhclient.conf کفایت میکند - مقادیر پیشفرض معمولاً مناسب هستند.
همچنین ببینید (SEE ALSO)
dhcp-options(5)، dhcp-eval(5)، dhclient.leases(5)، dhcpd(8)، dhcpd.conf(5)، RFC2132, RFC2131.
نویسندگان (AUTHORS)
dhclient(8) اطلاعات مربوط به Internet Systems Consortium را میتوانید در نشانی زیر بیابید: https://www.isc.org