Static IP در Gentoo — پیکربندی IP ثابت با netifrc و systemd-networkd
آموزش کامل IP استاتیک در Gentoo: پیکربندی /etc/conf.d/net با netifrc، systemd-networkd، NetworkManager با nmcli، تنظیم DNS و خطاهای رایج.
برای اکثر کلاینتهای دسکتاپ DHCP کافی است؛ اما برای سرورها، دستگاههای شبکهای و سرویسهایی که به آدرس پایدار نیاز دارند، IP استاتیک ضروری است. در این مستند سه روش اصلی پیکربندی IP ثابت در Gentoo را مرور میکنیم: netifrc، systemd-networkd و NetworkManager.
چه زمانی از Static IP استفاده کنیم؟
| سناریو | چرا Static؟ |
|---|---|
| سرور SSH | آدرس پایدار برای اتصال از راه دور |
| سرور وب/پایگاه داده | دیاناس به IP ثابت اشاره میکند |
| روتر داخلی | رابط باید قابلپیشبینی باشد |
| چاپگر شبکه | همه باید بدانند چاپگر کجاست |
| سرور فایل (NFS/Samba) | کلاینتها به IP متصل میشوند |
| سیستم بدون سرور DHCP | مثلاً وقتی روتر DHCP ارائه نمیدهد |
رزرو DHCP در برابر Static
در شبکههای دارای سرور DHCP میتوان بهجای Static IP از «رزرو DHCP» (DHCP reservation) بر اساس MAC استفاده کرد؛ یعنی سرور DHCP همیشه همان IP را به همان MAC اختصاص میدهد. این روش مدیریت متمرکز را حفظ میکند. Static IP واقعی برای زمانی مناسب است که سرور DHCP در دسترس نیست یا نمیخواهید به آن وابسته باشید.
روش ۱: netifrc (پیشفرض OpenRC)
پیکربندی IP استاتیک با netifrc در فایل /etc/conf.d/net انجام میشود. سه متغیر اصلی وجود دارد: آدرس، مسیر و DNS.
# ویرایش پیکربندی
nano /etc/conf.d/netنمونه کامل پیکربندی:
# /etc/conf.d/net
# آدرس IP و netmask به فرمت CIDR
config_enp3s0="192.168.1.10/24"
# default gateway
routes_enp3s0="default via 192.168.1.1"
# سرورهای DNS
dns_servers_enp3s0="8.8.8.8 1.1.1.1"
# اگر چند آدرس IP دارید:
# config_enp3s0="
# 192.168.1.10/24
# 192.168.2.10/24
# "سپس رابط را فعال کنید:
# ساخت اسکریپت init برای رابط (اگر قبلاً ساخته نشده)
ln -s /etc/init.d/net.lo /etc/init.d/net.enp3s0
# افزودن به runlevel پیشفرض
rc-update add net.enp3s0 default
# شروع سرویس
rc-service net.enp3s0 start
# خروجی:
# * Bringing up interface enp3s0
# * 192.168.1.10/24 ... [ ok ]
# * Adding routes
# * default via 192.168.1.1 ... [ ok ]برای اطمینان از نوشتهشدن /etc/resolv.conf، بستهٔ net-dns/openresolv معمولاً نصب است. اگر نبود، میتوانید دستی بنویسید:
# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 1.1.1.1
search example.localCIDR به جای netmask
از فرمت CIDR مانند 192.168.1.10/24 استفاده کنید که هم خواناتر است و هم با ابزارهای مدرن (iproute2) سازگارتر است. مقدار 24 معادل netmask 255.255.255.0 است.
روش ۲: systemd-networkd
در پروفایل systemd، systemd-networkd راه پیشنهادی است. یک فایل .network بسازید:
mkdir -p /etc/systemd/network
nano /etc/systemd/network/20-wired.network# /etc/systemd/network/20-wired.network
[Match]
Name=enp3s0
[Network]
Address=192.168.1.10/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=1.1.1.1
Domains=example.local
# اگر چند آدرس دارید:
# Address=192.168.2.10/24اعمال تغییرات:
# فعالسازی سرویسها
systemctl enable --now systemd-networkd
systemctl enable --now systemd-resolved
# اعمال مجدد پیکربندی
systemctl restart systemd-networkd
# بررسی وضعیت
networkctl status enp3s0
# خروجی:
# * Interface: enp3s0
# State: routable (configured)
# Online state: online
# Address: 192.168.1.10 (static)
# Gateway: 192.168.1.1
# DNS: 8.8.8.8
# 1.1.1.1systemd-resolved و resolv.conf
وقتی systemd-resolved فعال است، /etc/resolv.conf بهطور خودکار به stub در 127.0.0.53 اشاره میکند. اگر برنامهای مستقیماً /etc/resolv.conf را میخواند، symlink را با ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf بهروز کنید.
روش ۳: NetworkManager با nmcli
برای دسکتاپ و لپتاپ، میتوانید پروفایل اتصال را بهصورت استاتیک تغییر دهید:
# بررسی اتصال موجود
nmcli connection show
# NAME TYPE DEVICE
# Wired connection 1 ethernet enp3s0
# تنظیم IP، gateway و DNS
nmcli connection modify "Wired connection 1" \
ipv4.method manual \
ipv4.addresses 192.168.1.10/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 1.1.1.1" \
ipv4.dns-search example.local
# اعمال
nmcli connection up "Wired connection 1"
# بررسی
nmcli device show enp3s0
# IP4.ADDRESS: 192.168.1.10/24
# IP4.GATEWAY: 192.168.1.1
# IP4.DNS: 8.8.8.8 1.1.1.1مقایسه روشها
| روش | فایل پیکربندی | مزیت | معایب |
|---|---|---|---|
| netifrc | /etc/conf.d/net | سبک، سازگار با OpenRC | گرامر خاص |
| systemd-networkd | /etc/systemd/network/*.network | یکپارچه با systemd | فقط پروفایل systemd |
| NetworkManager | پروفایل در /etc/NetworkManager/system-connections/ | رابط گرافیکی، پشتیبانی از Wi-Fi | سنگینتر برای سرور |
بررسی اتصال
پس از پیکربندی، اتصال را تست کنید:
# آدرس IP
ip -4 addr show enp3s0
# inet 192.168.1.10/24 scope global enp3s0
# مسیرها
ip route
# default via 192.168.1.1 dev enp3s0
# DNS
cat /etc/resolv.conf
# nameserver 8.8.8.8
# تست gateway
ping -c 3 192.168.1.1
# تست اینترنت
ping -c 3 gentoo.orgخطاهای رایج
۱. gateway در دسترس نیست
ping 192.168.1.1
# connect: Network is unreachableدلیل: آدرس gateway در subnet رابط نیست یا اشتباه نوشته شده است. راهحل:
# بررسی آدرس و gateway
ip addr show enp3s0
ip route
# اگر gateway در subnet نبود، اصلاح کنید
# مثال غلط: IP 192.168.1.10/24 با gateway 10.0.0.1
# مثال درست: gateway باید 192.168.1.x باشد۲. آدرس IP تکراری (Duplicate)
Sep 12 10:23:11 host kernel: ARP: duplicate IP address detected!دلیل: دستگاه دیگری در شبکه همین IP را دارد. راهحل:
# بررسی دستگاه دارای IP
arping -D -I enp3s0 -c 2 192.168.1.10
# اگر پاسخ گرفتید، IP درگیر است
# راهحل: IP دیگری انتخاب کنید
nano /etc/conf.d/net
# config_enp3s0="192.168.1.11/24"۳. DNS کار نمیکند با IP استاتیک
دلیل: متغیر dns_servers_ در netifrc نوشته نشده یا openresolv نصب نیست. راهحل:
# نصب openresolv
emerge --ask net-dns/openresolv
# یا نوشتن مستقیم resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 1.1.1.1" >> /etc/resolv.conf
# ریاستارت سرویس
rc-service net.enp3s0 restartخلاصه و مرحله بعد
IP استاتیک برای سرورها و دستگاههای شبکهای ضروری است. در Gentoo سه روش اصلی وجود دارد: netifrc با فایل /etc/conf.d/net برای OpenRC، systemd-networkd با فایلهای .network برای پروفایل systemd و NetworkManager با nmcli برای دسکتاپ. مهمترین نکته این که آدرس، gateway و DNS همگی باید با هم سازگار باشند.
برای پیکربندی DHCP به آموزش DHCP و برای کلیات مدیریت شبکه به آموزش Networking مراجعه کنید.
این صفحه در تاریخ ۱ تیر ۱۴۰۵ بهروزرسانی شده است.