Bosh sahifa Wiki Network namespace

Network namespace

Network namespaceLinux yadrosida jarayonlar guruhiga mustaqil tarmoq steki ko‘rinishini beradigan izolyatsiya mexanizmidir. Har namespace o‘z interfeyslari, IP manzillari, marshrutlash jadvallari, qo‘shni jadvali, firewall qoidalari va ayrim socket sozlamalariga ega bo‘ladi. Konteynerlar bir xil yadrodan foydalansa ham, network namespace sabab o‘z tarmoq muhiti bordek ishlaydi.

Izolyatsiya mazmuni

Yangi namespace yaratilganda unda odatda faqat o‘chirilgan loopback interfeysi mavjud bo‘ladi. Xostdagi eth0 avtomatik ko‘rinmaydi. Jarayon qaysi namespacega biriktirilgan bo‘lsa, socket yaratish va marshrut qidiruvi shu muhitda bajariladi. Bir xil port raqami turli namespacelarda alohida tinglanishi mumkin, chunki socket jadvallari ajratilgan.

Namespace virtual mashina emas: yadro umumiy, CPU va xotira chegarasi esa boshqa cgroup yoki namespace mexanizmlari bilan boshqariladi. Yadrodagi zaiflik izolyatsiyani chetlab o‘tishi mumkin, shuning uchun u mutlaq xavfsizlik chegarasi sifatida qabul qilinmaydi.

Veth va ulanish

Ikki namespace o‘rtasida aloqa uchun ko‘pincha virtual Ethernet juftligi — veth ishlatiladi. Uning bir uchi konteyner namespaceiga, ikkinchisi xostdagi bridgega ulanadi. Bir uchdan yuborilgan kadr ikkinchisida qabul qilinadi, xuddi virtual kabeldek.

[container ns: eth0] <--- veth ---> [host: bridge] ---> physical NIC

Konteyner interfeysiga IP va default route beriladi. Xost bridge yoki router sifatida paketni boshqa konteyner, lokal tarmoq yoki internetga uzatadi. Tashqi chiqishda NAT qo‘llanishi mumkin. Kiruvchi trafik port mapping yoki load balancer orqali ichki manzilga yo‘naltiriladi.

Boshqaruv amallari

ip netns vositasi nomlangan namespace yaratish va unda buyruq bajarishga yordam beradi. Interfeys bir vaqtda faqat bitta network namespacega tegishli bo‘ladi; ko‘chirilgach, avvalgi muhitda ko‘rinmaydi. Jarayonning namespace identifikatori /proc orqali ham kuzatiladi.

Namespace o‘chirilishi uchun undagi jarayon va resurslar hayot davri boshqariladi. Nomlangan yozuvni o‘chirish ishlayotgan jarayon stekini darhol yo‘q qilmasligi mumkin. Orkestrator konteyner bilan birga veth, route va firewall qoidalarini tozalashi kerak; aks holda egasiz tarmoq obyektlari qoladi.

Konteyner tarmoqlari

Kubernetes kabi platformalarda har pod odatda bitta network namespacega ega, pod ichidagi konteynerlar esa shu stekni bo‘lishadi. Shu sabab ular localhost orqali gaplasha oladi va portlar bo‘yicha kelishishi kerak. CNI plagini interfeys yaratish, IP ajratish va marshrutni sozlashni bajaradi.

Network policy namespace mavjudligidan alohida nazoratdir. Izolyatsiya interfeys va route ko‘rinishini ajratadi, lekin tarmoq yo‘li yaratilgan bo‘lsa, trafikni o‘zi taqiqlamaydi. Firewall, eBPF yoki platforma siyosati qaysi endpointlar o‘zaro gaplashishini belgilaydi.

Diagnostika va xavfsizlik

Tarmoq muammosini xostdan tekshirish ba’zan noto‘g‘ri natija beradi, chunki xost va konteyner turli route hamda firewallni ko‘radi. Buyruq namespace ichida bajarilib, interfeys, manzil, route, DNS va socketlar o‘sha nuqtadan tekshiriladi. Paket capture vethning mos uchida yoki namespace ichida olinadi.

Imtiyozli jarayon namespace yaratishi yoki almashtirishi mumkin. Konteynerga CAP_NET_ADMIN berish uning ichki tarmoq sozlamalarini o‘zgartirish imkonini oshiradi; zarur bo‘lmasa capability olib tashlanadi. Xost network rejimi namespace izolyatsiyasini bekor qilib, konteynerni xost stekiga qo‘shadi va faqat aniq ehtiyojda ishlatiladi.

DNS joylashuvi

Namespace alohida tarmoq stekiga ega bo‘lsa-da, DNS sozlamasi ko‘pincha mount qilingan resolv.conf fayli yoki lokal stub orqali beriladi. Resolver manzili namespace ichidan yetib boriladigan bo‘lishi kerak. Xostdagi 127.0.0.53 loopback manzili konteynerning o‘z loopbackiga ishora qilishi sabab to‘g‘ridan-to‘g‘ri ishlamasligi mumkin; orkestrator mos DNS endpoint yaratadi.

Bog‘liq tushunchalar

Linux namespace, Virtual Ethernet, Container networking, Network interface, Bridge, CNI, Network policy