</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

DHCP در Gentoo — پیکربندی dhcpcd و دریافت خودکار IP

آموزش کامل DHCP در Gentoo: نصب dhcpcd، پیکربندی /etc/dhcpcd.conf، فعال‌سازی سرویس، گزینه‌های پیشرفته و DHCP با NetworkManager و systemd-networkd.

مقدماتی۶ دقیقه مطالعهآخرین بروزرسانی: ۱ تیر ۱۴۰۵ویرایش در گیت‌هاب

DHCP (Dynamic Host Configuration Protocol) پروتکلی است که به‌طور خودکار آدرس IP، default gateway و سرور DNS را به دستگاه شما اختصاص می‌دهد. در اکثر شبکه‌های خانگی و شرکتی، DHCP توسط روتر فراهم می‌شود و کاربر نیازی به تنظیم دستی آدرس ندارد. در Gentoo، کلاینت پیش‌فرض و سبک DHCP بستهٔ net-misc/dhcpcd است که هم به‌صورت مستقل و هم به‌عنوان بخشی از netifrc کار می‌کند.

DHCP چیست؟#

هنگامی که کارت شبکهٔ شما روشن می‌شود، هنوز آدرس IP ندارد. کلاینت DHCP یک درخواست broadcast به نشانی 255.255.255.255 می‌فرستد و می‌پرسد «آیا سرور DHCP هست؟». سرور DHCP (معمولاً روتر) با پیشنهاد یک آدرس IP به‌همراه مدت اجاره (lease time)، gateway و DNS پاسخ می‌دهد. کلاینت تأیید می‌کند و آدرس را روی رابط اعمال می‌کند.

عنصرتوضیح
Leaseمدت زمان اجاره IP (معمولاً ۲۴ ساعت)
Renewalتمدید اجاره پیش از انقضا (معمولاً ۵۰٪ lease)
DORAمراحل Discover, Offer, Request, Acknowledge
Client IDشناسه کلاینت برای تشخیض توسط سرور

نصب dhcpcd#

# نصب بسته
emerge --ask net-misc/dhcpcd
# خروجی:
# [ebuild  N    ] net-misc/dhcpcd-10.0.8  USE="... "
# Would you like to merge these packages? [Yes/No]: y

پس از نصب، فایل پیکربندی پیش‌فرض در /etc/dhcpcd.conf قرار دارد. این فایل کامنت‌گذاری شده و برای کاربرد معمولی نیازی به ویرایش ندارد.

فعال‌سازی سرویس#

دو راه برای استفاده از dhcpcd وجود دارد: مستقل یا از طریق netifrc.

روش ۱: dhcpcd مستقل (ساده‌ترین)#

این روش همهٔ رابط‌های شبکه را به‌صورت خودکار مدیریت می‌کند:

# افزودن به runlevel پیش‌فرض
rc-update add dhcpcd default
# خروجی:
#  * service dhcpcd added to runlevel default
 
# شروع سرویس
rc-service dhcpcd start
# خروجی:
#  * Starting dhcpcd ...
#  * dhcpcd on pid 1234
 
# بررسی دریافت IP
ip addr show enp3s0
# خروجی:
#     inet 192.168.1.20/24 brd 192.168.1.255 scope global enp3s0

روش ۲: dhcpcd از طریق netifrc#

اگر از netifrc استفاده می‌کنید، در /etc/conf.d/net بنویسید config_enp3s0="dhcp":

# پیکربندی
nano /etc/conf.d/net
# config_enp3s0="dhcp"
 
# ساخت سرویس رابط
ln -s /etc/init.d/net.lo /etc/init.d/net.enp3s0
rc-update add net.enp3s0 default
rc-service net.enp3s0 start

تفاوت دو روش

در روش مستقل، خود dhcpcd همهٔ رابط‌ها را مدیریت می‌کند. در روش netifrc، سرویس net.enp3s0 با خواندن config_enp3s0="dhcp" درخواست می‌کند که dhcpcd برای این رابط اجرا شود. روش دوم به ازای هر رابط کنترل دقیق‌تری در اختیار شما می‌گذارد.

گزینه‌های پیشرفته در dhcpcd.conf#

فایل /etc/dhcpcd.conf امکان تنظیم رفتار DHCP را فراهم می‌کند. چند نمونهٔ پرکاربرد:

# /etc/dhcpcd.conf
 
# تعیین رابط خاص (پیش‌فرض همه)
interface enp3s0
 
# درخواست hostname از سرور DHCP
hostname
 
# ارسال client_id مشخص (برخی سرورها نیاز دارند)
clientid "gentoo-server-01"
 
# مدت زمان درخواست اجاره (ثانیه)
leasetime 3600
 
# تایم‌اوت درخواست اولیه
timeout 30
 
# تلاش مجدد نامحدود برای دریافت IP
reboot 5
waitip 4
 
# نپذیرفتن به‌روزرسانی /etc/resolv.conf (اگر resolver محلی دارید)
nohook resolv.conf
 
# نپذیرفتن به‌روزرسانی /etc/ntp.conf
nohook ntp.conf
 
# تخصیص IP استاتیک هنگام عدم موفقیت DHCP (fallback)
fallback 192.168.1.50/24

به‌روزرسانی /etc/resolv.conf به‌صورت خودکار توسط hook resolv.conf انجام می‌شود. اگر می‌خواهید خودتان DNS را مدیریت کنید، nohook resolv.conf را اضافه کنید.

مشاهده هوک‌ها

فهرست هوک‌های فعال در /lib/dhcpcd/dhcpcd-hooks/ قرار دارد. با dhcpcd -d می‌توانید حالت debug را ببینید و بفهمید کدام hook اجرا می‌شود.

DHCP در NetworkManager#

اگر از NetworkManager استفاده می‌کنید، نیازی به dhcpcd مستقل نیست؛ NetworkManager کلاینت DHCP داخلی دارد (یا از dhcpcd استفاده می‌کند):

# بررسی پروفایل اتصال
nmcli connection show "Wired connection 1" | grep ipv4.method
# ipv4.method:                            auto
 
# اجبار به تمدید اجاره DHCP
nmcli connection up "Wired connection 1"

DHCP در systemd-networkd#

برای دریافت DHCP با systemd-networkd، فایل .network بسازید:

# /etc/systemd/network/20-wired.network
[Match]
Name=enp3s0
 
[Network]
DHCP=yes
 
[DHCPv4]
UseDNS=yes
UseNTP=yes
SendHostname=yes
systemctl restart systemd-networkd
networkctl status enp3s0
# خروجی:
#     State: routable (configured)

خطاهای رایج#

۱. dhcpcd IP نمی‌گیرد#

dhcpcd[1234]: enp3s0:Carrier lost
dhcpcd[1234]: enp3s0: waiting for carrier

دلیل: کابل شبکه وصل نیست، درایور کارت نصب نیست یا رابط down است. راه‌حل:

# بررسی وضعیت فیزیکی
ip link show enp3s0
# باید state UP و LOWER_UP را ببینید
 
# بالا آوردن دستی
ip link set enp3s0 up
 
# بررسی درایور
lspci -k | grep -i ether -A 3
# باید خط Kernel driver in use: را ببینید
 
# اجرای dhcpcd در حالت debug
dhcpcd -d enp3s0

۲. خطای noipv6ll یا duplicate address#

دلیل: تداخل IPv6 link-local یا دو دستگاه با همان MAC. راه‌حل: موقتاً IPv6 را غیرفعال کنید:

# /etc/dhcpcd.conf
noipv6

۳. DNS کار نمی‌کند اما IP گرفته‌اید#

ping -c 3 8.8.8.8     # کار می‌کند
ping -c 3 gentoo.org  # نامعتبر

دلیل: فایل /etc/resolv.conf به‌روز نشده یا توسط /etc/conf.d/net بازنویسی شده. راه‌حل:

# بررسی resolv.conf
cat /etc/resolv.conf
# باید شامل nameserver باشد
 
# اگر خالی است، دستی بنویسید
echo "nameserver 8.8.8.8" > /etc/resolv.conf
 
# یا اعمال مجدد hook
dhcpcd -n enp3s0

خلاصه و مرحله بعد#

DHCP ساده‌ترین راه برای دریافت آدرس شبکه است. در Gentoo، net-misc/dhcpcd کلاینت سبک و قابل‌اعتمادی است که هم می‌تواند مستقل اجرا شود و هم به‌عنوان بخشی از netifrc. برای اکثر کاربردها، نصب و افزودن به runlevel default کافی است.

اگر به IP ثابت نیاز دارید، آموزش Static IP را ببینید. برای آشنایی با کلیات مدیریت شبکه در Gentoo، آموزش Networking را مطالعه کنید.

اشتراک‌گذاری:

این صفحه در تاریخ ۱ تیر ۱۴۰۵ به‌روزرسانی شده است.