مقدمه
اگر سالها با سرورهای لینوکسی کار کرده باشید، احتمالاً با فایلهایی مانند ifcfg-eth0 و دستورهایی مثل ifup و ifdown سروکار داشتهاید. این روش سالها یکی از روشهای استاندارد مدیریت شبکه در توزیعهایی مانند CentOS بود.
اما با ورود نسل جدید توزیعهای لینوکسی مانند AlmaLinux، Rocky Linux و نسخههای جدید RHEL، معماری مدیریت شبکه تغییر کرده است. امروزه NetworkManager به روش اصلی مدیریت شبکه تبدیل شده و درک تفاوت آن با معماری قدیمی برای مدیران سرور، بهخصوص در محیطهای هاستینگ و مجازیسازی، اهمیت زیادی دارد.
در این مقاله تفاوت این دو معماری را بررسی میکنیم و میبینیم چرا در سیستمهای جدید بهتر است مدیریت شبکه را بر پایه NetworkManager انجام دهیم.
معماری قدیمی شبکه در لینوکس چگونه بود؟
در سیستمهایی مانند CentOS 6 و CentOS 7، تنظیمات شبکه معمولاً بر پایه مجموعهای از فایلهای configuration و سرویس network انجام میشد.
مهمترین فایلها معمولاً در مسیر زیر قرار داشتند:
/etc/sysconfig/network-scripts/
برای مثال:
/etc/sysconfig/network-scripts/ifcfg-eth0
این فایل مشخص میکرد کارت شبکه چگونه باید پیکربندی شود.
یک نمونه تنظیمات قدیمی برای یک IP استاتیک میتوانست چنین ساختاری داشته باشد:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.0.2.10
PREFIX=24
GATEWAY=192.0.2.1
DNS1=8.8.8.8
DNS2=1.1.1.1
در این معماری، مسیر کلی تقریباً به شکل زیر بود:
ifcfg-eth0
│
▼
network service
│
▼
Linux Kernel
│
▼
Network Interface
برای اعمال تغییرات نیز معمولاً از دستورهایی مانند زیر استفاده میشد:
systemctl restart network
یا:
ifdown eth0
ifup eth0
این روش ساده و قابل فهم بود و سالها در سرورهای لینوکسی مورد استفاده قرار گرفت.
NetworkManager چیست؟
NetworkManager یک سرویس مدیریت شبکه در لینوکس است که وظیفه مدیریت Connectionهای شبکه و اعمال تنظیمات مربوط به آنها را بر عهده دارد.
در توزیعهای جدید لینوکس، NetworkManager به بخش اصلی معماری شبکه تبدیل شده است.
برای مثال در AlmaLinux 9 معمولاً ساختار کلی به این شکل است:
NetworkManager
│
┌──────────────┼──────────────┐
▼ ▼ ▼
Ethernet VLAN Bridge
│
▼
Network Interface
│
▼
Linux Kernel
NetworkManager فقط برای تنظیم IP نیست؛ بلکه میتواند مواردی مانند موارد زیر را نیز مدیریت کند:
- Ethernet
- DHCP
- Static IP
- Routing
- VLAN
- Bonding
- Bridge
- VPN
- DNS
- چندین Connection Profile
به همین دلیل NetworkManager را نباید صرفاً یک جایگزین ساده برای سرویس network دانست؛ بلکه یک معماری کاملتر برای مدیریت شبکه است.
تفاوت Network Interface و Connection Profile
یکی از نکات مهم در معماری جدید، تفاوت میان Network Interface و Connection Profile است.
برای مثال ممکن است یک کارت شبکه با نام:
ens18
داشته باشیم.
این همان Network Interface است.
اما NetworkManager تنظیمات آن را در قالب یک Connection Profile مدیریت میکند.
برای مشاهده Connectionها میتوان از دستور زیر استفاده کرد:
nmcli connection show
و برای مشاهده وضعیت کارتهای شبکه:
nmcli device status
بنابراین در معماری جدید باید این دو مفهوم را از هم جدا کنیم:
Connection Profile
│
▼
Network Interface
│
▼
Network Card
این تفاوت در محیطهایی که دارای Bridge، VLAN، Bond یا چندین کارت شبکه هستند اهمیت بیشتری پیدا میکند.
فایلهای ifcfg چه شدند؟
یکی از مهمترین تغییرات در نسل جدید لینوکس، تغییر روش ذخیره Connection Profileها است.
در معماری قدیمی، مدیر سیستم معمولاً با فایلهایی مانند:
/etc/sysconfig/network-scripts/ifcfg-eth0
کار میکرد.
اما در معماری جدید NetworkManager، Connection Profileها معمولاً در مسیر زیر قرار میگیرند:
/etc/NetworkManager/system-connections/
برای مثال:
/etc/NetworkManager/system-connections/ens18.nmconnection
بنابراین در سیستمهای جدید، فایلهای ifcfg-* دیگر مرکز اصلی معماری شبکه نیستند.
نکته مهم این است که وجود یک فایل ifcfg-* در یک سیستم جدید لزوماً به این معنی نیست که سیستم از معماری قدیمی استفاده میکند. NetworkManager در برخی نسخهها و محیطها میتواند با فرمتهای قدیمی نیز تعامل داشته باشد.
بنابراین باید سرویس مدیریت شبکه را ملاک قرار داد، نه صرفاً نام فایلهای موجود در سیستم.
روش جدید تنظیم IP در لینوکس
در سیستمهای مبتنی بر NetworkManager، روش استاندارد مدیریت شبکه استفاده از nmcli است.
برای مشاهده Connectionها:
nmcli connection show
برای مشاهده وضعیت Interfaceها:
nmcli device status
برای مثال، فرض کنید کارت شبکه ens18 باشد و بخواهیم یک IP استاتیک برای آن تعریف کنیم:
nmcli connection modify ens18 \
ipv4.method manual \
ipv4.addresses 192.0.2.10/24 \
ipv4.gateway 192.0.2.1 \
ipv4.dns "8.8.8.8 1.1.1.1"
سپس Connection را فعال میکنیم:
nmcli connection up ens18
و وضعیت را بررسی میکنیم:
ip addr
ip route
nmcli device status
چرا معماری جدید اهمیت بیشتری دارد؟
ممکن است در نگاه اول تصور کنیم NetworkManager فقط یک روش جدید برای نوشتن IP و Gateway است؛ اما تفاوت واقعی بسیار بیشتر از این است.
در یک سرور مدرن ممکن است چنین ساختاری داشته باشیم:
Physical NIC
│
▼
Bond
│
▼
Bridge
│
┌────┼────┐
▼ ▼ ▼
VM1 VM2 VM3
یا:
Physical NIC
│
▼
VLAN
│
├── Management
├── Storage
└── Public Network
مدیریت چنین ساختاری با معماریهای قدیمی پیچیدهتر بود، در حالی که NetworkManager برای مدیریت Connectionهای مختلف طراحی شده است.
NetworkManager در سرورهای مجازیسازی
این موضوع برای مدیران سرورهایی که از KVM، Virtualizor یا SolusVM استفاده میکنند اهمیت ویژهای دارد.
فرض کنیم یک سرور فیزیکی داریم:
Physical Server
│
NIC eth0
│
▼
Bridge
│
┌──────────┼──────────┐
▼ ▼ ▼
VPS1 VPS2 VPS3
در این ساختار، کارت شبکه فیزیکی، Bridge و ماشینهای مجازی باید به شکل صحیح با یکدیگر ارتباط داشته باشند.
NetworkManager میتواند Connectionهای مربوط به این اجزا را مدیریت کند.
به همین دلیل در سرورهای جدید، بهتر است مدیر سیستم قبل از ایجاد تغییرات شبکه، معماری واقعی Interfaceها و Connectionها را بررسی کند.
دستورهای مهم عبارتاند از:
nmcli device status
nmcli connection show
ip addr
ip route
ss -lntup
این دستورات در کنار یکدیگر تصویر مناسبی از وضعیت شبکه سرور ارائه میکنند.
آیا باید NetworkManager را در AlmaLinux غیرفعال کنیم؟
یکی از عادتهایی که از دوران CentOS 6 و CentOS 7 باقی مانده، غیرفعال کردن NetworkManager است.
در سیستمهای جدید، این کار معمولاً رویکرد مناسبی نیست.
اگر سرور شما AlmaLinux 9 یا AlmaLinux 10 است، بهتر است معماری شبکه را بر اساس NetworkManager طراحی و مدیریت کنید.
ابتدا وضعیت سرویس را بررسی کنید:
systemctl status NetworkManager
سپس Connectionها را مشاهده کنید:
nmcli connection show
و وضعیت Interfaceها را بررسی کنید:
nmcli device status
در چنین محیطی بهتر است به جای تلاش برای بازگرداندن معماری قدیمی، روش جدید را بهدرستی یاد بگیریم.
مزایای NetworkManager
NetworkManager چند مزیت مهم نسبت به روش سنتی دارد.
۱. مدیریت یکپارچه
تنظیمات شبکه از طریق یک سیستم مدیریتی واحد کنترل میشوند.
۲. پشتیبانی بهتر از ساختارهای پیچیده
مواردی مانند:
- Bonding
- Bridge
- VLAN
- VPN
- Routing
- چند کارت شبکه
به شکل یکپارچهتری مدیریت میشوند.
۳. مدیریت Dynamic
NetworkManager میتواند تغییرات شبکه را بدون وابستگی به روشهای قدیمی مدیریت کند.
۴. مناسبتر برای سیستمهای مدرن
AlmaLinux، Rocky Linux و نسخههای جدید RHEL بر اساس معماری مدرن NetworkManager طراحی شدهاند.
مقایسه معماری قدیمی و جدید
| ویژگی | معماری قدیمی | معماری جدید |
|---|---|---|
| نمونه سیستم | CentOS 6/7 | AlmaLinux 8/9/10 |
| سرویس اصلی | network | NetworkManager |
| ابزار اصلی | ifup/ifdown | nmcli |
| فایلهای رایج | ifcfg-* | .nmconnection |
| مسیر قدیمی | network-scripts | — |
| مسیر Connectionها | — | system-connections |
| Static IP | ifcfg-* | Connection Profile |
| DHCP | network scripts | NetworkManager |
| VLAN | سنتی | یکپارچه |
| Bridge | سنتی | یکپارچه |
| Bonding | سنتی | یکپارچه |
| VPN | محدودتر | یکپارچهتر |
| مناسب برای معماریهای جدید | کمتر | بیشتر |
نکته مهم برای مدیران سرور
مهمترین نکته این است که NetworkManager را فقط به عنوان یک دستور جدید برای تنظیم IP در نظر نگیریم.
تغییر اصلی، تغییر معماری است.
در روش قدیمی، ذهنیت مدیر سرور بیشتر این بود:
ifcfg-eth0
↓
network service
↓
eth0
اما در معماری جدید بهتر است چنین دیدگاهی داشته باشیم:
NetworkManager
│
├── Connection Profile
│ │
│ └── Ethernet
│
├── Connection Profile
│ │
│ └── Bridge
│
├── Connection Profile
│ │
│ └── VLAN
│
└── Connection Profile
│
└── Bond
این مدل ذهنی، هنگام عیبیابی مشکلات شبکه بسیار کمککننده است.
برای سرورهای هاستینگ کدام روش بهتر است؟
اگر در حال مدیریت یک زیرساخت هاستینگ هستید و سرورهای شما بر پایه AlmaLinux 9 یا 10 هستند، توصیه منطقی این است که معماری شبکه را بر اساس NetworkManager طراحی کنید.
بهخصوص اگر سرور دارای موارد زیر باشد:
- چند کارت شبکه
- IPهای متعدد
- VLAN
- Bridge
- KVM
- Virtualizor
- SolusVM
- شبکه Management
- شبکه Storage
- شبکه Public
در این شرایط، برگشتن به روشهای قدیمی معمولاً مشکل را سادهتر نمیکند و حتی میتواند باعث ایجاد ناسازگاری میان ابزارهای مختلف مدیریت شبکه شود.
جمعبندی
مدیریت شبکه در لینوکس از معماری سنتی network-scripts به سمت معماری مبتنی بر NetworkManager حرکت کرده است.
در سیستمهای قدیمی مانند CentOS 7، فایلهایی مانند:
ifcfg-eth0
و سرویس:
network
بخش اصلی مدیریت شبکه بودند.
در سیستمهای جدید مانند AlmaLinux 9 و AlmaLinux 10، NetworkManager و Connection Profileها نقش اصلی را دارند و ابزارهایی مانند:
nmcli
ip
برای مدیریت و عیبیابی شبکه اهمیت بیشتری پیدا کردهاند.
بنابراین اگر از CentOS 7 به AlmaLinux 9 یا 10 مهاجرت کردهاید، بهتر است فقط فایلهای تنظیمات را تغییر ندهید؛ بلکه مدل ذهنی خود درباره مدیریت شبکه را نیز از network-scripts به NetworkManager تغییر دهید.
این تغییر بهخصوص در سرورهای هاستینگ و مجازیسازی که از Bridge، VLAN، Bonding و ماشینهای مجازی استفاده میکنند، اهمیت بسیار زیادی دارد.



