Skip to content

NetworkManager va netplan

Oldingi uchta maqolada — IP va routing vositalari, DHCP asoslari va DNS vositalari — bir necha marta bitta ogohlantirish takrorlandi: ip buyrug'i bilan qilingan o'zgarish vaqtinchalik, qayta yuklanganda yo'qoladi. Bu maqola aynan o'sha bo'shliqni to'ldiradi — IP, marshrut va DNS sozlamalarini fayl orqali, doimiy va qayta ishlatiladigan tarzda qanday yozishni ko'rsatadi. Zamonaviy Ubuntu/Debian tizimlarida buning ikkita asosiy yo'li bor: masalan serverlar uchun ko'proq ishlatiladigan netplan va ish stantsiyalarida, ba'zi server o'rnatishlarida ishlatiladigan NetworkManager.

O'quv maqsadlari

Maqolani tugatgach:

  • netplan, systemd-networkd va NetworkManager orasidagi munosabatni — kim kimni "orqadan" boshqarishini — tushunasiz;
  • netplan YAML faylida statik va DHCP interfeys konfiguratsiyasini yoza olasiz;
  • netplan try va netplan apply orasidagi farqni va nega try xavfsizroq ekanini bilasiz;
  • nmcli va nmtui bilan NetworkManager orqali interfeysni sozlashni bajara olasiz;
  • RHEL oilasida tarixiy ifcfg-* fayllar va NetworkManager orasidagi munosabatni bilasiz;
  • konfiguratsiya faylidagi xatoni serverni tarmoqdan uzmasdan qanday tekshirishni bilasiz.

netplan: yagona YAML, ikkita "backend"

netplan — o'zi tarmoqni boshqarmaydi; u faqat YAML konfiguratsiyasini o'qiydi va shu asosida haqiqiy ishni bajaradigan ikkita backend'dan biriga — systemd-networkd yoki NetworkManager'ga — mos konfiguratsiya generatsiya qiladi. Ubuntu Server'da odatda systemd-networkd backend, Ubuntu Desktop'da esa NetworkManager backend sifatida ishlatiladi.

Konfiguratsiya fayllari /etc/netplan/ katalogida, .yaml kengaytmasi bilan saqlanadi:

ls /etc/netplan/
50-cloud-init.yaml

Statik IP konfiguratsiyasi

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      addresses:
        - 192.168.1.122/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [192.168.1.1, 1.1.1.1]
        search: [internal.local]

Qismlari:

  • renderer — bu fayl uchun qaysi backend ishlatilishini aniq ko'rsatadi (networkd yoki NetworkManager);
  • addresses — interfeysga tayinlanadigan IP(lar), CIDR notatsiyasida;
  • routes — qo'shimcha marshrutlar; to: default — default gateway'ni belgilash usuli;
  • nameservers — DNS serverlar va domen qidiruv ro'yxati (search), bular systemd-resolvedga uzatiladi.

DHCP konfiguratsiyasi

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: true
      dhcp6: false

dhcp4: trueDHCP asoslari darsida ko'rilgan jarayonni ishga tushiradi; interfeys IP, gateway va DNS'ni avtomatik oladi.

Konfiguratsiyani xavfsiz qo'llash: try va apply

sudo netplan generate
sudo netplan try

netplan try — o'zgarishlarni darhol qo'llaydi, lekin agar foydalanuvchi belgilangan vaqt ichida (odatda 120 sekund) Enter bosib tasdiqlamasa, avtomatik ravishda oldingi konfiguratsiyaga qaytadi. Bu ayniqsa masofaviy SSH sessiyasi orqali marshrut yoki IP o'zgartirilganda hayotiy muhim: agar yangi konfiguratsiya ulanishni uzsa, server o'zi eski holatga qaytadi va konsolsiz ham tiklanadi.

sudo netplan apply

netplan apply esa darhol va qaytarilmasdan qo'llaydi — tasdiqlash oynasi yo'q.

Danger

Masofaviy serverda tarmoq konfiguratsiyasini o'zgartirganda har doim avval netplan try ishlating, hech qachon to'g'ridan-to'g'ri netplan apply bilan boshlamang. Agar konsol yoki hypervisor orqali mustaqil kirish imkoni bo'lmasa, xato konfiguratsiya serverni butunlay tarmoqdan uzib qo'yishi mumkin.

Konfiguratsiyani qo'llashdan oldin sintaksisni tekshirish:

sudo netplan generate
echo $?

generate faylni faqat backend konfiguratsiyasiga aylantiradi, hech narsani qo'llamaydi — YAML sintaksis xatosini tarmoqqa tegmasdan aniqlash uchun qulay birinchi qadam.

Joriy holatni ko'rish:

sudo netplan status

systemd-networkd: netplan orqasidagi kuch

Netplan networkd backend'ini tanlaganda, u aslida /run/systemd/network/ ichida .network va .link fayllarini generatsiya qiladi — bular haqiqatda systemd-networkd xizmati tomonidan o'qiladi:

sudo cat /run/systemd/network/10-netplan-enp0s3.network

Bu fayllarni qo'lda tahrirlamang — ular netplan tomonidan har applyda qayta yoziladi. Ular faqat diagnostika uchun o'qiladi, masalan generatsiya qilingan qiymat kutilgandek ekanini tasdiqlash uchun.

NetworkManager: nmcli va nmtui

Ba'zi o'rnatishlarda (ayniqsa Ubuntu Desktop, ba'zi bulut image'lari yoki renderer: NetworkManager tanlangan serverlarda) tarmoq bevosita NetworkManager orqali boshqariladi.

Holatni ko'rish

nmcli device status
DEVICE   TYPE      STATE      CONNECTION
enp0s3   ethernet  connected  Wired connection 1
lo       loopback  unmanaged  --

unmanaged holati — NetworkManager bu interfeysni umuman boshqarmayotganini bildiradi (masalan, lo, yoki konfiguratsiyada aniq chetlab o'tilgan interfeys).

Statik konfiguratsiya nmcli bilan

sudo nmcli connection modify "Wired connection 1" \
    ipv4.method manual \
    ipv4.addresses 192.168.1.122/24 \
    ipv4.gateway 192.168.1.1 \
    ipv4.dns "192.168.1.1,1.1.1.1"

sudo nmcli connection up "Wired connection 1"

connection modify konfiguratsiyani o'zgartiradi, lekin uni darhol qo'llamaydi; connection up o'sha profilni qayta faollashtirib, yangi sozlamani ishga tushiradi. Bu ikki bosqichli yondashuv xato konfiguratsiyani tekshirish uchun ozgina vaqt beradi, lekin netplan'dagi tryga o'xshash avtomatik qaytarish mexanizmi yo'q.

DHCP'ga qaytarish:

sudo nmcli connection modify "Wired connection 1" ipv4.method auto
sudo nmcli connection up "Wired connection 1"

nmtui: matnli menyu interfeysi

sudo nmtui

nmtui — konsolda ishlaydigan, klaviatura bilan boshqariladigan menyu; nmclidagi barcha imkoniyatlarni xotirada saqlamasdan, ko'rish orqali sozlash imkonini beradi — ayniqsa buyruq sintaksisini yodlamagan yoki tezkor, bir martalik o'zgarish kerak bo'lgan hollarda qulay.

Warning

Bir tizimda netplan renderer: NetworkManagerni tanlagan bo'lsa, nmcli/nmtui orqali qilingan o'zgarish netplan YAML faylida aks etmaydi. Keyingi netplan apply NetworkManager profilini qayta yozib, qo'lda qilingan o'zgarishni yo'qotishi mumkin. Doimiy o'zgarishni har doim "manba haqiqat" (source of truth) sifatida tanlangan bitta joyda — yoki netplan YAML, yoki NetworkManager profili — saqlang, ikkalasini aralashtirmang.

RHEL oilasi: nmcli va eski ifcfg-* fayllar

RHEL/CentOS/Fedora oilasida ham asosiy vosita — NetworkManager, xuddi shu nmcli/nmtui bilan boshqariladi. Tarixiy jihatdan konfiguratsiya /etc/sysconfig/network-scripts/ifcfg-<interfeys> fayllarida saqlangan:

TYPE=Ethernet
BOOTPROTO=static
NAME=enp0s3
DEVICE=enp0s3
IPADDR=192.168.1.122
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
ONBOOT=yes

Zamonaviy RHEL versiyalarida NetworkManager bu fayllarni ham o'qiy oladi, ham o'z ichki keyfile formatida (/etc/NetworkManager/system-connections/) saqlashi mumkin — aniq format versiya va konfiguratsiyaga bog'liq. Debian/Ubuntu'da bunga mos, ammo boshqa formatdagi eski yo'l — /etc/network/interfaces — hali ham ifupdown paketi o'rnatilgan tizimlarda ishlaydi, biroq zamonaviy Ubuntu Server o'rnatishlarida standart emas.

Note

Distributivlar orasida konfiguratsiya fayli joylashuvi va formati farq qiladi: Ubuntu Server — netplan YAML, RHEL oilasi — NetworkManager keyfile yoki ifcfg-*, ba'zi minimal tizimlar — /etc/network/interfaces. Umumiy qoidani distributivga xos tafsilot bilan aralashtirmang: har doim aynan qaysi vosita ishlatilayotganini (networkctl, nmcli, yoki cat /etc/os-release) avval tekshiring.

Amaliy ssenariy: netplan o'zgarishi serverni tarmoqdan uzib qo'yishi mumkin bo'lgan holat

Vazifa: ichki serverga qo'shimcha statik IP qo'shish kerak, lekin xato konfiguratsiya mavjud SSH ulanishini uzib qo'yishi mumkin.

Xavfsizlik eslatmasi: bu amal tarmoq konfiguratsiyasini o'zgartiradi. Iloji bo'lsa, avval izolyatsiya qilingan test VM'da mashq qiling; production serverda esa konsol yoki hypervisor konsoli orqali mustaqil kirish imkoni tayyor bo'lsingina davom eting.

1-qadam — joriy holatni saqlash:

sudo cp /etc/netplan/50-cloud-init.yaml ~/50-cloud-init.yaml.bak
ip -brief address show > ~/network-before.txt
ip route show >> ~/network-before.txt

2-qadam — YAML faylni tahrirlash: yangi manzilni addresses ro'yxatiga qo'shib qo'yish:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      addresses:
        - 192.168.1.122/24
        - 192.168.1.150/24
      dhcp4: false
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [192.168.1.1, 1.1.1.1]

3-qadam — sintaksisni tekshirish (hali qo'llamasdan):

sudo netplan generate
echo $?

4-qadam — xavfsiz qo'llash:

sudo netplan try

Terminalda yangi SSH sessiyasi ochib (eskisini yopmasdan), ulanish saqlanganini tasdiqlang, so'ng birinchi sessiyada Enter bosib o'zgarishni tasdiqlang.

5-qadam — tekshirish:

ip -brief address show
ping -c 3 192.168.1.1

6-qadam — muvaffaqiyatsizlik holatida rollback: agar netplan try avtomatik qaytarmagan bo'lsa yoki qo'lda qaytarish kerak bo'lsa:

sudo cp ~/50-cloud-init.yaml.bak /etc/netplan/50-cloud-init.yaml
sudo netplan apply

Ko'p uchraydigan xatolar

To'g'ridan-to'g'ri netplan apply bilan sinash

Xato konfiguratsiya darhol va qaytarilmasdan qo'llanadi. netplan try ana shu xavfni oldini olish uchun maxsus mo'ljallangan — uni chetlab o'tmang.

netplan bilan NetworkManager'ni bir vaqtda qo'lda aralashtirish

renderer: NetworkManager tanlangan interfeysga nmcli bilan qo'lda o'zgarish kiritish, so'ng keyingi netplan applyda uni yo'qotib qo'yish — ikkala tizim orasida "manba haqiqat"ni aniqlamaganlik natijasi.

YAML indentatsiyasidagi xatoni payqamaslik

netplan YAML formatida bo'sh joy soni ma'noli; noto'g'ri joylashtirilgan kalit butun blokni boshqa maydonga "o'tkazib" yuborishi mumkin. netplan generateni har doim tahrirdan keyin, applydan oldin ishlating.

systemd-networkd generatsiya qilgan faylni qo'lda tahrirlash

/run/systemd/network/ ichidagi fayllar keyingi netplan applyda qayta yoziladi; qo'lda kiritilgan o'zgarish yo'qoladi. O'zgarish har doim /etc/netplan/*.yaml faylida qilinishi kerak.

Amaliy mashqlar

  1. netplan status va ip -brief address show natijalarini solishtirib, joriy konfiguratsiya qaysi renderer (networkd yoki NetworkManager) orqali ishlayotganini aniqlang.
  2. Test VM'da mavjud netplan faylini backup qilib, DHCP interfeysni statik IP'ga o'zgartiring va o'zgarishni netplan try orqali xavfsiz qo'llang.
  3. nmcli device status va nmcli connection show natijalarini o'qib, unmanaged va connected holatlar orasidagi farqni tushuntiring.
  4. Yuqoridagi amaliy ssenariyni takrorlang: ataylab noto'g'ri indentatsiyali YAML yozing, xatoni netplan generate bilan toping, tuzating va faqat shundan keyin netplan try bilan qo'llang.

Xulosa

netplan — YAML orqali beriladigan yagona, deklarativ konfiguratsiya manbai, u orqasida esa haqiqiy ishni systemd-networkd yoki NetworkManager bajaradi. netplan try masofaviy o'zgarishlarni xavfsiz qiladi, chunki muvaffaqiyatsiz konfiguratsiya avtomatik qaytariladi. NetworkManager alohida ishlatilganda esa nmcli/nmtui xuddi shu vazifani bajaradi, lekin xavfsiz-sinov mexanizmisiz — shu sababli production serverda o'zgarishdan oldin har doim joriy holatni qo'lda saqlab qo'yish kerak. Endi manzil, marshrut va DNS doimiy saqlanishini bilgach, keyingi NTP server va chronyd sozlamalari darsida serverning vaqt sinxronizatsiyasi — ko'plab tarmoq protokollari (TLS, Kerberos, log tartiblash) to'g'ri ishlashi uchun zarur bo'lgan yana bir asosiy tarmoq xizmati — ko'riladi.

Manbalar