تنظیم شبکه در Ubuntu
آموزش کامل تنظیم شبکه در Ubuntu با Netplan و NetworkManager: IP ثابت، DHCP، DNS، Wi-Fi، Bridge، VLAN و رفع خطاهای رایج.
Ubuntu از نسخهٔ ۱۷.۱۰ به بعد، بهطور پیشفرض از Netplan برای پیکربندی شبکه استفاده میکند. Netplan یک لایهٔ بالاتر است که پیکربندی YAML را به تنظیمات NetworkManager یا systemd-networkd تبدیل میکند. در این آموزش با هر دو و سناریوهای رایج شبکه آشنا میشوید.
ابزارهای مدیریت شبکه در Ubuntu
| ابزار | کاربرد | مناسب برای |
|---|---|---|
| Netplan | پیکربندی YAML به NetworkManager/networkd | سرور و دسکتاپ |
| NetworkManager | شبکهٔ گرافیکی و پویا | دسکتاپ، لپتاپ |
| systemd-networkd | شبکهٔ systemd | سرور، container |
Netplan فرانتاند است
Netplan خودش backend شبکه نیست. Netplan پیکربندی YAML شما را به یکی از دو backend تبدیل میکند:
- NetworkManager — در Ubuntu Desktop پیشفرض
- systemd-networkd — در Ubuntu Server پیشفرض
این یعنی شما با Netplan کار میکنید، اما در پسزمینه NetworkManager یا networkd اجرا میشود.
بررسی وضعیت شبکه
پیش از هر چیز، وضعیت فعلی شبکه را بررسی کنید:
# لیست رابطهای شبکه
ip link show
# آدرسهای IP اختصاصیافته
ip addr show
# جدول مسیریابی
ip route
# DNS فعلی
cat /etc/resolv.conf
# تست اتصال
ping -c 3 8.8.8.8
ping -c 3 ubuntu.com# خروجی نمونه ip link show:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 ...
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 ...
link/ether 00:11:22:33:44:55نام رابطها
در Ubuntu مدرن، رابطهای شبکه بهجای نامهای قدیمی eth0 و wlan0، از نامهای پیشبینیشدهٔ systemd استفاده میکنند: ens18، enp3s0، wlp3s0 و... این نامها بر اساس موقعیت فیزیکی کارت شبکه در PCI/USB ساخته میشوند و پایدارترند.
فایلهای Netplan
فایلهای پیکربندی Netplan در /etc/netplan/ قرار دارند:
# لیست فایلهای Netplan
ls /etc/netplan/
# 01-network-manager-all.yaml (در Desktop)
# 50-cloud-init.yaml (در سرورهای cloud)
# 01-netcfg.yaml (نصب سنتی)
# مشاهدهٔ فایل
cat /etc/netplan/01-network-manager-all.yaml# /etc/netplan/01-network-manager-all.yaml
network:
version: 2
renderer: NetworkManagerروش ۱: Netplan با NetworkManager (دسکتاپ)
در Ubuntu Desktop، NetworkManager بهطور پیشفرض فعال است. شما میتوانید از رابط گرافیکی یا nmcli/nmtui استفاده کنید:
nmcli — رابط خط فرمان
# لیست اتصالها
nmcli connection show
# لیست رابطها و وضعیت
nmcli device status
# اتصال به Wi-Fi
nmcli device wifi connect "MyNetwork" password "mypassword"
# ساخت اتصال IP ثابت
nmcli connection add type ethernet con-name "static" ifname ens18 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"
# فعالسازی اتصال
nmcli connection up "static"
# قطع اتصال
nmcli connection down "static"
# مشاهدهٔ شبکههای Wi-Fi
nmcli device wifi listnmtui — رابط متنی
# اجرای رابط متنی
sudo nmtuinmtui یک منوی تعاملی برای ویرایش اتصالها، فعالسازی و تنظیم hostname فراهم میکند.
nmtui بهترین دوست شما در سرور
اگر روی سرور بدون GUI از NetworkManager استفاده میکنید، nmtui سادهترین راه برای پیکربندی است. نیازی به حفظ دستورات پیچیده nmcli نیست.
روش ۲: Netplan با systemd-networkd (سرور)
در Ubuntu Server، systemd-networkd بهطور پیشفرض فعال است. فایل Netplan را برای پیکربندی ویرایش کنید:
DHCP (پیشفرض)
# ویرایش فایل Netplan
sudo nano /etc/netplan/01-netcfg.yaml# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
ens18:
dhcp4: trueIP ثابت
# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
ens18:
addresses:
- 192.168.1.10/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
search: [example.com]اعمال تغییرات
# تست پیکربندی (دستور در ۱۲۰ ثانیه به حالت قبل برمیگردد)
sudo netplan try
# اعمال دائمی
sudo netplan apply
# دیباگ
sudo netplan --debug applyهمیشه netplan try استفاده کنید
اگر دسترسی از راه دور (SSH) دارید، همیشه sudo netplan try را اجرا کنید. این دستور پیکربندی را اعمال میکند و اگر اتصال شما قطع شود، پس از ۱۲۰ ثانیه بهطور خودکار به پیکربندی قبلی برمیگردد. این کار از قفل شدن شما خارج از سرور جلوگیری میکند.
تنظیمات پیشرفته Netplan
چندین IP روی یک رابط
network:
version: 2
renderer: networkd
ethernets:
ens18:
addresses:
- 192.168.1.10/24
- 192.168.1.11/24
- 10.0.0.5/24
routes:
- to: default
via: 192.168.1.1VLAN
network:
version: 2
renderer: networkd
ethernets:
ens18:
addresses: [192.168.1.10/24]
vlans:
ens18.10:
id: 10
link: ens18
addresses: [10.0.10.1/24]Bridge (برای KVM و ماشین مجازی)
network:
version: 2
renderer: networkd
ethernets:
ens18:
dhcp4: false
bridges:
br0:
interfaces: [ens18]
addresses: [192.168.1.10/24]
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
parameters:
stp: false
forward-delay: 0Bonding (تجمیع چند NIC)
network:
version: 2
renderer: networkd
ethernets:
ens18: {}
ens19: {}
bonds:
bond0:
interfaces: [ens18, ens19]
addresses: [192.168.1.10/24]
routes:
- to: default
via: 192.168.1.1
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100تنظیم DNS
DNS در Ubuntu از طریق Netplan و systemd-resolved مدیریت میشود:
# بررسی DNS فعلی
resolvectl status
# تست DNS
resolvectl query ubuntu.comتنظیم DNS در Netplan
network:
version: 2
renderer: networkd
ethernets:
ens18:
addresses: [192.168.1.10/24]
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
search: [example.com, home]فعالکردن systemd-resolved
# فعالسازی
sudo systemctl enable --now systemd-resolved
# همگامسازی با /etc/resolv.conf
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.confhostname و /etc/hosts
# تنظیم hostname
sudo hostnamectl set-hostname ubuntu-server
# بررسی
hostnamectl
# فایل /etc/hosts
cat /etc/hosts
# 127.0.0.1 localhost
# 127.0.1.1 ubuntu-serverhostname در /etc/hosts مهم است
اگر hostname شما در /etc/hosts نباشد، بسیاری از برنامهها (از جمله sudo) هشدار میدهند. همیشه مطمئن شوید hostname در /etc/hosts به 127.0.1.1 (نه 127.0.0.1) نگاشت شده است.
Wi-Fi در سرور (بدون GUI)
# /etc/netplan/02-wifi.yaml
network:
version: 2
renderer: networkd
wifis:
wlp3s0:
dhcp4: true
access-points:
"MyNetwork":
password: "mypassword"# نیاز به بستهٔ wpa_supplicant
sudo apt install -y wpasupplicant
# اعمال
sudo netplan applyابزارهای عیبیابی
# تست اتصال
ping -c 3 8.8.8.8
# تست DNS
nslookup ubuntu.com
dig ubuntu.com
# مسیر شبکه
traceroute ubuntu.com
mtr ubuntu.com
# پورتهای باز
sudo ss -tlnp
# جدول مسیریابی
ip route
# لاگهای شبکه
journalctl -u systemd-networkd
journalctl -u NetworkManager
journalctl -u systemd-resolvedخطاهای رایج
۱. "Temporary failure in name resolution"
علت: DNS تنظیم نشده یا غیرفعال است.
راهحل:
# بررسی resolv.conf
cat /etc/resolv.conf
# تنظیم موقت
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
# تنظیم دائمی با Netplan (در فایل YAML)
# nameservers:
# addresses: [8.8.8.8, 1.1.1.1]۲. رابط DOWN است
# بررسی وضعیت
ip link show ens18
# بالا آوردن دستی
sudo ip link set ens18 up
# بررسی لاگ
journalctl -u systemd-networkd۳. خطای Netplan YAML
Error in network definition: invalid YAMLراهحل: فایل YAML را با دستور زیر بررسی کنید:
# بررسی syntax
sudo netplan generate
# اجرای با debug
sudo netplan --debug applyتورفتگی در YAML مهم است
YAML به تورفتگی (indentation) حساس است. همیشه از فاصله (space) استفاده کنید، نه tab. هر سطح تورفتگی ۲ فاصله است. اگر خطا دارید، اول تورفتگی را بررسی کنید.
۴. تعارض NetworkManager و Netplan networkd
علت: هر دو ابزار سعی میکنند رابط را مدیریت کنند.
راهحل: در فایل Netplan، مشخص کنید کدام renderer استفاده شود:
# برای دسکتاپ
network:
version: 2
renderer: NetworkManager
# برای سرور
network:
version: 2
renderer: networkd۵. Wi-Fi کار نمیکند
# بررسی رابط Wi-Fi
ip link show wlp3s0
# بررسی فریمور
sudo dmesg | grep -i firmware
# نصب فریمورهای وایرلس
sudo apt install -y linux-firmware firmware-iwlwifi firmware-realtek
# اسکن شبکهها
nmcli device wifi list
# اتصال
nmcli device wifi connect "SSID" password "password"۶. cloud-init تنظیمات Netplan را override میکند
در سرورهای ابری، cloud-init ممکن است تنظیمات Netplan شما را بازنویسی کند:
# غیرفعالکردن cloud-init برای شبکه
sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfgnetwork: {config: disabled}خلاصه و مرحلهٔ بعد
تنظیم شبکه در Ubuntu به Netplan بهعنوان فرانتاند و یکی از دو backend NetworkManager (دسکتاپ) یا systemd-networkd (سرور) بستگی دارد. برای اکثر کاربران دسکتاپ، NetworkManager با nmtui سادهترین راه است. برای سرورها، Netplan با systemd-networkd پایدارتر است.
بهعنوان گام بعدی:
- آموزش SSH را برای ورود از راه دور بخوانید
- آموزش systemd را برای مدیریت سرویسها مرور کنید
- آموزش بهروزرسانی سیستم را برای روتین نگهداری دنبال کنید
این صفحه در تاریخ ۹ تیر ۱۴۰۵ بهروزرسانی شده است.