DHCPCD.CONF(5) File Formats Manual DHCPCD.CONF(5)
dhcpcd.conf - پرونده پیکربندی کلاینت dhcpcd

اگرچه dhcpcd می‌تواند همه کارها را از طریق خط فرمان انجام دهد، مواردی وجود دارد که انجام یک‌باره آن‌ها در یک پرونده پیکربندی آسان‌تر است. بسیاری از گزینه‌های موجود در dhcpcd(8) می‌توانند در اینجا نیز استفاده شوند. نخستین کلمه در هر خط، گزینه و باقی‌مانده خط، مقدار آن است. فاصله‌های خالی ابتدایی و انتهایی گزینه و مقدار حذف (trim) می‌شوند. می‌توانید با استفاده از نویسه  کاراکترها را در مقدار اسکیپ کنید. توضیحات می‌توانند با نویسه # آغاز شوند. مقادیر رشته‌ای باید داخل نویسه " (نقل‌قول) قرار گیرند.

فهرست گزینه‌های موجود در ادامه آمده است:

pattern
هنگام شناسایی رابط‌ها، نام رابط باید با pattern تطابق داشته باشد، که فهرستی از الگوهای جداشده با فاصله یا کاما است که به fnmatch(3) ارسال می‌شوند. اگر همان رابط در denyinterfaces تطابق یابد، همچنان رد خواهد شد.
pattern
هنگام شناسایی رابط‌ها، نام رابط نباید با pattern تطابق داشته باشد، که فهرستی از الگوهای جداشده با فاصله یا کاما است که به fnmatch(3) ارسال می‌شوند.
پروفایل‌های ناشناسی (Anonymity Profiles) را برای DHCP طبق RFC 7844 فعال می‌کند. هرگونه DUID نادیده گرفته می‌شود و ClientID فقط روی LL تنظیم می‌گردد. سپس dhcpcd فقط گزینه‌های ضروری را allow می‌کند. گزینه‌های غیرضروری را می‌توان با استفاده از allow یا request مجاز کرد. گزینه anonymous باید آخرین گزینه در پیکربندی باشد، مگر اینکه واقعاً بخواهید چیزی ارسال کنید که بتواند هویت شما را فاش کند. dhcpcd تلاشی برای راه‌اندازی مجدد اجاره قدیمی (reboot lease) نخواهد کرد و مستقیماً وارد مرحله DISCOVER/SOLICIT می‌شود.
هنگام بالا آمدن رابط یا زمانی که سیگنال حامل (carrier) قطع می‌شود، تصادفی‌سازی آدرس سخت‌افزاری را اجبار می‌کند. این گزینه معمولاً همراه با گزینه anonymous استفاده می‌شود.
address [address]
قبل از تلاش برای DHCP، dhcpcd به ترتیب به هر نشانی arping ارسال می‌کند. اگر آدرسی یافت شود، آدرس سخت‌افزاری پاسخ‌دهنده به عنوان نمایه (profile) انتخاب می‌شود، در غیر این صورت آدرس IP انتخاب خواهد شد. مثال:
interface bge0
arping 192.168.0.1
# My specific 192.168.0.1 network
profile dd:ee:aa:dd:bb:ee
static ip_address=192.168.0.10/24
# A generic 192.168.0.1 network
profile 192.168.0.1
static ip_address=192.168.0.98/24
protocol [algorithm [rdm]]
پیام‌های DHCP را احراز هویت می‌کند. بخش پروتکل‌های احراز هویت پشتیبانی‌شده را ببینید. اگر protocol برابر token باشد، در این صورت algorithm به‌صورت snd_secretid/rcv_secretid خواهد بود تا بتوانید توکن‌های متفاوتی را ارسال و دریافت کنید.
secretid realm expire key
یک کلید اشتراکی را برای استفاده در احراز هویت تعریف می‌کند. realm می‌تواند برای استفاده با پروتکل delayed به‌صورت "" باشد. expire تاریخ انقضای توکن است و باید در قالب "yyy-mm-dd HH:MM" فرمت‌بندی شود. می‌توانید از کلیدواژه forever یا 0 استفاده کنید که به این معناست توکن هرگز منقضی نمی‌شود. برای پروتکل token، مقدار secretid باید 0 و مقدار realm باید "" باشد. اگر dhcpcd با خطای
dhcp_auth_encode: Invalid argument
مواجه شود، به این معناست که dhcpcd نتوانسته توکن احراز هویت صحیح را در پیکربندی شما پیدا کند.
بلافاصله در پس‌زمینه فورک (اجرا) می‌شود. این گزینه برای اسکریپت‌های راه‌اندازی که پیام‌های پیوند (link) مربوط به وضعیت حامل (carrier) را غیرفعال نمی‌کنند مفید است.
address[/cidr]
تمام بسته‌های دریافتی از address[/cidr] را نادیده می‌گیرد.
address[/cidr]
تنها بسته‌های دریافتی از address[/cidr] را می‌پذیرد. اگر whitelist تنظیم شده باشد، blacklist نادیده گرفته می‌شود.
به عنوان یک کلاینت BOOTP عمل می‌کند. در اصل، گزینه DHCP Message Type ارسال نمی‌شود و برنامه فقط با یک سرور BOOTP تعامل خواهد داشت. سایر گزینه‌های DHCP همچنان کار می‌کنند.
به سرور DHCP دستور می‌دهد پاسخ‌ها را به صورت برودکست (پخش همگانی) به کلاینت بفرستد. به طور معمول این گزینه فقط برای رابط‌های غیر اترنت، مانند FireWire و InfiniBand تنظیم می‌شود. در بیشتر موارد، dhcpcd این مورد را به طور خودکار تنظیم می‌کند.
group
اعضای این گروه کاربری می‌توانند dhcpcd را کنترل کنند، از جمله (اما نه محدود به) متوقف کردن و راه‌اندازی رابط‌ها.
group
اعضای این گروه کاربری می‌توانند پیکربندی رابط‌های dhcpcd را بخوانند.
پیام‌های اشکال‌زدایی را به stderr و syslog ارسال می‌کند.
value
ماژول مدیریت /dev مشخص‌شده توسط value را بارگذاری می‌کند. dhcpcd اولین ماژولی را که کارایی داشته باشد (در صورت وجود) بارگذاری خواهد کرد.
value
مقدار value را برای استفاده در dhcpcd-run-hooks(8) به متغیرهای محیطی ارسال می‌کند. برای نمونه، می‌توانید با env force_hostname=YES هوک hostname را مجبور کنید که همیشه نام میزبان را تنظیم کند. یا مشخص کنید کدام درایور توسط wpa_supplicant(8) استفاده شود با: env wpa_supplicant_driver=nl80211

اگر نام میزبان تنظیم شده باشد، در صورت امکان مطابق با بخش ۳.۱ از RFC 4702 روی FQDN تنظیم می‌شود. اگر گزینه FQDN وجود نداشته باشد، dhcpcd برای حفظ یکپارچگی همچنان تلاش می‌کند یک FQDN از گزینه‌های hostname و domain ایجاد و تنظیم کند. برای بازنویسی این رفتار، مقدار env hostname_fqdn=[YES|NO|SERVER] را تنظیم کنید. مقدار SERVER به این معنی است که دقیقاً همان چیزی که سرور می‌گوید بدون دستکاری استفاده شود. این امر ممکن است در شبکه‌های دارای DHCPv4 و DHCPv6 که در آن نام میزبان DHCPv4 کوتاه است و DHCPv6 دارای FQDN است، منجر به نام میزبان ناسازگار شود. پروتکل DHCPv6 گزینه‌ای برای نام میزبان (hostname) ندارد.

string
شناسه clientid را ارسال می‌کند. اگر رشته در قالب 01:02:03 باشد، به عنوان هگزادسیمال کدگذاری می‌شود. برای رابط‌هایی که آدرس سخت‌افزاری آن‌ها طولانی‌تر از ۸ بایت است، یا اگر clientid یک رشته خالی باشد، dhcpcd یک clientid پیش‌فرض متشکل از خانواده سخت‌افزار و آدرس سخت‌افزاری ارسال می‌کند.
[ll | lt | uuid | value]
از یک شناسه یکتای DHCP موسوم به DUID (DHCP Unique Identifier) استفاده می‌کند. اگر حافظه پایدار در دسترس باشد، DUID-LLT (آدرس محلی پیوند + زمان) تولید می‌شود، در غیر این صورت DUID-LL (آدرس محلی پیوند) ایجاد می‌گردد. در صورتی که پرونده /var/lib/dhcpcd/duid وجود نداشته باشد، نوع DUID می‌تواند به عنوان یک پارامتر اختیاری مشخص شود. اگر مقدار داده‌شده ll, lt یا uuid نباشد، مقدار value از قالب 00:11:22:33 تبدیل خواهد شد. این مقدار به همراه IAID به عنوان clientid استفاده می‌شود. مقدار DUID تولیدشده در /var/lib/dhcpcd/duid نگهداری خواهد شد و نباید به سایر میزبان‌ها کپی شود. این پرونده همچنین بر قوانین بالا اولویت دارد، مگر در حالتی که مقدار صریح مشخص شده باشد.
iaid
شناسه ارتباط رابط (Interface Association Identifier) را روی iaid تنظیم می‌کند. این گزینه باید در یک بلوک interface استفاده شود. مقدار پیش‌فرض آن در صورت تنظیم، VLANID (با پیشوند 0xff) رابط است، در غیر این صورت ۴ بایت آخر آدرس سخت‌افزاری اختصاص‌یافته به رابط خواهد بود. هر نمونه از آن باید در محدوده کلاینت یکتا باشد و dhcpcd در صورت شناسایی تداخل هشدار می‌دهد. اگر تداخلی رخ دهد، تنها زمانی مشکل‌ساز خواهد بود که IAIDهای متداخل در یک شبکه یکسان استفاده شوند.
پروتکل DHCP را روی رابط فعال می‌کند؛ به صورت پیش‌فرض فعال است.
پروتکل DHCPv6 را روی رابط فعال می‌کند؛ به صورت پیش‌فرض فعال است.
پروتکل IPv4 را روی رابط فعال می‌کند؛ به صورت پیش‌فرض فعال است.
پروتکل IPv6 را روی رابط فعال می‌کند؛ به صورت پیش‌فرض فعال است.
[address]
نشانی address را در پیام DHCP DISCOVER درخواست می‌کند. هیچ تضمینی وجود ندارد که سرور DHCP دقیقاً همین آدرس را اختصاص دهد. اگر هیچ address مشخص نشود، اولین آدرسی که در حال حاضر به interface اختصاص یافته است استفاده می‌شود.
[address[/cidr[/broadcast_address]]]
مانند request در بالا عمل می‌کند، اما به جای DISCOVER/REQUEST یک پیام DHCP INFORM می‌فرستد. این حالت منجر به دریافت اجاره به معنای معمول نمی‌شود، بلکه تنها سرور DHCP را از address در حال استفاده مطلع می‌کند. همچنین در صورتی که آدرس از قبل روی رابط پیکربندی نشده باشد، باید شناسه شبکه اختیاری cidr را درج کنید. dhcpcd در حال اجرا باقی می‌ماند و وانمود می‌کند که اجاره نامحدود دارد. dhcpcd هنگام خروج، پیکربندی رابط را لغو نخواهد کرد. اگر dhcpcd نتواند با سرور DHCP ارتباط برقرار کند، به جای بازگشت به IPv4LL، یک خطا برمی‌گرداند.
یک درخواست اطلاعات DHCPv6 Information Request انجام می‌دهد. هیچ آدرسی درخواست یا مشخص نمی‌شود، اما سایر گزینه‌های DHCPv6 مجاز هستند. به طور معمول این کار زمانی به صورت خودکار انجام می‌شود که اعلان مسیریاب (IPv6 Router Advertisement) مشخص کند کلاینت باید این عملیات را انجام دهد. این گزینه تنها زمانی نیاز است که dhcpcd پیام‌های IPv6 RA را پردازش نمی‌کند و نیاز به یک DHCPv6 Information Request وجود دارد.
dhcpcd به طور معمول هنگام خروج، پیکربندی و رابط را لغو می‌کند. گاهی اوقات این حالت مطلوب نیست؛ به عنوان مثال اگر پارتیشن ریشه روی NFS سوار شده باشد یا کلاینت‌های SSH به این میزبان متصل باشند و نیاز باشد از خاموش شدن میزبان مطلع شوند. می‌توانید از این گزینه برای جلوگیری از این اتفاق استفاده کنید.
profile
در صورت شکست DHCP، به استفاده از این نمایه (profile) برمی‌گردد. این به شما امکان می‌دهد به جای استفاده از ZeroConf، یک نمایه ایستا را پیکربندی کنید.
seconds
فاصله زمانی اولیه ارسال مجدد DHCPv4 را روی seconds ثانیه تنظیم می‌کند. حداقل مقدار ۱ و حداکثر ۴ است. مقدار پیش‌فرض طبق RFC 2131 برابر ۴ ثانیه است. این گزینه فقط بر DHCPv4 تأثیر می‌گذارد؛ ارسال مجدد در DHCPv6 طبق RFC 8415 اداره می‌شود. همچنین گزینه‌های backoff_cutoff و backoff_jitter را ببینید.
seconds
حداکثر سقف فاصله زمانی عقب‌نشینی نمایی (exponential backoff) در DHCPv4 را روی seconds ثانیه محدود می‌کند. حداقل مقدار ۱ و حداکثر ۶۴ است. مقدار پیش‌فرض طبق RFC 2131 برابر ۶۴ ثانیه است. اگر seconds کمتر از initial_interval باشد، مقدار آن افزایش می‌یابد تا با آن برابر شود، زیرا سقف بازه (cutoff) حدی برای رشد نمایی است و نباید فاصله زمانی اولیه را کوچک‌تر کند. تنظیم هم‌زمان هر دو گزینه initial_interval و backoff_cutoff روی ۱ عملاً رشد نمایی را غیرفعال می‌کند، به طوری که ارسال‌های مجدد تنها از فاصله زمانی اولیه به همراه نوسان تصادفی (jitter) استفاده می‌کنند. این گزینه فقط بر DHCPv4 تأثیر می‌گذارد؛ ارسال مجدد در DHCPv6 طبق RFC 8415 اداره می‌شود. همچنین گزینه‌های initial_interval و backoff_jitter را ببینید.
milliseconds
میزان نوسان تصادفی (jitter) اعمال‌شده بر هر فاصله زمانی ارسال مجدد DHCPv4 را تنظیم می‌کند. این نوسان به صورت ± milliseconds میلی‌ثانیه اعمال می‌شود. مقدار پیش‌فرض طبق RFC 2131 برابر ۱۰۰۰ (±۱ ثانیه) است که حداکثر مقدار مجاز نیز می‌باشد. مقدار ۰ نوسان را غیرفعال کرده و زمان‌بندی ارسال مجدد معین (قطعی) ایجاد می‌کند. این گزینه فقط بر DHCPv4 تأثیر می‌گذارد؛ ارسال مجدد در DHCPv6 طبق RFC 8415 اداره می‌شود. همچنین گزینه‌های backoff_cutoff و initial_interval را ببینید.
seconds
حالت جایگزین (fallback) را پس از seconds ثانیه آغاز می‌کند. مقدار پیش‌فرض ۵ ثانیه است.
name
نام میزبان name را به سرور DHCP ارسال می‌کند تا بتواند در DNS ثبت شود. اگر name یک رشته خالی باشد، نام میزبان فعلی سیستم ارسال می‌شود. اگر name یک FQDN باشد (یعنی شامل نقطه . باشد)، به همان صورت کدگذاری می‌شود.
به جای FQDN، نام میزبان کوتاه را به سرور DHCP ارسال می‌کند. این گزینه از آن جهت مفید است که اگر بخش دامنه با سرور DHCP مطابقت نداشته باشد، سرورها FQDN را در DNS خود ثبت نمی‌کنند.

همچنین گزینه env در بالا را برای کنترل چگونگی تنظیم نام میزبان روی سیستم ببینید.

[iaid [/ address]]
یک نشانی عادی DHCPv6 (Normal Address) برای iaid درخواست می‌کند. مقدار پیش‌فرض iaid همان گزینه iaid توضیح داده شده در بالا است. می‌توانید با مشخص کردن یک iaid یکتا برای هر کدام، بیش از یک ia_na درخواست کنید.
[iaid]
یک نشانی موقت DHCPv6 (Temporary Address) برای iaid درخواست می‌کند. می‌توانید با مشخص کردن یک iaid یکتا برای هر کدام، بیش از یک ia_ta درخواست کنید.
[iaid [/ prefix / prefix_len] [interface [/ sla_id [/ prefix_len [/ suffix]]]]]
یک پیشوند تفویض‌شده (Delegated Prefix) DHCPv6 برای iaid درخواست می‌کند. این گزینه باید در یک بلوک interface استفاده شود. مگر اینکه یک sla_id با مقدار ۰ با همان طول پیشوند حاصل از تفویض اختصاص داده شود، یک مسیر رد (reject route) برای پیشوند تفویض‌شده نصب می‌شود تا از مسیریابی نشانی‌های تخصیص‌نیافته به سمت بالادست جلوگیری شود. اگر هیچ interface مشخص نشود، به هر رابط دیگری یک پیشوند با sla_id معادل با ایندکس رابط که توسط سیستم‌عامل تعیین شده اختصاص می‌یابد. در غیر این صورت، نشانی‌ها تنها به ازای هر interface و sla_id تخصیص داده می‌شوند. برای جلوگیری از تفویض به هر رابطی، از - به عنوان نام نامعتبر رابط استفاده کنید. هر آدرس تخصیص‌یافته دارای یک suffix خواهد بود که مقدار پیش‌فرض آن ۱ است. اگر suffix برابر ۰ باشد، یک نشانی SLAAC تخصیص می‌یابد. نمی‌توانید به رابط درخواست‌کننده یک پیشوند اختصاص دهید، مگر اینکه سرور DHCPv6 از RFC 6603 (گزینه رد پیشوند یا Prefix Exclude Option) پشتیبانی کند. dhcpcd باید برای تمام رابط‌هایی که به آن‌ها پیشوند تفویض می‌کند در حال اجرا باشد. طول پیش‌فرض prefix_len برابر ۶۴ در نظر گرفته می‌شود، مگر اینکه بیشترین مقدار sla_id در آن نگنجد. در این صورت prefix_len به بالاترین مضرب ۸ که بتواند sla_id را در خود جای دهد افزایش می‌یابد. sla_id یک عدد صحیح است که باید در داخل iaid یکتا باشد و به پیشوندی اضافه می‌شود که باید درون prefix_len منهای طول پیشوند تفویض‌شده جا بگیرد. می‌توانید چند مقدار interface / sla_id / prefix_len را به ازای هر ia_pd به صورت جداشده با فاصله مشخص کنید. هنگام درخواست Prefix Delegation، گزینه IPv6RS باید به صورت سراسری غیرفعال شود.

در مثال زیر، eth0 رابط متصل به شبکه خارجی است که برای هر دو پروتکل IPv4 و IPv6 پیکربندی می‌شود. سرور DHCPv4 یک نشانی IPv4 و یک مسیر پیش‌فرض ارائه می‌دهد. سرور DHCPv6 یک نشانی IPv6، یک مسیر پیش‌فرض و یک زیرشبکه /64 برای تفویض به رابط داخلی ارائه خواهد داد. رابط eth1 با استفاده از اولین آدرس (::1) از پیشوند تفویض‌شده به طور خودکار برای IPv6 پیکربندی می‌شود. یک پیشوند دوم درخواست شده و به دو رابط دیگر اختصاص می‌یابد. می‌توان از rtadvd(8) با یک پرونده پیکربندی خالی در eth1، eth2 و eth3 برای ارائه پیکربندی خودکار نشانی IPv6 در شبکه داخلی استفاده کرد.

noipv6rs                 # غیرفعال‌سازی درخواست مسیریابی
denyinterfaces eth2      # دست نزدن به eth2
interface eth0
  ipv6rs                 # فعال‌سازی درخواست مسیریابی برای eth0
  ia_na 1                # درخواست یک نشانی IPv6
  ia_pd 2 eth1/0         # درخواست PD و اختصاص به eth1
  ia_pd 3 eth2/1 eth3/2  # درخواست PD و اختصاص به eth2 و eth3
  ia_pd 4 -              # درخواست PD بدون اختصاص به رابط
تنها IPv4 را پیکربندی می‌کند.
تنها IPv6 را پیکربندی می‌کند.
[disable | none | ptr | both]
مقدار none از سرور DHCP نمی‌خواهد که DNS را به‌روزرسانی کند. مقدار ptr فقط از سرور DHCP می‌خواهد که رکورد PTR میزبان را در DNS به‌روز کند، در حالی که both رکورد A را نیز به‌روزرسانی می‌کند. مقدار disable گزینه FQDN را غیرفعال می‌کند. حالت پیش‌فرض both است. خود dhcpcd هرگز به‌روزرسانی‌های DNS را مستقیماً انجام نمی‌دهد. dhcpcd نام میزبان FQDN را طبق مشخصات RFC 1035 کدگذاری می‌کند.
interface
گزینه‌های بعدی تنها برای این interface تجزیه می‌شوند. تطبیق الگو از طریق fnmatch(3) مجاز است.
seconds
پیش از آغاز IPv4LL به مدت seconds ثانیه منتظر می‌ماند. مقدار پیش‌فرض ۵ ثانیه است.
به ازای هر پیشوند اعلام‌شده در پیام اعلان مسیریاب (IPv6 Router Advertisement) که پرچم Auto آن فعال باشد، نشانی‌های SLAAC تولید می‌کند. به صورت پیش‌فرض فعال است.
گزینه فوق را غیرفعال می‌کند.
به صورت پیش‌فرض، هنگامی که dhcpcd یک اعلان مسیریاب IPv6 دریافت می‌کند، تنها زمانی به پس‌زمینه فورک می‌شود که RA حداقل شامل یک گزینه منقضی‌نشده RDNSS و یک پیشوند معتبر باشد، یا هیچ دستورالعملی برای DHCPv6 نداشته باشد. تنظیم این گزینه باعث می‌شود dhcpcd همواره با دریافت یک RA به پس‌زمینه فورک شود.
درخواست اعلان مسیریاب (IPv6 Router Advertisement solicitation) را فعال می‌کند. این گزینه به صورت پیش‌فرض فعال است، اما در اینجا برای مواردی مستند شده که به صورت سراسری غیرفعال است اما نیاز است برای یک رابط خاص فعال شود.
اگر dhcpcd نتواند اجاره‌ای به دست آورد، تلاش می‌کند از آخرین اجاره کسب‌شده برای رابط استفاده کند.
مشابه گزینه بالا است، اما اجاره حتی در صورت انقضا نیز حفظ می‌شود. در صورتی که هر میزبان دیگری از طریق ARP تلاش کند آن را به خود اختصاص دهد، dhcpcd آن را واگذار خواهد کرد. این عمل بخش ۳.۷ از RFC 2131 را نقض می‌کند، که بیان می‌دارد اجاره به محض انقضا باید رها شود.
seconds
مدت زمان اجاره DHCP به اندازه seconds ثانیه درخواست می‌کند. مقدار -1 نشان‌دهنده زمان اجاره نامحدود است. به صورت پیش‌فرض، dhcpcd هیچ زمان اجاره‌ای درخواست نمی‌کند و آن را به سرور DHCP واگذار می‌کند. درخواست زمان اجاره برای DHCPv6 امکان‌پذیر نیست زیرا با استانداردهای RFC سازگار نیست. بخش‌های ۲۱.۴، ۲۱.۶، ۲۱.۲۱ و ۲۱.۲۲ از RFC 8415 را ببینید.
اندازه بافر دریافت پیوند (link receive buffer) را نسبت به مقدار پیش‌فرض کرنل بازنویسی می‌کند. اگرچه dhcpcd از سرریزهای بافر پیوند بازیابی می‌شود، اما این رخداد در سیستم‌های تحت بار کاری سنگین ممکن است مطلوب نباشد.
logfile
در logfile مشخص‌شده می‌نویسد. dhcpcd همچنان در syslog(3) نیز می‌نویسد. هنگامی که dhcpcd سیگنال SIGUSR2 را دریافت کند، logfile مجدداً باز می‌شود.
metric
متریک‌ها برای ترجیح دادن یک رابط بر دیگری استفاده می‌شوند که کمترین مقدار برنده است. dhcpcd متریک پیش‌فرض 1000 + if_nametoindex(3) را در نظر می‌گیرد. این مقدار برای رابط‌های بی‌سیم با ۲۰۰۰ واحد، برای IPv4LL با ۱۰۰۰۰۰۰ واحد و برای رابط‌های رومینگ با ۲۰۰۰۰۰۰ واحد آفست (افزایش) خواهد یافت.
url
آدرس اینترنتی (URL) مربوط به شرح کاربرد سازنده (MUD) را مشخص می‌کند. این شرح توسط دستگاه‌های شبکه بالادست برای ایجاد فهرست‌های دسترسی مورد نظر استفاده می‌شود. برای اطلاعات بیشتر، پیش‌نویس draft-ietf-opsawg-mud را ببینید.
هنگام افزودن یک نشانی IPv4 جدید، هرگونه نشانی IPv4 قبلی از رابط حذف خواهد شد.
هیچ درخواست ARP ارسال نمی‌کند. این گزینه IPv4LL را نیز غیرفعال می‌کند.
در صورت تداخل نشانی IP، حتی اگر دفاع ناموفق باشد نشانی IP را حفظ می‌کند.
حتی در صورت درخواست احراز هویت، آن را الزامی نمی‌کند. همچنین پیام‌های FORCERENEW و RECONFIGURE را بدون احراز هویت مجاز می‌داند.
هنگام شروع پروتکل‌ها، تأخیر تصادفی اولیه ایجاد نمی‌کند.
ماژول‌های مدیریت /dev را بارگذاری نمی‌کند.
سرویس DHCP را آغاز نکرده و به پیام‌های DHCP گوش نمی‌دهد. این گزینه فقط هنگام مجاز دانستن IPv4LL کاربرد دارد.
سرویس DHCPv6 را آغاز نکرده و به پیام‌های DHCPv6 گوش نمی‌دهد. به طور معمول، DHCPv6 بر اساس دستورالعمل اعلان مسیریاب IPv6 یا پیکربندی راه‌اندازی می‌شود.
هیچ مسیر پیش‌فرضی نصب نمی‌کند.
در صورت وجود، یک مسیر پیش‌فرض نصب می‌کند (پیش‌فرض).
script
این اسکریپت هوک را اجرا نمی‌کند. با نام کامل یا نام دارای ۲ رقم پیشوند و با پسوند اختیاری .sh مطابقت داده می‌شود.

بنابراین برای جلوگیری از تغییر تنظیمات DNS یا راه‌اندازی wpa_supplicant توسط dhcpcd می‌توانید به این صورت عمل کنید:

nohook resolv.conf, wpa_supplicant
برای پیکربندی نشانی IPv4 تلاش نمی‌کند.
در صورت عدم موفقیت در دریافت نشانی از طریق DHCP، برای دریافت نشانی IPv4LL تلاش نمی‌کند. ببینید: RFC 3927.
اعلان‌های مسیریاب IPv6 و DHCPv6 را درخواست نکرده و نمی‌پذیرد.
اعلان‌های مسیریاب IPv6 را درخواست نکرده و نمی‌پذیرد.
پیام‌های پیوند مربوط به وضعیت حامل (carrier) را دریافت نمی‌کند. تنها باید این گزینه را برای درایورهای معیوب رابط تنظیم کنید.
نوشتن در syslog(3) را غیرفعال می‌کند.
در حالت مدیریتی، رابط را بالا (up) نمی‌آورد.
option
گزینه option را از سرور درخواست می‌کند. می‌تواند متغیری برای استفاده در dhcpcd-run-hooks(8) یا مقدار عددی باشد. می‌توانید چند option را با کاما، فاصله یا با خطوط option بیشتر مشخص کنید. برای درخواست یک گزینه DHCPv6، عبارت dhcp6_ را به ابتدای option اضافه کنید. اگر هیچ گزینه DHCPv6 پیکربندی نشده باشد، گزینه‌های DHCPv4 به گزینه‌های معادل DHCPv6 نگاشت می‌شوند.

برای مدیریت گزینه‌های ND، عبارت nd_ را به ابتدای option اضافه کنید.

برای مشاهده فهرست گزینه‌های قابل استفاده، dhcpcd را با آرگومان -V, --variables فراخوانی کنید.

option
برعکس nooption است. اگر گزینه allow وجود نداشته باشد، هنگام تعیین گزینه‌های قابل ارسال و دریافت، نقیض nooption محاسبه می‌شود. گزینه option همواره مجاز است.
option
گزینه را قبل از پردازش از پیام حذف می‌کند.
option
وجود option را در تمام پیام‌ها الزامی می‌کند، در غیر این صورت پیام نادیده گرفته می‌شود. برای اینکه الزام کنید dhcpcd تنها به سرورهای DHCP پاسخ دهد و نه سرورهای BOOTP، می‌توانید dhcp_message_type را require کنید. البته این یک روش کاملاً دقیق نیست زیرا یک سرور BOOTP نیز می‌تواند گزینه‌های مشابه DHCP ارسال کند.
option
پیامی را که حاوی option باشد رد می‌کند. این گزینه زمانی مفید است که نتوانید از require برای انتخاب یا عدم انتخاب پیام‌های BOOTP استفاده کنید.
option
اگر dhcpcd تشخیص دهد که نشانی به یک رابط نقطه به نقطه (مانند PPP، TUN و غیره) اضافه شده است، گزینه‌های فهرست‌شده DHCP را روی نشانی مقصد رابط تنظیم می‌کند.
name
گزینه‌های بعدی تنها برای این نمایه name تجزیه می‌شوند.
تمام خروجی‌های dhcpcd در کنسول را به جز خطاها پنهان می‌کند.
seconds
در صورتی که یک اجاره قدیمی برای استفاده موجود باشد، به مدت reboot ثانیه قبل از رفتن به فاز DISCOVER فرصت می‌دهد. به مدت reboot ثانیه قبل از شروع وضعیت‌های جایگزین (fallback) از فاز DISCOVER فرصت می‌دهد. پروتکل IPv4LL زمانی که اولین مهلت زمانی reboot سر برسد آغاز می‌شود. مقدار پیش‌فرض ۵ ثانیه است. تنظیم ۰ ثانیه باعث می‌شود dhcpcd از فاز راه‌اندازی مجدد (reboot) صرف‌نظر کرده و مستقیماً وارد DISCOVER شود. این حالت برای کاربران دستگاه‌های همراه مطلوب است، زیرا اگر از شبکه A به شبکه B بروید و هر دو از یک زیرشبکه یکسان استفاده کنند و آدرس شبکه A در شبکه B استفاده نشده باشد، سرور DHCP حتی اگر معتبر (authoritative) باشد پاسخی نخواهد داد، به این معنی که dhcpcd پیش از بازگشت به فاز DISCOVER دچار اتمام مهلت زمانی خواهد شد. این گزینه به جز رد کردن فاز راه‌اندازی مجدد، هیچ تأثیری بر DHCPv6 ندارد.
dhcpcd قبل از متوقف کردن رابط، اجاره را آزاد خواهد کرد.
script
به جای مسیر پیش‌فرض /usr/lib/dhcpcd/dhcpcd-run-hooks از script استفاده می‌کند.
seconds
پیش از بازگشت به DISCOVER، به مدت seconds ثانیه برای اجاره درخواست می‌دهد. مقدار پیش‌فرض ۱۸۰ ثانیه است.
ssid
گزینه‌های بعدی تنها برای این ssid بی‌سیم تجزیه می‌شوند.
hwaddr | | token [temp | temporary]
شناسه رابط مورد استفاده برای نشانی‌های IPv6 تولیدشده با SLAAC را انتخاب می‌کند. اگر از private استفاده شود، نشانی بر اساس RFC 7217 تولید می‌شود. اگر از token token استفاده شود، توکن با پیشوند ترکیب می‌شود تا نشانی نهایی ساخته شود. دستورالعمل temporary یک نشانی موقت نیز برای پیشوند ایجاد خواهد کرد.
value
یک مقدار ایستا value را پیکربندی می‌کند. اگر ip_address را تنظیم کنید، dhcpcd برای دریافت اجاره تلاش نخواهد کرد و فقط از مقدار مذکور برای آدرس با زمان اجاره نامحدود استفاده می‌کند. اگر مقداری خالی تنظیم کنید، تمام تخصیص‌های ایستای قبلی مربوط به همان مقدار حذف می‌شوند. این ویژگی هنگام استفاده از نمایه‌ها (profiles) مفید است و در مورد ip_address تخصیص ایستا را لغو می‌کند. توجه داشته باشید که تنظیم 0.0.0.0 تخصیص ایستا را حفظ می‌کند اما منتظر برنامه‌ای شخص ثالث (3rdparty) برای پیکربندی آدرس می‌ماند. اگر ip6_address را تنظیم کنید، dhcpcd پیکربندی خودکار را طبق روال معمول ادامه خواهد داد.

در اینجا مثالی آورده شده که دو آدرس ایستا را پیکربندی می‌کند و نشانی برودکست پیش‌فرض IPv4، یک روتر IPv4 و DNS را بازنویسی کرده و پیکربندی خودکار IPv6 را غیرفعال می‌سازد. همچنین اگر مایل به دریافت اطلاعات بیشتر از طریق DHCPv6 بودید، می‌توانستید از دستور inform6 در اینجا استفاده کنید. برای IPv4، باید به جای تنظیم نشانی ایستا از گزینه inform ipaddress استفاده فرمایید.

interface eth0
noipv6rs
static ip_address=192.168.0.10/24
static broadcast_address=192.168.0.63
static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 fd51:42f8:caae:d92e::1

در اینجا مثالی برای PPP آورده شده است که به مقصد یک مسیر پیش‌فرض می‌دهد. این مثال از کلیدواژه ویژه destination برای درج نشانی مقصد در مقدار استفاده می‌کند.

interface ppp0
static ip_address=0.0.0.0
destination routers
seconds
پس از seconds ثانیه به جای مقدار پیش‌فرض ۳۰ دچار اتمام مهلت زمانی (timeout) می‌شود. تنظیم ۰ seconds باعث می‌شود dhcpcd برای دریافت اجاره برای همیشه منتظر بماند. اگر dhcpcd روی یک رابط منفرد کار کند، پس از وقوع اتمام مهلت خارج خواهد شد، در غیر این صورت dhcpcd به پس‌زمینه فورک می‌شود. در صورت استفاده از IPv4LL، dhcpcd فرآیند IPv4LL را پس از اتمام مهلت آغاز کرده و پیش از اتمام مهلت قطعی، مدت زمان بیشتری منتظر می‌ماند.
string
پیام DHCPv4 را با کلاس کاربری (userclass) برچسب‌گذاری می‌کند. می‌توانید بیش از یک مورد را مشخص کنید.
string
پیام DHCPv4 را با کلاس کاربری مایکروسافت برچسب‌گذاری می‌کند. برخلاف گزینه userclass, این گزینه تنها یک بار قابل افزودن است. فقط باید برای سرورهای DHCP مایکروسافت استفاده شود و vendorclassid باید روی "MSFT 98" یا "MSFT 5.0" تنظیم گردد. این گزینه با استانداردهای RFC سازگار نیست.
code,value
یک گزینه اطلاعات اختصاصی سازنده کپسوله‌شده (DHCP Option 43) را اضافه می‌کند. مقدار code باید عددی بین ۱ تا ۲۵۴ (شامل هر دو) باشد. برای افزودن یک رشته خام سازنده، از code صرف‌نظر کنید اما کاما را نگه دارید. مثال‌ها:

تنظیم گزینه سازنده 01 با یک نشانی IP:

vendor 01,192.168.0.2
تنظیم گزینه سازنده 02 با یک کد هگز:
vendor 02,01:02:03:04:05
تنظیم گزینه سازنده 03 با یک نشانی IP به صورت رشته:
vendor 03,\"192.168.0.2\"
تنظیم گزینه سازنده کپسوله‌نشده روی hello world:
vendor ,"hello world"
en code,value
یک گزینه اطلاعات اختصاصی سازنده کپسوله‌شده (DHCP Option 125) را با شماره سازمانی اختصاص‌یافته توسط IANA موسوم به en به همراه code که باید بین ۱ تا ۲۵۵ (شامل هر دو) باشد، و value پس از کاما اضافه می‌کند. مثال‌ها:

تنظیم vsio برای شماره سازمانی ۱۵۵ گزینه 01 با یک نشانی IPv4:

vsio 155 01,192.168.1.1
تنظیم vsio برای شماره سازمانی ۱۵۵ گزینه 02 با یک رشته:
vsio 155 02,"hello world"
تنظیم vsio برای شماره سازمانی ۲۵۵ گزینه 01 با یک کد هگز:
vsio 255 01,01:02:03:04:05
en code,value
یک گزینه اطلاعات اختصاصی سازنده کپسوله‌شده (DHCPv6 Option 17) را با شماره سازمانی اختصاص‌یافته توسط IANA موسوم به en به همراه code که باید بین ۱ تا ۶۵۵۳۵ (شامل هر دو) باشد، و value پس از کاما اضافه می‌کند. مثال‌ها:

تنظیم vsio برای شماره سازمانی ۱۵۵ گزینه 01 با یک نشانی IPv6:

vsio6 155 01,2001:0db8:85a3:0000:0000:8a2e:0370:7334
تنظیم vsio برای شماره سازمانی ۱۵۵ گزینه 02 با یک رشته:
vsio6 155 02,"hello world"
تنظیم vsio برای شماره سازمانی ۲۵۵ گزینه 01 با یک کد هگز:
vsio6 255 01,01:02:03:04:05
string
کلاس سازنده DHCP (DHCP Vendor Class) را تنظیم می‌کند. همان‌طور که در زیر نشان داده شده، DHCPv6 گزینه اختصاصی خود را دارد. مقدار پیش‌فرض dhcpcd-<version>:<os>:<machine>:<platform> است. برای مثال:
dhcpcd-5.5.6:NetBSD-6.99.5:i386:i386
در صورت عدم تنظیم، مقداری ارسال نمی‌شود. برخی از سرورهای DHCP با پیکربندی نامناسب، شناسه‌های vendorclassid ناشناخته را رد می‌کنند. برای دور زدن این مشکل، می‌توانید با استفاده از vendorclassid مربوط به MSFT هویت ویندوز را جعل کنید.
en data
کلاس سازنده شناسایی‌کننده سازنده در DHCPv6 را با شماره سازمانی تخصیص‌یافته توسط IANA به صورت en همراه با داده‌های data اضافه می‌کند. این گزینه می‌تواند بیش از یک بار برای افزودن داده‌های بیشتر تنظیم شود، اما رفتار سیستم طبق RFC 3925 در صورتی که شماره سازمانی متفاوت باشد، تعریف‌نشده است.
[4 | 6]
پیش از فورک شدن به پس‌زمینه، منتظر تخصیص یک نشانی می‌ماند. مقدار ۴ به معنای انتظار برای تخصیص نشانی IPv4 است. مقدار ۶ به معنای انتظار برای تخصیص نشانی IPv6 است. اگر هیچ آرگومانی داده نشود، dhcpcd منتظر تخصیص هر پروتکل نشانی می‌ماند. امکان انتظار برای بیش از یک پروتکل نشانی وجود دارد و dhcpcd تنها زمانی به پس‌زمینه فورک می‌شود که تمام شرایط انتظار برآورده شده باشند.
به جای یک عدد تصادفی تولیدشده، از چهار بایت آخر آدرس سخت‌افزاری به عنوان DHCP xid استفاده می‌کند.

پروتکل‌های DHCP، ND و DHCPv6 امکان استفاده از گزینه‌های سفارشی را فراهم می‌کنند و گزینه‌های سازنده طبق RFC 3925 برای DHCP نیز قابل ارائه هستند. هر گزینه باید با یکی از دستورالعمل‌های define, definend, define6 یا vendopt آغاز شود. این دستورالعمل می‌تواند به صورت اختیاری با گزینه‌های embed یا encap دنبال شود. هر دو می‌توانند بیش از یک بار مشخص شوند و embed باید پیش از encap قرار گیرد.

code type variable
گزینه DHCP با کد code و از نوع type را با نام variable تعریف می‌کند که به dhcpcd-run-hooks(8) صادر می‌شود.
code type variable
گزینه ND با کد code و از نوع type را با نام variable تعریف می‌کند که با پیشوند nd_ به dhcpcd-run-hooks(8) صادر می‌شود.
code type variable
گزینه DHCPv6 با کد code و از نوع type را با نام variable تعریف می‌کند که با پیشوند dhcp6_ به dhcpcd-run-hooks(8) صادر می‌شود.
code type variable
گزینه‌های شناسایی‌کننده سازنده (Vendor-Identifying Vendor Options) را تعریف می‌کند. مقدار code شماره سازمانی IANA است که گزینه‌های کپسوله‌شده را به طور یکتا توصیف می‌کند. مقدار type معمولاً encap است. مقدار variable نام گزینه سازنده صادرشونده را مشخص می‌نماید.
type variable
یک متغیر تعبیه‌شده (embedded) را در گزینه تعریف‌شده مشخص می‌کند. طول آن توسط type تعیین می‌شود. اگر variable با آنچه در گزینه والد تعریف شده یکسان نباشد، ابتدا نام variable والد همراه با یک زیرخط (underscore) به عنوان پیشوند به آن اضافه می‌شود. اگر variable دارای نام reserved باشد، پردازش نخواهد شد.
code type variable
یک متغیر کپسوله‌شده (encapsulated) را در گزینه تعریف‌شده مشخص می‌کند. طول آن توسط type تعیین می‌شود. اگر variable با آنچه در گزینه والد تعریف شده یکسان نباشد، ابتدا نام variable والد همراه با یک زیرخط به عنوان پیشوند به آن اضافه می‌شود.

این کلیدواژه‌ها پیش از خود نوع قرار می‌گیرند تا آن را کامل‌تر توصیف کنند. می‌توانید از بیش از یک مورد استفاده کنید، اما باید به ترتیبی که در زیر فهرست شده است آورده شوند.

گزینه را به صورت پیش‌فرض بدون نیاز به تعیین در پیکربندی کاربر درخواست می‌کند.
این گزینه صرف‌نظر از پیکربندی کاربر، قابل درخواست نیست.
این گزینه اختیاری است. تنها برای گزینه‌های تعبیه‌شده‌ای مانند گزینه کلاینت FQDN معنا دارد که خود رشته FQDN در آن اختیاری است.
گزینه می‌تواند بیش از یک بار ظاهر شود و ایندکس‌گذاری خواهد شد.
داده‌های گزینه به آرایه‌ای از عناصر جداشده با فاصله تقسیم می‌شوند که هر عنصر از نوعی یکسان است.
گزینه ممکن است از طول عادی خود کوتاه‌تر (truncated) باشد. انتهای اندازه عادی هنگام گسترش با صفر پر (zero-padded) می‌شود. در حال حاضر این ویژگی تنها برای ip6address در حالتی که پیشوند باشد پشتیبانی می‌شود.

نوع، مستقیماً بر طول داده‌های مصرف‌شده در داخل گزینه تأثیر می‌گذارد. داده‌های باقیمانده به طور معمول نادیده گرفته می‌شوند. طول داده را می‌توان برای انواع string و binhex مشخص کرد، اما این کار عموماً زمانی انجام می‌شود که سایر داده‌ها پس از آن در همان گزینه تعبیه شده باشند.

یک نشانی IPv4، ۴ بایت.
یک نشانی IPv6، ۱۶ بایت.
[: length]
یک رشته NVT ASCII از نویسه‌های قابل چاپ.
یک بایت.
: flags
یک بایت که به صورت رشته‌ای از پرچم‌ها نمایش داده می‌شود، ابتدا باارزش‌ترین بیت (most significant bit). به عنوان مثال، با استفاده از ABCDEFGH آنگاه A معادل 10000000، B معادل 01000000، C معادل 00100000 و غیره خواهد بود. اگر بیت تنظیم نشده باشد، پرچم چاپ نمی‌شود. پرچم 0 حتی در صورت تنظیم بودن موقعیت بیت چاپ نمی‌شود. این ویژگی برای مجاز ساختن رزرو بیت‌های اولیه در حین تخصیص بیت‌های پایانی است. پرچم 1 بیت را در هر دو حالت تنظیم‌شده یا تنظیم‌نشده چاپ می‌کند.
یک عدد صحیح ۱۶ بیتی علامت‌دار، ۲ بایت.
یک عدد صحیح ۱۶ بیتی بدون علامت، ۲ بایت.
یک عدد صحیح ۳۲ بیتی علامت‌دار، ۴ بایت.
یک عدد صحیح ۳۲ بیتی بدون علامت، ۴ بایت.
یک مقدار ثابت (1) برای نشان دادن حضور گزینه، ۰ بایت.
یک رشته کدگذاری‌شده طبق RFC 3397.
یک رشته اعتبارسنجی‌شده طبق RFC 1035.
در صورت آرایه بودن، دو بایت اول طول URI در داده‌های گزینه است. در غیر این صورت، کل داده‌های گزینه همان URI است. از آنجا که فاصله در کدگذاری URI مجاز نیست، URIها با فاصله از یکدیگر جدا می‌شوند.
[: length]
داده‌های باینری که به صورت هگزادسیمال بیان شده‌اند.
شامل گزینه‌های تعبیه‌شده (حاکی از encap نیز هست).
شامل گزینه‌های کپسوله‌شده (حاکی از embed نیز هست).
به گزینه‌ای از تعاریف سراسری ارجاع می‌دهد.

# DHCP option 81, Fully Qualified Domain Name, RFC 4702
define 81 embed fqdn
embed byte flags
embed byte rcode1
embed byte rcode2
embed domain fqdn
# DHCP option 125, Vendor Specific Information Option, RFC 3925
define 125 encap vsio
embed uint32 enterprise_number
# Options defined for the enterprise number
encap 1 ipaddress ipaddress

توکن متن ساده‌ای را که سرور انتظار دارد ارسال کرده و با توکن ارسالی از سوی سرور مطابقت می‌دهد. الزامی نیست که توکن‌ها یکسان باشند. در صورت عدم تعیین، توکن با secretid برابر ۰ در ارسال پیام‌ها و اعتبارسنجی پیام‌های دریافتی استفاده خواهد شد.
احراز هویت با تأخیر (Delayed Authentication). dhcpcd یک گزینه احراز هویت بدون کلید یا MAC ارسال می‌کند. سرور این گزینه را مشاهده کرده و کلیدی را برای dhcpcd انتخاب می‌کند و realm و secretid را در آن می‌نویسد. سپس dhcpcd به دنبال یک توکن منقضی‌نشده با realm و secretid مطابق می‌گردد. این توکن برای احراز هویت سایر پیام‌ها استفاده می‌شود.
مشابه حالت بالا، اما بدون حوزه (realm).

در صورت عدم تعیین، hmac-md5 حالت پیش‌فرض است.

 

در صورت عدم تعیین، monotonic حالت پیش‌فرض است. اگر این مقدار نسبت به آنچه قبلاً استفاده می‌شد تغییر کند، یا روش محاسبه و ذخیره‌سازی آن دچار اختلال شود، احتمالاً سرور DHCP باید درک خود از مقدار شناسایی تکرار (Replay Detection Value) کلاینت را بازنشانی کند.

عدد موجود در پرونده /var/lib/dhcpcd/dhcpcd-rdm.monotonic را خوانده و یکی به آن اضافه می‌کند.
یک برچسب زمانی NTP از زمان سیستم ایجاد می‌کند.
مشابه monotime است.

fnmatch(3), if_nametoindex(3), dhcpcd(8), dhcpcd-run-hooks(8)

Roy Marples <roy@marples.name>

لطفاً آن‌ها را به https://roy.marples.name/projects/dhcpcd گزارش دهید.

July 29, 2026 Linux 6.12.107+deb13-amd64