تنظیم شبکه در Gentoo — netifrc، NetworkManager و systemd-networkd
آموزش کامل مدیریت شبکه در Gentoo: آشنایی با netifrc، NetworkManager، systemd-networkd و dhcpcd، نامگذاری رابطها، پیکربندی hostname و راهاندازی سرویسها.
شبکه یکی از نخستین چیزهایی است که پس از نصب Gentoo باید پیکربندی شود؛ بدون آن، emerge --sync کار نمیکند و هیچ بستهای نصب نخواهد شد. Gentoo برخلاف بسیاری از توزیعها، مدیریت شبکه را به ابزارهای مختلفی واگذار میکند تا کاربر بسته به نیاز خود (دسکتاپ، سرور، سیستمهای Embedded) یکی را انتخاب کند. در این مستند با چهار گزینهٔ اصلی آشنا میشویم: netifrc، NetworkManager، systemd-networkd و dhcpcd مستقل.
نامگذاری رابطهای شبکه
پیش از پیکربندی، باید نام رابط شبکهٔ خود را بدانید. در گذشته همهٔ رابطهای اترنت eth0 نام داشتند، اما هستههای مدرن از predictable naming استفاده میکنند:
# مشاهده رابطهای شبکه
ip link show
# خروجی:
# 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
# 2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
# 3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN
# مشاهده آدرس IP اختصاصیافته
ip addr show enp3s0
# خروجی:
# 2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
# link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
# inet 192.168.1.20/24 brd 192.168.1.255 scope global enp3s0الگوی نامگذاری جدید:
| پیشوند | معنی | مثال |
|---|---|---|
en | Ethernet | enp3s0, eno1, ens33 |
wl | Wireless | wlp2s0, wlan0 |
ww | Wireless WAN | wwp0s20f0u2 |
pXsY | PCI bus Y در slot X | enp3s0 |
oN | رابط on-board شماره N | eno1 |
چرا نامها تغییر کردند؟
نامگذاری پیشبینیپذیر (predictable interface names) توسط udev/systemd معرفی شد تا رابطها در هر بوت نام یکسانی داشته باشند. در سیستمهای قدیمی، ترتیب بارگذاری درایورها میتوانست باعث شود eth0 و eth1 جابهجا شوند. نام جدید enp3s0 به موقعیت فیزیکی کارت روی PCI اشاره میکند و پایدار است.
مقایسه مدیریتکنندههای شبکه
Gentoo از چندین ابزار مدیریت شبکه پشتیبانی میکند. انتخاب بستگی به نوع سیستم شما دارد:
| مدیریتکننده | بسته Gentoo | مناسب برای | مکانیزم پیکربندی |
|---|---|---|---|
| netifrc | net-misc/netifrc | سرور، OpenRC | /etc/conf.d/net + init scripts |
| NetworkManager | net-misc/networkmanager | دسکتاپ، لپتاپ | nmcli, nmtui, GUI |
| systemd-networkd | (بخشی از systemd) | سرورهای systemd | /etc/systemd/network/*.network |
| dhcpcd مستقل | net-misc/dhcpcd | کاربردهای ساده | /etc/dhcpcd.conf |
انتخاب پیشنهادی
برای سرورهای OpenRC از netifrc، برای دسکتاپ از NetworkManager و برای سرورهای systemd از systemd-networkd استفاده کنید. اجرای همزمان چند مدیریتکننده باعث تداخل میشود.
netifrc — روش پیشفرض OpenRC
netifrc مجموعهای از اسکریپتهای init است که بهطور پیشفرض در پروفایل OpenRC Gentoo نصب میشود. پیکربندی آن در /etc/conf.d/net انجام میشود.
# نصب (معمولاً نصب شده است)
emerge --ask net-misc/netifrc
# ویرایش فایل پیکربندی
nano /etc/conf.d/netنمونه پیکربندی DHCP:
# /etc/conf.d/net
config_enp3s0="dhcp"نمونه پیکربندی IP استاتیک:
# /etc/conf.d/net
config_enp3s0="192.168.1.10/24"
routes_enp3s0="default via 192.168.1.1"
dns_servers_enp3s0="8.8.8.8 1.1.1.1"سپس باید اسکریپت init برای رابط بسازید و آن را به runlevel default اضافه کنید:
# ایجاد symlink به اسکریپت net.lo
ln -s /etc/init.d/net.lo /etc/init.d/net.enp3s0
# افزودن به runlevel پیشفرض
rc-update add net.enp3s0 default
# خروجی:
# * service net.enp3s0 added to runlevel default
# شروع سرویس
rc-service net.enp3s0 startnet.lo پایه است
/etc/init.d/net.lo اسکریپت پایه است که برای هر رابط یک symlink از net.<interface> به آن ساخته میشود. این اسکریپت فایل /etc/conf.d/net را میخواند و بر اساس متغیرهای config_<interface> شبکه را پیکربندی میکند.
NetworkManager
برای دسکتاپ و لپتاپ، NetworkManager گزینهای کاملتر است؛ با پشتیبانی از Wi-Fi، VPN، پروفایلهای متعدد و رابط گرافیکی.
# نصب NetworkManager
emerge --ask net-misc/networkmanager
# افزودن به runlevel (OpenRC)
rc-update add NetworkManager default
rc-service NetworkManager start
# در systemd
systemctl enable --now NetworkManagerپس از نصب، نباید سرویس net.eth0 یا dhcpcd فعال باشد، وگرنه تداخل پیش میآید. مدیریت از دو طریق CLI انجام میشود:
# ابزار متنی تعاملی
nmtui
# منوی گرافیکی برای انتخاب شبکه و ویرایش پروفایل
# ابزار خط فرمان
nmcli device status
# خروجی:
# DEVICE TYPE STATE CONNECTION
# enp3s0 ethernet connected Wired connection 1
# wlan0 wifi disconnected --
nmcli connection show
# NAME UUID TYPE DEVICE
# Wired connection 1 3a7b9c2d-... ethernet enp3s0
# اتصال به Wi-Fi
nmcli device wifi connect "MySSID" password "MyPassword"تداخل با netifrc
اگر NetworkManager را نصب کردهاید، سرویسهای net.enp3s0 و dhcpcd را غیرفعال کنید. در غیر این صورت، هر دو سعی میکنند رابط را مدیریت کنند و رفتار غیرقابلپیشبینی رخ میدهد.
systemd-networkd
در پروفایل systemd، میتوانید از systemd-networkd استفاده کنید که سبک و مناسب سرور است. پیکربندی با فایلهای .network در /etc/systemd/network/ انجام میشود:
# فعالسازی سرویس
systemctl enable --now systemd-networkd
systemctl enable --now systemd-resolvedنمونه فایل /etc/systemd/network/20-wired.network:
[Match]
Name=enp3s0
[Network]
DHCP=yes
# یا برای IP استاتیک:
# Address=192.168.1.10/24
# Gateway=192.168.1.1
# DNS=8.8.8.8
# DNS=1.1.1.1# اعمال تغییرات
systemctl restart systemd-networkd
# بررسی وضعیت
networkctl status enp3s0
# خروجی:
# * Interface: enp3s0
# State: routable (configured)
# Online state: onlinedhcpcd مستقل
سادهترین راه برای دریافت IP بهصورت DHCP، نصب dhcpcd بهتنهایی است. این روش برای سرورهای ساده و نصب اولیه Gentoo کافی است:
emerge --ask net-misc/dhcpcd
rc-update add dhcpcd default
rc-service dhcpcd startجزئیات بیشتر در آموزش DHCP آمده است.
تنظیم hostname
نام میزبان (hostname) در فایل /etc/hostname ذخیره میشود و در بوت توسط سرویس hostname خوانده میشود:
# تنظیم hostname
echo "gentoo-server" > /etc/hostname
# اعمال فوری
hostname gentoo-server
# یا با hostnamectl (در پروفایل systemd)
hostnamectl set-hostname gentoo-server
# بررسی
hostname
# خروجی:
# gentoo-serverهمچنین فایل /etc/hosts را بهروز کنید تا نام محلی قابلحلشدن باشد:
# /etc/hosts
127.0.0.1 localhost
127.0.1.1 gentoo-server.localdomain gentoo-server
::1 localhostخطاهای رایج
۱. نام رابط شبکه تغییر کرده
* ERROR: interface eth0 does not existدلیل: پیکربندی از نام قدیمی eth0 استفاده میکند اما هسته نام جدیدی مانند enp3s0 تخصیص داده است. راهحل:
# یافتن نام واقعی
ip link show
# بهروزرسانی /etc/conf.d/net
nano /etc/conf.d/net
# config_enp3s0="dhcp"
# ساخت symlink جدید
ln -s /etc/init.d/net.lo /etc/init.d/net.enp3s0
rc-update del net.eth0 default 2>/dev/null
rc-update add net.enp3s0 default۲. تداخل دو مدیریتکننده شبکه
نشانه: رابط مدام بالا و پایین میشود یا آدرس IP غیرواقعی میگیرد. راهحل: فقط یک مدیریتکننده را فعال نگه دارید:
rc-update del dhcpcd default
rc-update del net.enp3s0 default
# و نگهداشتن فقط NetworkManager
rc-service NetworkManager restart۳. سرویس net شروع میشود اما اینترنت کار نمیکند
دلیل: احتمالاً DNS تنظیم نشده یا default gateway غایب است. راهحل:
# بررسی gateway
ip route
# باید خط default via ... وجود داشته باشد
# بررسی DNS
cat /etc/resolv.conf
# باید nameserver وجود داشته باشد
# تست
ping -c 3 8.8.8.8
ping -c 3 gentoo.orgخلاصه و مرحله بعد
مدیریت شبکه در Gentoo انعطافپذیر است: netifrc برای سرورهای OpenRC، NetworkManager برای دسکتاپ، systemd-networkd برای سرورهای systemd و dhcpcd مستقل برای کاربردهای ساده. مهمترین گام این است که فقط یکی را فعال کنید و نام رابط واقعی را در پیکربندی وارد نمایید.
برای جزئیات پیکربندی DHCP به آموزش DHCP و برای IP استاتیک به آموزش Static IP مراجعه کنید. برای مدیریت سرویسها در OpenRC، آموزش OpenRC را ببینید.
این صفحه در تاریخ ۱ تیر ۱۴۰۵ بهروزرسانی شده است.