DHCPCD(8) System Manager's Manual DHCPCD(8)

dhcpcd — یک کلاینت DHCP

dhcpcd [-146ABbDdEGgHJKLMNPpqTV] [-C, --nohook hook] [-c, --script script] [-e, --env value] [-F, --fqdn FQDN] [-f, --config file] [-h, --hostname hostname] [-I, --clientid clientid] [-i, --vendorclassid vendorclassid] [-j, --logfile logfile] [-l, --leasetime seconds] [-m, --metric metric] [-O, --nooption option] [-o, --option option] [-Q, --require option] [-r, --request address] [-S, --static value] [-s, --inform address[/cidr[/broadcast_address]]] [--inform6] [-t, --timeout seconds] [-u, --userclass class] [-v, --vendor code, value] [-W, --whitelist address[/cidr]] [-w] [--waitip=[4 | 6]] [-y, --reboot seconds] [-X, --blacklist address[/cidr]] [-Z, --denyinterfaces pattern] [-z, --allowinterfaces pattern] [--inactive] [--configure] [--noconfigure] [interface] [...] dhcpcd -n, --rebind [interface] dhcpcd -k, --release [interface] dhcpcd -U, --dumplease [interface] dhcpcd --version dhcpcd -x, --exit [interface]

dhcpcd یک پیاده‌سازی از کلاینت DHCP مشخص‌شده در RFC 2131 است. dhcpcd اطلاعات میزبان (آدرس IP، مسیرها و غیره) را از یک سرور DHCP دریافت کرده و interface شبکه دستگاهی را که روی آن در حال اجرا است پیکربندی می‌کند. سپس dhcpcd اسکریپت پیکربندی را اجرا می‌کند که اطلاعات DNS را در صورت در دسترس بودن در resolvconf(8) و در غیر این صورت مستقیماً در /etc/resolv.conf می‌نویسد. اگر نام میزبان در حال حاضر خالی، (null) یا localhost باشد، یا مقدار force_hostname برابر با YES یا TRUE یا 1 باشد، آن‌گاه dhcpcd نام میزبان را روی نام ارائه‌شده توسط سرور DHCP تنظیم می‌کند. سپس dhcpcd به عنوان دیمن در پس‌زمینه قرار می‌گیرد و منتظر سپری شدن زمان تمدید اجاره می‌ماند. هنگامی که زمان اجاره رو به پایان است یا سرور DHCP پیامی برای تمدید زودهنگام ارسال می‌کند، در صورت تغییر اجاره جدید، تلاش خواهد کرد تا اجاره خود را تمدید کرده و مجدداً پیکربندی کند.

اگر هر رابطی سیگنال حامل (carrier) فعال گزارش دهد، dhcpcd تلاش می‌کند تا پیش از رفتن به پس‌زمینه یک اجاره به دست آورد، در غیر این صورت بلافاصله به پس‌زمینه منتقل می‌شود. این رفتار را می‌توان با گزینه‌های -b, --background و -w, --waitip تغییر داد.

dhcpcd همچنین یک پیاده‌سازی از کلاینت BOOTP مشخص‌شده در RFC 951 است.

dhcpcd همچنین یک پیاده‌سازی از درخواست‌کننده مسیریاب IPv6 (Router Solicitor) مشخص‌شده در RFC 4861 و RFC 6106 است.

dhcpcd همچنین یک پیاده‌سازی از افزونه‌های حریم خصوصی IPv6 برای AutoConf مشخص‌شده در RFC 4941 است. این ویژگی باید در هسته فعال شود تا dhcpcd شروع به استفاده از آن کند.

dhcpcd همچنین یک پیاده‌سازی از کلاینت DHCPv6 مشخص‌شده در RFC 3315 است. به‌طور پیش‌فرض، dhcpcd فقط زمانی DHCPv6 را آغاز می‌کند که توسط یک اعلان مسیریاب IPv6 دستور داده شده باشد. اگر هیچ «انجمن هویت» (Identity Association) پیکربندی نشده باشد، یک «آدرس غیرموقت» (Non-temporary Address) درخواست می‌شود.

اگر dhcpcd نتواند اجاره‌ای به دست آورد، برای یک آدرس معتبر IPv4LL (معروف به ZeroConf یا APIPA) پویش (probe) انجام می‌دهد. پس از دریافت آن، فرایند جستجو برای سرور DHCP را مجدداً آغاز می‌کند تا یک آدرس مناسب به دست آورد.

هنگام استفاده از IPv4LL، dhcpcd تقریباً همیشه با موفقیت عمل کرده و کد خروج 0 را برمی‌گرداند. در موارد نادری که با شکست مواجه می‌شود، معمولاً به این معنی است که یک پروکسی معکوس ARP نصب شده که همیشه پویش IPv4LL را خنثی می‌کند. برای غیرفعال کردن این رفتار، می‌توانید از گزینه -L, --noipv4ll استفاده کنید.

اگر فهرستی از رابط‌ها در خط فرمان داده شود، dhcpcd فقط با همان رابط‌ها کار می‌کند، در غیر این صورت dhcpcd رابط‌های اترنت موجود را که قابل پیکربندی باشند شناسایی می‌کند. هنگامی که dhcpcd در خط فرمان به یک رابط محدود نشده باشد، در حالت مدیر (Manager mode) اجرا می‌شود. پروژه dhcpcd-ui انتظار دارد dhcpcd به این صورت اجرا شود.

اگر یک رابط تکی مشخص شود، dhcpcd فقط برای همان رابط کار می‌کند و به عنوان یک نمونه مجزا از سایر فرایندهای dhcpcd اجرا می‌شود. گزینه -w, --waitip در این حالت برای حفظ سازگاری با نسخه‌های قدیمی‌تر فعال است. استفاده از یک رابط تکی (که اختیاری می‌تواند به یک پروتکل آدرس‌دهی نیز محدود شود)، بر گزینه‌های -k -، -N -، -n و -x نیز تأثیر می‌گذارد، به‌طوری که همان رابط و هر پروتکل آدرس‌دهی باید مشخص شوند، زیرا عدم تعیین رابط به معنای حالت مدیر خواهد بود که در اینجا چنین نیست. برای اجبار به شروع در حالت مدیر تنها با یک رابط، می‌توان از گزینه -M, --manager استفاده کرد.

اولویت رابط‌ها بر اساس سیگنال حامل (carrier)، اجاره DHCP / آدرس IPv4LL و سپس کمترین متریک (metric) تعیین می‌شود. برای سیستم‌هایی که از متریک مسیر پشتیبانی می‌کنند، هر مسیر با متریک برچسب‌گذاری می‌شود، در غیر این صورت dhcpcd مسیرها را طوری تغییر می‌دهد که از رابط با همان مسیر و کمترین متریک استفاده کنند. گزینه‌های زیر را برای کنترل این‌که کدام رابط‌ها را با استفاده از الگوها مجاز یا مسدود کنیم ببینید.

رابط‌های غیراترنتی و برخی رابط‌های اترنت مجازی مانند TAP و پل (bridge) به‌طور پیش‌فرض نادیده گرفته می‌شوند، همان‌طور که رابط FireWire نادیده گرفته می‌شود. برای کار با این دستگاه‌ها، یا باید در خط فرمان مشخص شوند، یا در --allowinterfaces فهرست شوند، یا دستورالعمل interface در /etc/dhcpcd.conf داشته باشند.

dhcpcd اسکریپت /usr/lib/dhcpcd/dhcpcd-run-hooks یا اسکریپت مشخص‌شده توسط گزینه -c, --script را اجرا می‌کند. این اسکریپت تمام اسکریپت‌های موجود در /usr/lib/dhcpcd/dhcpcd-hooks را به ترتیب لغوی (lexical order) اجرا می‌کند. نصب پیش‌فرض اسکریپت‌های 01-test ، 20-resolv.conf و 30-hostname را فراهم می‌کند. می‌توانید با استفاده از گزینه -C, --nohook هر اسکریپت را غیرفعال کنید. برای جزئیات در مورد نحوه کار این اسکریپت‌ها، dhcpcd-run-hooks(8) را ببینید. dhcpcd در حال حاضر کد خروج اسکریپت را نادیده می‌گیرد.

اسکریپت‌های بیشتری در /usr/share/dhcpcd/hooks ارائه شده است و در صورت تمایل به استفاده از آن‌ها باید به /usr/lib/dhcpcd/dhcpcd-hooks کپی شوند. به عنوان مثال، می‌توانید 29-lookup-hostname را نصب کنید تا در صورتی که هیچ نام میزبانی توسط اجاره داده نشده و قبلاً نامی تنظیم نشده باشد، dhcpcd بتواند نام میزبان مربوط به آدرس IP را از طریق DNS جستجو کند.

می‌توانید رفتار dhcpcd را با گزینه‌های زیر تنظیم دقیق کنید:

, --background
رفتن فوری به پس‌زمینه. این گزینه برای اسکریپت‌های راه‌اندازی که پیام‌های وضعیت اتصال فیزیکی (carrier) را غیرفعال نمی‌کنند مفید است.
, --script script
استفاده از این script به جای اسکریپت پیش‌فرض /usr/lib/dhcpcd/dhcpcd-run-hooks.
, --duid [ll | lt | uuid | value]
استفاده از یک شناسه منحصر‌به‌فرد DHCP (موسوم به DUID). اگر ذخیره‌سازی ماندگار در دسترس باشد، یک DUID-LLT (آدرس محلی پیوند + زمان) تولید می‌شود، در غیر این صورت DUID-LL (آدرس محلی پیوند) ایجاد می‌گردد. در صورتی که فایل /var/lib/dhcpcd/duid وجود نداشته باشد، می‌توان نوع DUID را به عنوان یک پارامتر اختیاری پیشنهاد داد. اگر مقدار ll ، lt یا uuid نباشد، آن‌گاه value از قالب 00:11:22:33 تبدیل خواهد شد. این مقدار به همراه IAID به عنوان -I, --clientid استفاده خواهد شد. شناسه DUID تولیدشده در فایل /var/lib/dhcpcd/duid نگهداری می‌شود و نباید در میزبان‌های دیگر کپی شود. این فایل همچنین بر قواعد فوق تقدم دارد مگر زمانی که مقداری به‌طور مستقیم تنظیم شود.
, --debug
نمایش پیام‌های اشکال‌زدایی در stderr و syslog.
, --lastlease
اگر dhcpcd نتواند اجاره‌ای دریافت کند، تلاش می‌کند از آخرین اجاره کسب‌شده برای رابط استفاده کند.
مشابه گزینه فوق، اما اجاره حتی در صورت انقضا حفظ خواهد شد. اگر میزبان دیگری از طریق ARP ادعای مالکیت آن را کند، dhcpcd آن را واگذار خواهد کرد. این امر با بخش 3.7 استاندارد RFC 2131 که بیان می‌کند اجاره پس از انقضا باید رها شود مغایرت دارد.
, --env value
ارسال value به محیط جهت استفاده در dhcpcd-run-hooks(8). به عنوان مثال، می‌توانید قلاب نام میزبان را مجبور کنید که همیشه نام میزبان را با -e force_hostname=YES تنظیم کند.
, --reconfigure
dhcpcd مجدداً آدرس IP و مسیریابی را اعمال کرده و dhcpcd-run-hooks(8) را برای هر رابط اجرا می‌کند. این مورد زمانی مفید است که یک برنامه شخص ثالث مانند PPP یا VPN جدول مسیریابی و/یا DNS و غیره را تغییر داده و سپس به dhcpcd دستور دهد که بعد از آن وضعیت را به حالت قبل بازگرداند. در این حالت dhcpcd پیکربندی جدید را بازخوانی نمی‌کند - اگر به این قابلیت نیاز دارید باید از rebind استفاده کنید.
, --fqdn fqdn
درخواست از سرور DHCP برای به‌روزرسانی DNS با استفاده از FQDN به جای یک نام میزبان ساده. مقادیر معتبر برای fqdn عبارتند از disable، none، ptr و both. خود dhcpcd هرگز به‌روزرسانی DNS انجام نمی‌دهد. dhcpcd نام میزبان FQDN را همان‌طور که در RFC 1035 مشخص شده کدگذاری می‌کند.
, --config file
مشخص کردن یک فایل پیکربندی برای بارگذاری به جای /etc/dhcpcd.conf. dhcpcd همیشه فایل پیکربندی را قبل از هرگونه گزینه خط فرمان پردازش می‌کند.
, --hostname hostname
ارسال hostname به سرور DHCP تا بتواند در DNS ثبت شود. اگر hostname یک رشته خالی باشد، نام میزبان فعلی سیستم ارسال می‌شود. اگر hostname یک FQDN باشد (یعنی حاوی یک نقطه . باشد)، به همین صورت کدگذاری خواهد شد.
, --clientid clientid
ارسال clientid. اگر رشته به قالب 01:02:03 باشد، به صورت هگزادسیمال کدگذاری می‌شود. برای رابط‌هایی که آدرس سخت‌افزاری آن‌ها طولانی‌تر از ۸ بایت است، یا اگر clientid یک رشته خالی باشد، dhcpcd یک clientid پیش‌فرض متشکل از خانواده سخت‌افزار و آدرس سخت‌افزاری ارسال می‌کند.
, --vendorclassid vendorclassid
بازنویسی فیلد ارسالی vendorclassid مربوط به DHCPv4. مقدار پیش‌فرض dhcpcd-<version>:<os>:<machine>:<platform> است؛ برای مثال:
dhcpcd-5.5.6:NetBSD-6.99.5:i386:i386
در صورت تنظیم نشدن، هیچ مقداری ارسال نمی‌شود. برخی سرورهای DHCP با پیکربندی نامناسب، vendorclassidهای ناشناخته را رد می‌کنند. برای دور زدن این مشکل، می‌توانید با استفاده از vendorclassid مربوط به MSFT خود را به عنوان ویندوز جا بزنید.
, --logfile logfile
نوشتن در logfile مشخص‌شده. dhcpcd همچنان در syslog(3) نیز می‌نویسد. هنگامی که dhcpcd سیگنال SIGUSR2 را دریافت کند، logfile مجدداً باز می‌شود.
, --release [interface]
باعث می‌شود که فرایند موجود dhcpcd در حال اجرا روی interface اجاره خود را آزاد کرده و interface را بدون توجه به گزینه -p, --persistent لغو پیکربندی کند. اگر هیچ interface مشخص نشده باشد، این دستور برای تمام رابط‌ها در حالت مدیر اعمال می‌شود. اگر هیچ رابط فعالی باقی نماند، dhcpcd خارج خواهد شد.
, --leasetime seconds
درخواست زمان اجاره به میزان seconds ثانیه. مقدار -1 نشان‌دهنده زمان اجاره نامحدود است. به‌طور پیش‌فرض dhcpcd هیچ زمان اجاره‌ای درخواست نمی‌کند و آن را به سرور DHCP واگذار می‌نماید.
, --manager
اجرای dhcpcd در حالت مدیر حتی اگر تنها یک رابط در خط فرمان مشخص شده باشد. بخش «چندین رابط» در بالا را ببینید.
, --metric metric
متریک‌ها برای ترجیح دادن یک رابط بر رابط دیگر استفاده می‌شوند؛ کمترین مقدار برنده است. dhcpcd یک متریک پیش‌فرض معادل 1000 + if_nametoindex(3) ارائه می‌دهد. این مقدار برای رابط‌های بی‌سیم ۲۰۰۰ واحد افزایش می‌یابد، به همراه افزایش‌های اضافی ۱۰۰۰۰۰۰ برای IPv4LL و ۲۰۰۰۰۰۰ برای رابط‌های رومینگ (roaming).
, --rebind [interface]
به dhcpcd اطلاع می‌دهد که پیکربندی خود را مجدداً بارگذاری کرده و interface مشخص‌شده را دوباره متصل (rebind) کند. اگر هیچ interface مشخص نشود، برای تمام رابط‌ها در حالت مدیر اعمال می‌شود. اگر dhcpcd در حال اجرا نباشد، به صورت عادی راه‌اندازی می‌شود.
, --renew [interface]
به dhcpcd اطلاع می‌دهد که آدرس‌های موجود روی interface مشخص‌شده را تمدید (renew) کند. اگر هیچ interface مشخص نشود، برای تمام رابط‌ها در حالت مدیر اعمال می‌شود. اگر dhcpcd در حال اجرا نباشد، به صورت عادی راه‌اندازی می‌شود. برخلاف گزینه -n, --rebind در بالا، پیکربندی dhcpcd مجدداً بارگذاری نمی‌شود.
, --option option
درخواست متغیر option مربوط به DHCP جهت استفاده در /usr/lib/dhcpcd/dhcpcd-run-hooks.
, --persistent
dhcpcd هنگام خروج، interface را از حالت پیکربندی خارج می‌کند، مگر اینکه این گزینه فعال باشد. گاهی اوقات این رفتار مطلوب نیست؛ برای مثال هنگامی که دایرکتوری ریشه از طریق NFS سوار شده است یا کلاینت‌های SSH به این میزبان متصل هستند و لازم است پیش از خاموش شدن میزبان مطلع شوند. می‌توانید از این گزینه برای جلوگیری از وقوع این وضعیت استفاده کنید.
, --request address
درخواست address در پیام DHCP DISCOVER. هیچ تضمینی وجود ندارد که این آدرس همان آدرسی باشد که سرور DHCP در واقع اختصاص می‌دهد. اگر هیچ address داده نشود، از اولین آدرسی که در حال حاضر به interface اختصاص یافته است استفاده می‌شود.
, --inform address[/cidr[/broadcast_address]]
مانند -r, --request در بالا عمل می‌کند، اما به جای DISCOVER/REQUEST یک پیام DHCP INFORM ارسال می‌نماید. این دستور اجاره دریافت نمی‌کند، بلکه فقط سرور DHCP را از address در حال استفاده مطلع می‌سازد. همچنین باید شماره شبکه اختیاری cidr را نیز در صورتی که آدرس از قبل روی رابط پیکربندی نشده است، درج کنید. dhcpcd در حال اجرا باقی می‌ماند و وانمود می‌کند که اجاره‌ای نامحدود دارد. dhcpcd هنگام خروج، رابط را از حالت پیکربندی خارج نخواهد کرد. اگر dhcpcd نتواند با یک سرور DHCP تماس برقرار کند، به جای بازگشت به IPv4LL، یک خطا برمی‌گرداند.
یک «درخواست اطلاعات» (Information Request) در DHCPv6 انجام می‌دهد. هیچ آدرسی درخواست یا مشخص نمی‌شود، اما تمام گزینه‌های دیگر DHCPv6 مجاز هستند. این عملیات معمولاً زمانی به‌طور خودکار انجام می‌شود که اعلان مسیریاب IPv6 اعلام کند کلاینت باید این عملیات را انجام دهد. این گزینه تنها زمانی لازم است که dhcpcd پیام‌های IPv6RA را پردازش نمی‌کند و نیاز به درخواست اطلاعات DHCPv6 وجود دارد.
, --static value
یک value ایستا برای DHCP پیکربندی می‌کند. اگر ip_address را تنظیم کنید، dhcpcd تلاشی برای دریافت اجاره نخواهد کرد و فقط از مقدار مربوطه برای آدرس با زمان اجاره نامحدود استفاده می‌کند.

در اینجا مثالی آورده شده است که یک آدرس ایستا، مسیرها و DNS را پیکربندی می‌کند:

dhcpcd -S ip_address=192.168.0.10/24 \
-S routers=192.168.0.1 \
-S domain_name_servers=192.168.0.1 \
eth0

در حال حاضر نمی‌توانید مقادیر ایستای DHCPv6 را تنظیم کنید. به جای آن از گزینه -e, --env استفاده نمایید.

, --timeout seconds
پایان مهلت زمانی پس از seconds ثانیه، به جای مقدار پیش‌فرض ۳۰ ثانیه. در صورت پایان مهلت زمانی، اگر گزینه -1 -، --oneshot داده شده باشد، dhcpcd خارج خواهد شد، در غیر این صورت به پس‌زمینه منتقل شده و به تلاش خود ادامه می‌دهد. تنظیم مقدار 0 seconds باعث می‌شود که dhcpcd برای دریافت اجاره به مدت نامحدود منتظر بماند.
, --userclass class
پیام DHCPv4 را با کلاس کاربر class برچسب‌گذاری می‌کند. سرورهای DHCP از این ویژگی برای ارائه گزینه‌های DHCP غیر از پیش‌فرض به اعضای این کلاس استفاده می‌کنند، بدون اینکه نیازی به دانستن مواردی مانند آدرس سخت‌افزاری یا نام میزبان داشته باشند.
, --vendor code,value
افزودن یک گزینه اختصاصی سازنده (vendor option) کپسوله‌شده. code باید بین ۱ تا ۲۵۴ باشد. برای افزودن یک رشته خام سازنده، code را حذف کنید اما کاما را نگه دارید. مثال‌ها:

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

dhcpcd -v 01,192.168.0.2 eth0
تنظیم گزینه سازنده 02 با یک کد هگزادسیمال:
dhcpcd -v 02,01:02:03:04:05 eth0
تنظیم گزینه سازنده 03 با یک آدرس IP به صورت رشته:
dhcpcd -v 03,\"192.168.0.2\" eth0
تنظیم گزینه سازنده غیرکپسوله‌شده روی hello world:
dhcpcd -v ,"hello world" eth0
نمایش نسخه برنامه و اطلاعات حق نشر. سپس dhcpcd پیش از انجام هرگونه پیکربندی خارج می‌شود.
انتظار برای اختصاص آدرس پیش از رفتن به پس‌زمینه. برخلاف گزینه زیر آرگومانی نمی‌پذیرد.
=[4 | 6]
انتظار برای اختصاص آدرس پیش از رفتن به پس‌زمینه. 4 به معنای انتظار برای تخصیص آدرس IPv4 است. 6 به معنای انتظار برای تخصیص آدرس IPv6 است. اگر آرگومانی داده نشود، dhcpcd منتظر اختصاص هر پروتکل آدرسی خواهد ماند. امکان انتظار برای بیش از یک پروتکل آدرس وجود دارد و dhcpcd تنها زمانی به پس‌زمینه می‌رود که تمام شرایط انتظار برآورده شده باشند.
, --exit [interface]
به یک فرایند موجود dhcpcd در حال اجرا روی interface سیگنال خروج ارسال می‌کند. اگر هیچ interface مشخص نشده باشد، مورد فوق برای تمام رابط‌ها در حالت مدیر اعمال می‌شود. گزینه -p, --persistent را برای کنترل ماندگاری پیکربندی در هنگام خروج بررسی کنید که به‌طور پیش‌فرض در dhcpcd.conf(5) فعال است. سپس dhcpcd تا زمانی که این فرایند خارج شود منتظر می‌ماند.
, --reboot seconds
اختصاص reboot ثانیه پیش از رفتن به مرحله discover در صورتی که یک اجاره قدیمی برای استفاده داشته باشیم. اختصاص reboot ثانیه پیش از شروع حالت‌های بازگشت به پشتیبان (fallback) از مرحله discover. پروتکل IPv4LL زمانی شروع می‌شود که اولین مهلت زمانی reboot فرا برسد. مقدار پیش‌فرض ۵ ثانیه است. تنظیم 0 ثانیه باعث می‌شود dhcpcd از مرحله reboot صرف‌نظر کرده و مستقیماً وارد مرحله discover شود. این گزینه هیچ تأثیری بر DHCPv6 به جز صرف‌نظر کردن از مرحله reboot ندارد.

dhcpcd به‌طور پیش‌فرض تلاش می‌کند تا حد امکان اقدامات لازم را انجام دهد. با این حال، گاهی شرایطی پیش می‌آید که مایل نیستید موارد دقیقاً مطابق خواست سرور DHCP پیکربندی شوند. در ادامه گزینه‌هایی برای غیرفعال کردن این بخش‌ها آورده شده است.

توجه داشته باشید که وقتی dhcpcd به یک رابط تکی محدود می‌شود، هنگام درخواست خروج از dhcpcd از طریق خط فرمان نیز باید همان رابط مشخص شود. اگر پروتکل نیز محدود شده باشد، باید پروتکل را نیز در دستور خروج درج کرد.

, --oneshot
خروج پس از پیکربندی رابط. از گزینه -w, --waitip برای تعیین پروتکل(هایی) که باید قبل از خروج پیکربندی شوند استفاده کنید.
, --ipv4only
فقط پیکربندی IPv4.
, --ipv6only
فقط پیکربندی IPv6.
, --noarp
عدم درخواست یا ادعای آدرس از طریق ARP. این مورد همچنین IPv4LL را غیرفعال می‌کند.
, --nobackground
عدم اجرا در پس‌زمینه پس از به دست آوردن اجاره. این گزینه عمدتاً برای اجرا تحت کنترل یک فرایند دیگر مانند یک اشکال‌زدا (debugger) یا یک مدیر شبکه (network manager) مفید است.
, --nohook script
عدم اجرای این اسکریپت قلاب. با نام کامل یا نامی که با ۲ رقم پیشوند دارد و به دلخواه به .sh ختم می‌شود تطبیق داده می‌شود.

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

dhcpcd -C resolv.conf eth0
, --nogateway
عدم تنظیم هیچ‌گونه مسیر پیش‌فرض (default routes).
, --xidhwaddr
استفاده از چهار بایت آخر آدرس سخت‌افزاری به عنوان DHCP xid به جای یک عدد تصادفی تولیدشده.
, --broadcast
دستور به سرور DHCP برای ارسال پاسخ‌ها به صورت پخش همگانی (broadcast) به کلاینت. معمولاً این گزینه فقط برای رابط‌های غیراترنتی مانند FireWire و InfiniBand تنظیم می‌شود. در بیشتر موارد، dhcpcd این گزینه را به‌طور خودکار تنظیم خواهد کرد.
, --nolink
عدم دریافت پیام‌های پیوند برای وضعیت حامل (carrier status). تنها در صورت مواجهه با درایورهای سخت‌افزاری دارای اشکال یا هنگام اجرای dhcpcd از طریق یک مدیر شبکه باید از این گزینه استفاده کنید.
, --noipv4ll
عدم استفاده از IPv4LL (معروف به APIPA، Bonjour یا ZeroConf).
, --nooption option
حذف option از پیام DHCP پیش از پردازش.
, --printpidfile
چاپ pidfile مورد استفاده توسط dhcpcd بر اساس آرگومان‌های خط فرمان در خروجی استاندارد.
, --require option
الزام به وجود option در تمام پیام‌های DHCP؛ در غیر این صورت پیام نادیده گرفته می‌شود. برای الزام dhcpcd به پاسخ‌دهی تنها به سرورهای DHCP و نه سرورهای BOOTP، می‌توانید از -Q dhcp_message_type استفاده کنید.
, --quiet
حالت بی‌صدا برای dhcpcd در خط فرمان؛ فقط هشدارها و خطاها نمایش داده می‌شوند. اگر این گزینه مجدداً استفاده شود، تمام خروجی‌های کنسول غیرفعال می‌شوند. این پیام‌ها همچنان از طریق syslog(3) ثبت می‌گردند.
, --test
پس از دریافت پیام‌های DHCP فقط فراخوانی /usr/lib/dhcpcd/dhcpcd-run-hooks با دلیل TEST، که متغیرهای DHCP یافت‌شده در پیام را در کنسول نمایش می‌دهد. پیکربندی رابط و هیچ‌یک از فایل‌های پیکربندی دستکاری نمی‌شوند. گزینه rapid_commit در حالت TEST ارسال نمی‌شود تا سرور آدرسی را اجاره ندهد. برای آزمایش INFORM، رابط باید قبل از شروع dhcpcd با آدرس مورد نظر پیکربندی شده باشد.
, --dumplease [interface]
تخلیه (dump) اجاره فعلی برای interface در خروجی استاندارد. اگر هیچ interface مشخص نشده باشد، اجاره تمام رابط‌ها تخلیه می‌شود. از پرچم‌های -4 یا -6 برای تعیین خانواده آدرس استفاده کنید. اگر یک اجاره از طریق ورودی استاندارد منتقل (pipe) شود، از رابط ویژه با نام - برای تخلیه آن استفاده کنید. در این حالت، تعیین خانواده آدرس اجباری است.
, --variables
نمایش فهرستی از کدهای گزینه، متغیرهای مرتبط و کدگذاری مربوطه جهت استفاده در dhcpcd-run-hooks(8). متغیرها با new_ و old_ پیشوند می‌گیرند مگر اینکه شماره گزینه - باشد. متغیرهای بدون گزینه بخشی از پیام DHCP هستند و نمی‌توان آن‌ها را مستقیماً درخواست کرد.
, --whitelist address[/cidr]
فقط پذیرش بسته‌ها از address[/cidr]. در صورت تنظیم -W, --whitelist -، گزینه -X, --blacklist نادیده گرفته می‌شود.
, --blacklist address[/cidr]
نادیده گرفتن تمام بسته‌ها از address[/cidr].
, --denyinterfaces pattern
هنگام شناسایی رابط‌ها، نام رابط نباید با pattern تطبیق داشته باشد؛ این پارامتر فهرستی از الگوهای جداشده با فاصله یا کاما است که به fnmatch(3) ارسال می‌شود.
, --allowinterfaces pattern
هنگام شناسایی رابط‌ها، نام رابط باید با pattern تطبیق داشته باشد؛ این پارامتر فهرستی از الگوهای جداشده با فاصله یا کاما است که به fnmatch(3) ارسال می‌شود. اگر رابطی در -Z, --denyinterfaces نیز مطابقت داشته باشد، همچنان مسدود خواهد شد.
عدم راه‌اندازی رابط‌هایی غیر از موارد مشخص‌شده در خط فرمان. این قابلیت به dhcpcd امکان می‌دهد در حالت مدیر شروع شود و سپس منتظر دستورات بعدی dhcpcd بماند تا هر رابط را در صورت نیاز راه‌اندازی کند.
اجازه به dhcpcd برای پیکربندی سیستم. این رفتار پیش‌فرض است و مقدار if_configured=true را تنظیم می‌کند.
dhcpcd به‌هیچ‌وجه سیستم را پیکربندی نخواهد کرد. این گزینه فقط زمانی مفید است که --script که توسط dhcpcd در هر رویداد شبکه فراخوانی می‌شود، در عوض سیستم را پیکربندی کند. این حالت با حالت -T, --test متفاوت است زیرا یک‌باره (one-shot) نیست و تنها تغییر در محیط، اضافه شدن if_configured=false است.
عدم بارگذاری هیچ‌یک از ماژول‌های مدیریت /dev.

برخی رابط‌ها نیاز به پیکربندی توسط برنامه‌های شخص ثالث مانند PPP یا VPN دارند. هنگامی که پیکربندی یک رابط در dhcpcd به عنوان STATIC یا INFORM بدون آدرس علامت‌گذاری شده باشد، dhcpcd رابط را تا زمانی که آدرسی به آن افزوده یا از آن حذف شود تحت نظر می‌گیرد و مطابق آن عمل می‌کند. برای رابط‌های نقطه به نقطه (مانند PPP)، یک مسیر پیش‌فرض به مقصد آن به‌طور خودکار به پیکربندی اضافه می‌شود. اگر رابط نقطه به نقطه برای INFORM پیکربندی شده باشد، dhcpcd پیام INFORM را به صورت تک‌پخشی (unicast) به مقصد ارسال می‌کند، در غیر این صورت به حالت پیش‌فرض STATIC درمی‌آید.

dhcpcd برای تمام پیکربندی‌های IPv4 نیازمند دستگاه فیلتر بسته برکلی (BPF) در سیستم‌های مبتنی بر BSD و دستگاه فیلتر سوکت لینوکس (LPF) در سیستم‌های مبتنی بر لینوکس است.

اگر dhcpcd را از طریق خط فرمان به یک رابط تکی و به دلخواه یک خانواده آدرس محدود کنید، تمام فراخوانی‌های بعدی به dhcpcd جهت اتصال مجدد (rebind)، پیکربندی مجدد یا خروج باید همان پرچم‌های محدودکننده را داشته باشند تا dhcpcd بداند به کدام فرایند سیگنال ارسال کند.

برخی سرورهای DHCP فیلتر کردن ClientID را پیاده‌سازی می‌کنند. اگر dhcpcd جایگزین یک کلاینت DHCP در حال استفاده می‌شود، ممکن است لازم باشد گزینه clientid ارسالی توسط dhcpcd را برای مطابقت تنظیم کنید. در صورت استفاده از DUID به جای ClientID، فایل /var/lib/dhcpcd/duid را بر همین اساس ویرایش نمایید.

/etc/dhcpcd.conf
فایل پیکربندی برای dhcpcd. اگر همیشه از گزینه‌های یکسانی استفاده می‌کنید، آن‌ها را در اینجا قرار دهید.
/usr/lib/dhcpcd/dhcpcd-run-hooks
اسکریپت پوسته Bourne که برای پیکربندی یا لغو پیکربندی یک رابط اجرا می‌شود.
/usr/lib/dhcpcd/dev
ماژول‌های مدیریت /dev در لینوکس.
/usr/lib/dhcpcd/dhcpcd-hooks
دایرکتوری حاوی اسکریپت‌های پوسته Bourne که توسط اسکریپت فوق اجرا می‌شوند. هر اسکریپت را می‌توان با استفاده از گزینه -C, --nohook توضیح داده شده در بالا غیرفعال کرد.
/var/lib/dhcpcd/duid
فایل متنی که حاوی DUID مورد استفاده برای شناسایی میزبان است.
/var/lib/dhcpcd/secret
فایل متنی که حاوی یک کلید مخفی است که تنها برای میزبان شناخته شده است.
/var/lib/dhcpcd/interface-ssid.lease
پیام واقعی DHCP که توسط سرور ارسال شده است. ما از این فایل هنگام خواندن آخرین اجاره استفاده می‌کنیم و mtime فایل را به عنوان زمان صدور آن در نظر می‌گیریم.
/var/lib/dhcpcd/interface-ssid.lease6
پیام واقعی DHCPv6 که توسط سرور ارسال شده است. ما از این فایل هنگام خواندن آخرین اجاره استفاده می‌کنیم و mtime فایل را به عنوان زمان صدور آن در نظر می‌گیریم.
/var/lib/dhcpcd/rdm_monotonic
شمارنده یکنواخت (monotonic counter) مورد استفاده در فیلد replay در گزینه‌های احراز هویت را ذخیره می‌کند.
/run/dhcpcd/pid
شناسه فرایند (PID) مربوط به dhcpcd در حال اجرا روی تمام رابط‌ها را ذخیره می‌کند.
/run/dhcpcd/interface.pid
شناسه فرایند (PID) مربوط به dhcpcd در حال اجرا روی interface را ذخیره می‌کند.
/run/dhcpcd/sock
سوکت کنترلی برای دیمن مدیر (manager daemon).
/run/dhcpcd/interface.sock
سوکت کنترلی برای دیمن اختصاصی هر رابط.

fnmatch(3), if_nametoindex(3), dhcpcd.conf(5), resolv.conf(5), dhcpcd-run-hooks(8), resolvconf(8)

RFC 951, RFC 1534, RFC 2104, RFC 2131, RFC 2132, RFC 2563, RFC 2855, RFC 3004, RFC 3118, RFC 3203, RFC 3315, RFC 3361, RFC 3633, RFC 3396, RFC 3397, RFC 3442, RFC 3495, RFC 3925, RFC 3927, RFC 4039, RFC 4075, RFC 4242, RFC 4361, RFC 4390, RFC 4702, RFC 4074, RFC 4861, RFC 4833, RFC 4941, RFC 5227, RFC 5942, RFC 5969, RFC 6106, RFC 6334, RFC 6355, RFC 6603, RFC 6704, RFC 7217, RFC 7550, RFC 7844.

Roy Marples <roy@marples.name>

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

July 5, 2026 Linux 6.12.107+deb13-amd64