فصل هشتم - قسمت هفتاد و پنجم 🐧
2 : تنظیم شبکه در لینوکس
———————
اینجا میخواهیم یاد بگیریم تنظیمات شبکه در Linux کجا قرار دارند و امروزه چطور آنها را مدیریت میکنیم.
نکته مهم این قسمت:
——————————-
1️⃣ قبلاً تنظیمات شبکه کجا بودند؟
بسته به Distribution فرق داشت.
🔴 Red Hat / CentOS قدیمی
در سیستمهای قدیمیتر فایلهای Interface معمولاً در:
/etc/sysconfig/network-scripts/
بودند.
مثلاً:
/etc/sysconfig/network-scripts/ifcfg-eth0
داخلش تنظیماتی مثل IP، Gateway و نوع دریافت IP قرار میگرفت.
مثلاً:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
——————-
🔵 Debian / Ubuntu قدیمی
در Debian و Ubuntu قدیمی معمولاً:
/etc/network/interfaces
استفاده میشد.
مثلاً:
auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
————-
🟢 openSUSE
در openSUSE هم روشهای مخصوص خودش وجود داشته، اما در نسخههای جدیدتر مدیریت شبکه بیشتر به NetworkManager منتقل شده است.
—————
2️⃣ امروزه چه چیزی مهم است؟
امروزه در بسیاری از Distributionهای Desktop و Server:
NetworkManager
↓
مدیریت Network Interface
↓
IP / Gateway / DNS / Connection
ابزار اصلی خط فرمان آن:
nmcli
است.
——————
3️⃣ NetworkManager چیست؟
NetworkManager یک سرویس برای مدیریت اتصالهای شبکه است.
میتواند مواردی مثل:
Ethernet
Wi-Fi
IP
Gateway
DNS
VPN
Connection Profiles
را مدیریت کند.
پس این دو را قاطی نکن:
NetworkManager
→ سرویس مدیریت شبکه
nmcli
→ ابزار Command Line برای کنترل NetworkManager
—————
4️⃣ nmcli
اول وضعیت کلی NetworkManager:
nmcli general status
مثلاً:
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled ... enabled ...
یعنی NetworkManager فعال است و سیستم اتصال شبکه دارد.
——————————
5️⃣ نمایش Connectionها
nmcli connection show
این دستور تمام Connection Profileها را نشان میدهد.
مثلاً:
NAME UUID TYPE DEVICE
eth0 xxxx-xxxx-xxxx-xxxx ethernet eth0
————————-
6️⃣ فقط Connectionهای فعال
دستوری که خودت نوشتی:
nmcli connection show --active
یا کوتاهتر:
nmcli con show --active
فقط اتصالهای فعال را نمایش میدهد.
——————————
7️⃣ بالا آوردن Connection
مثلاً:
nmcli connection up eth0
یعنی Connection مربوط به eth0 را فعال کن.
پایین آوردن:
nmcli connection down eth0
—————————-
8️⃣ تغییر IP
اینجا یکی از قسمتهای مهم nmcli است.
فرض کنیم Connection ما اسمش eth0 است.
میخواهیم IP را:
192.168.1.20/24
قرار دهیم.
sudo nmcli connection modify eth0 ipv4.addresses 192.168.1.20/24
Gateway:
sudo nmcli connection modify eth0 ipv4.gateway 192.168.1.1
DNS:
sudo nmcli connection modify eth0 ipv4.dns "8.8.8.8"
و مشخص میکنیم IP به صورت دستی تنظیم شود:
sudo nmcli connection modify eth0 ipv4.method manual
بعد Connection را دوباره فعال میکنیم:
sudo nmcli connection down eth0
sudo nmcli connection up eth0
—————————
9️⃣ DHCP با nmcli
اگر بخواهیم IP را DHCP بگیریم:
sudo nmcli connection modify eth0 ipv4.method auto
بعد:
sudo nmcli connection down eth0
sudo nmcli connection up eth0
حالا DHCP Server برای سیستم IP میفرستد.
———————-
🔟 یک مثال واقعی
فرض کن سرور Linux داری.
میخواهی:
IP → 192.168.1.50/24
Gateway → 192.168.1.1
DNS → 8.8.8.8
تنظیم کنیم:
sudo nmcli con mod eth0 ipv4.addresses 192.168.1.50/24
sudo nmcli con mod eth0 ipv4.gateway 192.168.1.1
sudo nmcli con mod eth0 ipv4.dns 8.8.8.8
sudo nmcli con mod eth0 ipv4.method manual
بعد:
sudo nmcli con down eth0
sudo nmcli con up eth0
بررسی:
ip addr
ip route
nmcli connection show
—————————
1️⃣1️⃣ nmtui
یک ابزار جالب دیگر:
nmtui
برخلاف nmcli که Command Line است، nmtui یک رابط متنی تعاملی دارد.
یعنی داخل Terminal یک محیط منویی میبینی.
مثلاً:
┌───────────────────────────┐
│ NetworkManager TUI │
│ │
│ Edit a connection │
│ Activate a connection │
│ Set system hostname │
└───────────────────────────┘
برای کسی که نمیخواهد تمام Syntaxهای nmcli را حفظ کند، خیلی راحت است.
——————-
1️⃣2️⃣ وضعیت NetworkManager
سرویس:
systemctl status NetworkManager
ریاستارت:
sudo systemctl restart NetworkManager
⚠️ چیزی که نوشتی:
systemctl restart networkmanager
ممکن است روی بعضی سیستمها به خاطر نام Unit کار کند، اما نام استاندارد سرویس در سیستمهای مبتنی بر NetworkManager معمولاً:
NetworkManager
است.
———————-
1️⃣3️⃣ /etc/resolv.conf
قبلاً خیلی وقتها مستقیماً:
/etc/resolv.conf
را برای DNS تغییر میدادند.
مثلاً:
nameserver 8.8.8.8
اما در سیستمهای جدید، این فایل ممکن است توسط یکی از سرویسهای مدیریت شبکه مثل:
NetworkManager
systemd-resolved
مدیریت شود.
بنابراین ممکن است تغییر دستی آن دائمی نباشد.
📌 برای تنظیم DNS بهتر است از ابزار مدیریت شبکه خود سیستم استفاده کنی.
مثلاً با NetworkManager:
nmcli con mod eth0 ipv4.dns 8.8.8.8
—————————
1️⃣4️⃣ mtr چیست؟
mtr یکی از ابزارهای بسیار خوب برای Network Troubleshooting است.
ترکیبی از ایدههای:
ping + traceroute
است.
مثلاً:
mtr google.com
مسیر Packet را نمایش میدهد و همزمان اطلاعاتی درباره Latency و Packet Loss هر Hop میدهد.
مثلاً:
HOST Loss% Snt Last Avg
192.168.1.1 0.0% 20 1ms 1ms
10.x.x.x 0.0% 20 5ms 5ms
...
google.com 0.0% 20 30ms 31ms
برای پیدا کردن مشکلات مسیر شبکه خیلی کاربردی است.
—————————
1️⃣5️⃣ dhclient چی شد؟
dhclient یک DHCP Client قدیمی و معروف بود.
مثلاً قبلاً ممکن بود ببینی:
dhclient eth0
برای گرفتن IP از DHCP.
اما نکتهای که گفتی را اینطور حفظ کن:
dhclient
NetworkManager خودش DHCP را مدیریت میکند.
مثلاً:
nmcli con mod eth0 ipv4.method auto
nmcli con up eth0
————————
1️⃣6️⃣ Desktop Linux چطور؟
در Desktop معمولاً اصلاً لازم نیست Terminal باز کنی.
مثلاً در GNOME:
Settings
↓
Network
↓
Wired / Wi-Fi
↓
IPv4
↓
Automatic / Manual
و میتوانی IP، Gateway و DNS را از رابط گرافیکی تنظیم کنی.
در KDE هم تنظیمات شبکه از رابط گرافیکی خودش انجام میشود.
اما پشت صحنه، در بسیاری از سیستمها NetworkManager مدیریت اتصال را انجام میدهد.
2 : تنظیم شبکه در لینوکس
———————
اینجا میخواهیم یاد بگیریم تنظیمات شبکه در Linux کجا قرار دارند و امروزه چطور آنها را مدیریت میکنیم.
نکته مهم این قسمت:
در Linuxهای جدید، NetworkManager نقش اصلی را در مدیریت شبکه دارد.
——————————-
1️⃣ قبلاً تنظیمات شبکه کجا بودند؟
بسته به Distribution فرق داشت.
🔴 Red Hat / CentOS قدیمی
در سیستمهای قدیمیتر فایلهای Interface معمولاً در:
/etc/sysconfig/network-scripts/
بودند.
مثلاً:
/etc/sysconfig/network-scripts/ifcfg-eth0
داخلش تنظیماتی مثل IP، Gateway و نوع دریافت IP قرار میگرفت.
مثلاً:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
——————-
🔵 Debian / Ubuntu قدیمی
در Debian و Ubuntu قدیمی معمولاً:
/etc/network/interfaces
استفاده میشد.
مثلاً:
auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
————-
🟢 openSUSE
در openSUSE هم روشهای مخصوص خودش وجود داشته، اما در نسخههای جدیدتر مدیریت شبکه بیشتر به NetworkManager منتقل شده است.
—————
2️⃣ امروزه چه چیزی مهم است؟
امروزه در بسیاری از Distributionهای Desktop و Server:
NetworkManager
↓
مدیریت Network Interface
↓
IP / Gateway / DNS / Connection
ابزار اصلی خط فرمان آن:
nmcli
است.
——————
3️⃣ NetworkManager چیست؟
NetworkManager یک سرویس برای مدیریت اتصالهای شبکه است.
میتواند مواردی مثل:
Ethernet
Wi-Fi
IP
Gateway
DNS
VPN
Connection Profiles
را مدیریت کند.
پس این دو را قاطی نکن:
NetworkManager
→ سرویس مدیریت شبکه
nmcli
→ ابزار Command Line برای کنترل NetworkManager
—————
4️⃣ nmcli
اول وضعیت کلی NetworkManager:
nmcli general status
مثلاً:
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled ... enabled ...
یعنی NetworkManager فعال است و سیستم اتصال شبکه دارد.
——————————
5️⃣ نمایش Connectionها
nmcli connection show
این دستور تمام Connection Profileها را نشان میدهد.
مثلاً:
NAME UUID TYPE DEVICE
eth0 xxxx-xxxx-xxxx-xxxx ethernet eth0
————————-
6️⃣ فقط Connectionهای فعال
دستوری که خودت نوشتی:
nmcli connection show --active
یا کوتاهتر:
nmcli con show --active
فقط اتصالهای فعال را نمایش میدهد.
——————————
7️⃣ بالا آوردن Connection
مثلاً:
nmcli connection up eth0
یعنی Connection مربوط به eth0 را فعال کن.
پایین آوردن:
nmcli connection down eth0
—————————-
8️⃣ تغییر IP
اینجا یکی از قسمتهای مهم nmcli است.
فرض کنیم Connection ما اسمش eth0 است.
میخواهیم IP را:
192.168.1.20/24
قرار دهیم.
sudo nmcli connection modify eth0 ipv4.addresses 192.168.1.20/24
Gateway:
sudo nmcli connection modify eth0 ipv4.gateway 192.168.1.1
DNS:
sudo nmcli connection modify eth0 ipv4.dns "8.8.8.8"
و مشخص میکنیم IP به صورت دستی تنظیم شود:
sudo nmcli connection modify eth0 ipv4.method manual
بعد Connection را دوباره فعال میکنیم:
sudo nmcli connection down eth0
sudo nmcli connection up eth0
—————————
9️⃣ DHCP با nmcli
اگر بخواهیم IP را DHCP بگیریم:
sudo nmcli connection modify eth0 ipv4.method auto
بعد:
sudo nmcli connection down eth0
sudo nmcli connection up eth0
حالا DHCP Server برای سیستم IP میفرستد.
———————-
🔟 یک مثال واقعی
فرض کن سرور Linux داری.
میخواهی:
IP → 192.168.1.50/24
Gateway → 192.168.1.1
DNS → 8.8.8.8
تنظیم کنیم:
sudo nmcli con mod eth0 ipv4.addresses 192.168.1.50/24
sudo nmcli con mod eth0 ipv4.gateway 192.168.1.1
sudo nmcli con mod eth0 ipv4.dns 8.8.8.8
sudo nmcli con mod eth0 ipv4.method manual
بعد:
sudo nmcli con down eth0
sudo nmcli con up eth0
بررسی:
ip addr
ip route
nmcli connection show
—————————
1️⃣1️⃣ nmtui
یک ابزار جالب دیگر:
nmtui
برخلاف nmcli که Command Line است، nmtui یک رابط متنی تعاملی دارد.
یعنی داخل Terminal یک محیط منویی میبینی.
مثلاً:
┌───────────────────────────┐
│ NetworkManager TUI │
│ │
│ Edit a connection │
│ Activate a connection │
│ Set system hostname │
└───────────────────────────┘
برای کسی که نمیخواهد تمام Syntaxهای nmcli را حفظ کند، خیلی راحت است.
——————-
1️⃣2️⃣ وضعیت NetworkManager
سرویس:
systemctl status NetworkManager
ریاستارت:
sudo systemctl restart NetworkManager
⚠️ چیزی که نوشتی:
systemctl restart networkmanager
ممکن است روی بعضی سیستمها به خاطر نام Unit کار کند، اما نام استاندارد سرویس در سیستمهای مبتنی بر NetworkManager معمولاً:
NetworkManager
است.
———————-
1️⃣3️⃣ /etc/resolv.conf
قبلاً خیلی وقتها مستقیماً:
/etc/resolv.conf
را برای DNS تغییر میدادند.
مثلاً:
nameserver 8.8.8.8
اما در سیستمهای جدید، این فایل ممکن است توسط یکی از سرویسهای مدیریت شبکه مثل:
NetworkManager
systemd-resolved
مدیریت شود.
بنابراین ممکن است تغییر دستی آن دائمی نباشد.
📌 برای تنظیم DNS بهتر است از ابزار مدیریت شبکه خود سیستم استفاده کنی.
مثلاً با NetworkManager:
nmcli con mod eth0 ipv4.dns 8.8.8.8
—————————
1️⃣4️⃣ mtr چیست؟
mtr یکی از ابزارهای بسیار خوب برای Network Troubleshooting است.
ترکیبی از ایدههای:
ping + traceroute
است.
مثلاً:
mtr google.com
مسیر Packet را نمایش میدهد و همزمان اطلاعاتی درباره Latency و Packet Loss هر Hop میدهد.
مثلاً:
HOST Loss% Snt Last Avg
192.168.1.1 0.0% 20 1ms 1ms
10.x.x.x 0.0% 20 5ms 5ms
...
google.com 0.0% 20 30ms 31ms
برای پیدا کردن مشکلات مسیر شبکه خیلی کاربردی است.
—————————
1️⃣5️⃣ dhclient چی شد؟
dhclient یک DHCP Client قدیمی و معروف بود.
مثلاً قبلاً ممکن بود ببینی:
dhclient eth0
برای گرفتن IP از DHCP.
اما نکتهای که گفتی را اینطور حفظ کن:
در بسیاری از سیستمهای جدید که NetworkManager مدیریت شبکه را بر عهده دارد، معمولاً نیازی نیست مستقیماً
dhclient
را اجرا کنیم.
NetworkManager خودش DHCP را مدیریت میکند.
مثلاً:
nmcli con mod eth0 ipv4.method auto
nmcli con up eth0
————————
1️⃣6️⃣ Desktop Linux چطور؟
در Desktop معمولاً اصلاً لازم نیست Terminal باز کنی.
مثلاً در GNOME:
Settings
↓
Network
↓
Wired / Wi-Fi
↓
IPv4
↓
Automatic / Manual
و میتوانی IP، Gateway و DNS را از رابط گرافیکی تنظیم کنی.
در KDE هم تنظیمات شبکه از رابط گرافیکی خودش انجام میشود.
اما پشت صحنه، در بسیاری از سیستمها NetworkManager مدیریت اتصال را انجام میدهد.