NetworkManager va netplan
Oldingi uchta maqola — IP va routing vositalari, DHCP klient va server asoslari va DNS vositalari — bitta ogohlantirishni bir necha marta takrorladi: ip buyrug'i bilan kiritilgan o'zgarish vaqtinchalik va qayta yuklashda yo'qoladi. Bu maqola aynan shu bo'shliqni to'ldiradi: IP, route va DNS sozlamalarini faylga doimiy va qayta takrorlanadigan tarzda qanday yozishni ko'rsatadi. Zamonaviy Ubuntu/Debian tizimlari buning uchun ikkita asosiy yo'l taklif qiladi: serverlarda ko'proq ishlatiladigan netplan va ish stantsiyalarida hamda ayrim server o'rnatmalarida ishlatiladigan NetworkManager.
netplan: bitta YAML fayl, ikkita backend
netplan tarmoqni o'zi boshqarmaydi; u faqat YAML konfiguratsiyasini o'qiydi va haqiqiy ishni bajaradigan ikkita backend’dan biri — systemd-networkd yoki NetworkManager uchun mos konfiguratsiya yaratadi. Ubuntu Server odatda backend sifatida systemd-networkd dan, Ubuntu Desktop esa odatda NetworkManager dan foydalanadi.
Konfiguratsiya fayllari /etc/netplan/ da, .yaml kengaytmasi bilan turadi:
Warning
50-cloud-init.yaml nomining o'zi ogohlantirish: bulut image’ida bu fayl har bir boot’da cloud-init tomonidan qayta yaratiladi, shuning uchun unga qo'lda kiritilgan o'zgarish o'sha paytda netplan apply ishlagan bo'lsa ham, keyingi qayta yuklashdan keyin indamay yo'qolishi mumkin. Bulut VM’ida o'zgarish saqlanib qolishi uchun uni yo raqami kattaroq alohida faylga yozing (masalan, leksik tartib bo'yicha ustun keladigan /etc/netplan/99-custom.yaml), yo cloud-init’ning tarmoqni boshqarishini o'chirib qo'ying:
Bundan tashqari, netplan YAML maxfiy ma’lumotlarni (masalan, WiFi kalitlarini) saqlashi mumkin, shuning uchun yangi versiyalar bu fayllarni hamma o'qiy olsa ogohlantiradi — ularni chmod 600 da saqlang.
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]
Qismlar:
renderer— bu fayl qaysi backend’dan foydalanishini aniq ko'rsatadi (networkdyokiNetworkManager);addresses— interfeysga beriladigan IP(lar), CIDR yozuvida;routes— qo'shimcha route’lar; default gatewayto: defaultorqali ko'rsatiladi;nameservers— DNS serverlar va domen qidiruv ro'yxati (search); ularsystemd-resolvedga uzatiladi.
DHCP konfiguratsiyasi
dhcp4: true DHCP klient va server asoslari maqolasida ko'rilgan jarayonni ishga tushiradi — interfeys o'z IP’si, gateway va DNS serverlarini avtomatik oladi.
Konfiguratsiyani xavfsiz qo'llash: try va apply
netplan try o'zgarishni darhol qo'llaydi, lekin foydalanuvchi belgilangan vaqt ichida (sukut bo'yicha 120 soniya) Enter ni bosib tasdiqlamasa, u avtomatik ravishda oldingi konfiguratsiyaga qaytadi. Bu masofaviy SSH sessiyasi orqali route yoki IP’larni o'zgartirishda eng muhim: yangi konfiguratsiya ulanishni uzib qo'ysa, server o'zini o'zi ortga qaytaradi va konsolga kirishsiz tiklanadi.
netplan apply esa aksincha, o'zgarishni darhol va doimiy qo'llaydi — hech qanday tasdiqlash oynasi yo'q.
Danger
Masofaviy serverda tarmoq konfiguratsiyasini o'zgartirganda har doim avval netplan try ni ishga tushiring — hech qachon to'g'ridan-to'g'ri netplan apply dan boshlamang. Agar konsol yoki hypervisor konsoli orqali mustaqil kirish yo'li bo'lmasa, noto'g'ri konfiguratsiya serverni tarmoqdan butunlay uzib qo'yishi mumkin.
Qo'llashdan oldin sintaksisni tekshirish:
generate faylni faqat backend’ning konfiguratsiya formatiga o'giradi — hech narsani qo'llamaydi. Jonli tarmoqqa tegmasdan YAML sintaksis xatosini ushlashning qulay birinchi qadami.
Joriy holatni ko'rish:
systemd-networkd: netplan ortidagi dvigatel
netplan networkd backend’idan foydalanadigan qilib sozlanganda u /run/systemd/network/ ichida .network va .link fayllarini yaratadi — systemd-networkd aynan shularni o'qiydi:
Bu fayllarni qo'lda tahrirlamang — netplan ularni har apply da qayta yozadi. Ularni faqat diagnostika uchun, yaratilgan qiymat kutilganiga mos kelishini tasdiqlash uchun o'qish foydali.
NetworkManager: nmcli va nmtui
Ayrim o'rnatmalarda — ayniqsa Ubuntu Desktop’da, ayrim bulut image’larida yoki renderer: NetworkManager tanlangan serverlarda — tarmoq to'g'ridan-to'g'ri NetworkManager orqali boshqariladi.
Holatni ko'rish
unmanaged holati NetworkManager bu interfeysni umuman boshqarmayotganini bildiradi — masalan, lo yoki konfiguratsiyada aniq chiqarib tashlangan interfeys.
nmcli bilan statik konfiguratsiya
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 shu profilni qayta faollashtiradi va yangi sozlamalarni kuchga kiritadi. Bu ikki bosqichli yondashuv o'zgarish kuchga kirishidan oldin uni ko'rib chiqish uchun qisqa imkoniyat beradi, lekin unda netplan’ning try kabi avtomatik ortga 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
nmtui — konsolda ishlaydigan, klaviatura bilan boshqariladigan menyu; u aniq buyruq sintaksisini yodlashni talab qilmasdan nmcli bilan bir xil imkoniyatlarni beradi. Tezkor, bir martalik o'zgarish uchun yoki aniq flag'lar yodingizda bo'lmaganda qulay.
Warning
Agar tizimning netplan konfiguratsiyasida renderer: NetworkManager tanlangan bo'lsa, nmcli/nmtui orqali kiritilgan o'zgarish netplan YAML faylida ko'rinmaydi. Navbatdagi netplan apply NetworkManager profilini qayta yozib, qo'lda kiritilgan o'zgarishni indamay tashlab yuborishi mumkin. Har doim faqat bitta joyni — yo netplan YAML’ni, yo NetworkManager profilini — yagona haqiqat manbai sifatida saqlang va ikkalasini aralashtirmang.
RHEL oilasi: nmcli va eski ifcfg-* fayllari
RHEL/CentOS/Fedora oilasida ham asosiy vosita NetworkManager bo'lib, xuddi shu nmcli/nmtui bilan boshqariladi. Tarixan 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 versiyalari bu fayllarni o'qiy oladi, lekin NetworkManager konfiguratsiyani o'zining keyfile formatida (/etc/NetworkManager/system-connections/) ham saqlashi mumkin — aniq format versiya va konfiguratsiyaga bog'liq. Debian/Ubuntu’da unga teng, lekin boshqa formatdagi eski yo'l — /etc/network/interfaces — ifupdown paketi o'rnatilgan tizimlarda hali ham ishlaydi, lekin zamonaviy Ubuntu Server o'rnatmalarida sukut bo'yicha ishlatilmaydi.
Note
Konfiguratsiya fayllarining joylashuvi va formati distributivlar bo'yicha farq qiladi: Ubuntu Server netplan YAML’dan, RHEL oilasi NetworkManager keyfile yoki ifcfg-* dan, ayrim minimal tizimlar esa /etc/network/interfaces dan foydalanadi. Umumiy qoidani distributivga xos tafsilot bilan aralashtirmang — har doim avval aslida qaysi vosita ishlatilayotganini tekshiring (networkctl, nmcli yoki cat /etc/os-release).
Amaliy vaziyat: serverni tarmoqdan uzib qo'yishi mumkin bo'lgan netplan o'zgarishi
Vazifa: ichki serverga qo'shimcha statik IP kerak, lekin konfiguratsiyadagi xato mavjud SSH ulanishini uzib qo'yishi mumkin.
Xavfsizlik eslatmasi: bu amal tarmoq konfiguratsiyasini o'zgartiradi. Iloji bo'lsa, avval uni izolyatsiyalangan sinov VM’ida mashq qiling; production serverda esa faqat konsol yoki hypervisor konsoli orqali mustaqil kirish tayyor bo'lgandan keyingina 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'shing:
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):
4-qadam — xavfsiz qo'llash:
Boshqa terminalda yangi SSH sessiyasini oching (mavjudini yopmasdan) va ulanish hali ishlayotganini tasdiqlang, so'ng o'zgarishni tasdiqlash uchun birinchi sessiyada Enter ni bosing.
5-qadam — tekshirish:
6-qadam — muvaffaqiyatsizlikda ortga qaytarish: agar netplan try avtomatik ortga qaytmagan bo'lsa yoki qo'lda ortga qaytarish kerak bo'lsa:
Keng tarqalgan xatolar
To'g'ridan-to'g'ri netplan apply bilan sinash
Noto'g'ri konfiguratsiya darhol va doimiy qo'llanadi. netplan try aynan shu xavfdan qochish uchun mavjud — uni o'tkazib yubormang.
NetworkManager’dagi qo'lda o'zgarishlarni netplan bilan aralashtirish
renderer: NetworkManager ostida boshqariladigan interfeysda nmcli bilan qo'lda o'zgarish kiritib, keyingi netplan apply da uni yo'qotish — qaysi tizim haqiqat manbai ekani hech qachon hal qilinmaganining to'g'ridan-to'g'ri natijasi.
YAML chekinish xatosini o'tkazib yuborish
netplan’ning YAML formatida bo'sh joylar ma’noga ega; noto'g'ri joylashgan kalit butun blokni indamay noto'g'ri maydon ostiga ko'chirib qo'yishi mumkin. Tahrirdan so'ng, apply dan oldin har doim netplan generate ni ishga tushiring.
systemd-networkd yaratgan faylni qo'lda tahrirlash
/run/systemd/network/ ichidagi fayllar navbatdagi netplan apply da qayta yoziladi; u yerdagi qo'lda tahrir yo'qoladi. O'zgarishlar har doim /etc/netplan/*.yaml ga tegishli.
Intervyuda
Tayyor turish foydali bo'lgan intervyu savoli: "ko'p Ubuntu Server o'rnatmalarida faqat bitta backend bo'lsa, netplan’ga umuman renderer maydoni nega kerak?" To'g'ri javob shuki, renderer faqat nima sozlanishini emas, ish vaqtida uni qaysi daemon amalga oshirishini ham belgilaydi — systemd-networkd va NetworkManager ning reload semantikasi, holat haqida xabar berish usullari (networkctl va nmcli) har xil va noto'g'ri backend’ni nazarda tutgan vositalarni aralashtirish "o'zgarishim kuchga kirmadi" degan chalkashlikning keng tarqalgan manbai. Renderer’ni aniq e’lon qilish interfeysga aslida qaysi daemon egalik qilishi haqidagi noaniqlikni yo'qotadi.
Mashqlar
- Joriy konfiguratsiya qaysi renderer’dan (
networkdyokiNetworkManager) foydalanishini aniqlash uchunnetplan statusvaip -brief address showchiqishlarini solishtiring. - Sinov VM’ida mavjud netplan faylining zaxira nusxasini oling, DHCP interfeysini statik IP’ga o'zgartiring va o'zgarishni
netplan trybilan xavfsiz qo'llang. nmcli device statusvanmcli connection showchiqishlarini o'qing vaunmanagedhamdaconnectedholatlari o'rtasidagi farqni tushuntiring.- Yuqoridagi amaliy vaziyatni takrorlang: ataylab noto'g'ri chekinishli YAML yozing, xatoni
netplan generatebilan toping, uni tuzating va faqat shundan keyinnetplan trybilan qo'llang.
Mashqni bajardim deyish uchun: 4-mashqda netplan generate har qanday o'zgarish jonli tarmoqqa yetib borishidan oldin sintaksis xatosi haqida xabar berib, noldan farqli holat bilan chiqishi kerak — agar xato ushlanishidan oldin netplan try ishga tushib ketsa, bir qadam ortga qayting va chekinishni yana tekshiring.
Manbalar
- Netplan — rasmiy hujjatlar: https://netplan.readthedocs.io/en/stable/
- Netplan —
netplan-try(8): https://netplan.readthedocs.io/en/stable/netplan-try/ - Ubuntu Server — Netplan tarmoq konfiguratsiyasi: https://ubuntu.com/server/docs/netplan-introduction
- freedesktop.org:
systemd.network(5): https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html - GNOME/NetworkManager —
nmcli(1): https://networkmanager.dev/docs/api/latest/nmcli.html - Red Hat Enterprise Linux 9 — tarmoqni sozlash va boshqarish: https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/