</>

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

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

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

Command Palette

Search for a command to run...

تنظیم شبکه در 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

الگوی نام‌گذاری جدید:

پیشوندمعنیمثال
enEthernetenp3s0, eno1, ens33
wlWirelesswlp2s0, wlan0
wwWireless WANwwp0s20f0u2
pXsYPCI bus Y در slot Xenp3s0
oNرابط on-board شماره Neno1

چرا نام‌ها تغییر کردند؟

نام‌گذاری پیش‌بینی‌پذیر (predictable interface names) توسط udev/systemd معرفی شد تا رابط‌ها در هر بوت نام یکسانی داشته باشند. در سیستم‌های قدیمی، ترتیب بارگذاری درایورها می‌توانست باعث شود eth0 و eth1 جابه‌جا شوند. نام جدید enp3s0 به موقعیت فیزیکی کارت روی PCI اشاره می‌کند و پایدار است.

مقایسه مدیریت‌کننده‌های شبکه#

Gentoo از چندین ابزار مدیریت شبکه پشتیبانی می‌کند. انتخاب بستگی به نوع سیستم شما دارد:

مدیریت‌کنندهبسته Gentooمناسب برایمکانیزم پیکربندی
netifrcnet-misc/netifrcسرور، OpenRC/etc/conf.d/net + init scripts
NetworkManagernet-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 start

net.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: online

dhcpcd مستقل#

ساده‌ترین راه برای دریافت 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 را ببینید.

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

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