Ngartos Pilihan Penegak Kabijakan Jaringan sareng Calico

Ngartos Pilihan Penegak Kabijakan Jaringan sareng Calico

Plugin jaringan Calico nyayogikeun rupa-rupa kawijakan jaringan sareng sintaksis anu ngahijikeun pikeun ngajagi host hardware, mesin virtual sareng pods. Kabijakan ieu tiasa diterapkeun dina rohangan ngaran atanapi janten kawijakan jaringan global anu berlaku titik tungtung host (pikeun ngajaga aplikasi ngajalankeun langsung dina host - host tiasa janten server atanapi mesin virtual) atanapi workload tungtung (pikeun ngajaga aplikasi ngajalankeun dina peti atawa mesin virtual hosted). Kabijakan Calico ngamungkinkeun anjeun pikeun nerapkeun ukuran kaamanan dina sababaraha titik dina jalur pakét nganggo pilihan sapertos preDNAT, unraracked, sareng applyOnForward. Ngartos kumaha pilihan ieu tiasa ngabantosan ningkatkeun kaamanan sareng kinerja sistem anjeun sadayana. Artikel ieu ngécéskeun hakekat pilihan kawijakan Calico ieu (preDNAT, unraracked na applyOnForward) dilarapkeun ka titik tungtung host, kalawan tekenan kana naon anu lumangsung dina jalur processing pakét (ranté iptabels).

Tulisan ieu nganggap yén anjeun gaduh pamahaman dasar ngeunaan cara jalanna kawijakan jaringan Kubernetes sareng Calico. Upami henteu, kami nyarankeun nyobian éta tutorial kawijakan jaringan dasar и tutorial panyalindungan host ngagunakeun Calico saméméh maca artikel ieu. Kami ogé ngarepkeun anjeun gaduh pamahaman dasar ngeunaan padamelan éta iptables dina linux.

Calico kawijakan jaringan global ngidinan Anjeun pikeun nerapkeun sakumpulan aturan aksés ku labél (ka grup sarwa sarta workloads / pods). Ieu mangpaat pisan lamun ngagunakeun sistem hétérogén babarengan - mesin virtual, sistem langsung dina hardware, atawa infrastruktur kubernetes. Salaku tambahan, anjeun tiasa ngajagi kluster anjeun (titik) nganggo sakumpulan kawijakan déklaratif sareng nerapkeun kawijakan jaringan pikeun lalu lintas anu datang (contona, ngalangkungan jasa NodePorts atanapi External IPs).

Dina tingkat dasar, nalika Calico nyambungkeun pod ka jaringan (tingali diagram handap), nyambungkeun ka host ngagunakeun panganteur Ethernet virtual (veth). Lalu lintas anu dikirim ku pod datang ka host tina antarmuka maya ieu sareng diprosés dina cara anu sami saolah-olah éta asalna tina antarmuka jaringan fisik. Sacara standar, Calico ngaranan panganteur ieu caliXXX. Kusabab lalulintas asalna ngaliwatan panganteur virtual, eta ngaliwatan iptables saolah-olah pod éta hiji hop jauh. Ku alatan éta, lamun lalulintas datang ka / ti pod a, eta diteruskeun tina sudut pandang host urang.

Dina titik Kubernetes ngajalankeun Calico, anjeun tiasa peta antarbeungeut virtual (veth) kana beban kerja sapertos kieu. Dina conto di handap, anjeun tiasa ningali yén veth # 10 (calic1cbf1ca0f8) disambungkeun ka cnx-manager-* dina namespace calico-monitoring.

[centos@ip-172-31-31-46 K8S]$ sudo ip a
...
10: calic1cbf1ca0f8@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UP group default
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 5
    inet6 fe80::ecee:eeff:feee:eeee/64 scope link
       valid_lft forever preferred_lft forever
...

[centos@ip-172-31-31-46 K8S]$ calicoctl get wep --all-namespaces
...
calico-monitoring cnx-manager-8f778bd66-lz45m                            ip-172-31-31-46.ec2.internal 192.168.103.134/32
calic1cbf1ca0f8
...

Ngartos Pilihan Penegak Kabijakan Jaringan sareng Calico

Nunjukkeun yen Calico nyiptakeun panganteur veth pikeun tiap workload, kumaha eta ngalaksanakeun kawijakan? Jang ngalampahkeun ieu, Calico nyiptakeun kait dina sagala rupa ranté jalur ngolah pakét nganggo iptables.

Diagram di handap nembongkeun ranté aub dina ngolah pakét dina iptables (atawa subsistem netfilter). Nalika pakét datang ngaliwatan antarmuka jaringan, éta mimitina ngaliwatan ranté PREROUTING. A kaputusan routing lajeng dijieun, sarta dumasar kana ieu, pakét ngaliwatan boh INPUT (diarahkeun ka prosés host) atanapi FORWARD (diarahkeun ka pod atawa titik sejen dina jaringan). Tina prosés lokal, pakét ngalangkungan OUTPUT teras POSTROUTING ranté sateuacan dikirimkeun kabel.

Catet yén pod ogé mangrupa éntitas éksternal (dihubungkeun jeung veth) dina watesan processing iptables. Hayu urang nyimpulkeun:

  • Lalu lintas diteruskeun (nat, routed atawa ka/ti pod a) ngaliwatan ranté PREROUTING - FORWARD - POSTROUTING.
  • Lalu lintas ka prosés host lokal ngaliwatan ranté PREROUTING - INPUT.
  • Lalu lintas tina prosés host lokal ngalangkungan ranté OUTPUT - POSTROUTING.

Ngartos Pilihan Penegak Kabijakan Jaringan sareng Calico

Calico nyayogikeun pilihan kawijakan anu ngamungkinkeun anjeun nerapkeun kawijakan dina sadaya ranté. Kalayan émut éta, hayu urang tingali pilihan konfigurasi kawijakan anu béda anu aya di Calico. Angka dina daptar pilihan di handap pakait sareng nomer dina diagram di luhur.

  1. Kawijakan workload endpoint (pod).
  2. Kawijakan titik tungtung host
  3. Pilihan ApplyOnForward
  4. Kawijakan PreDNAT
  5. Kawijakan Untracked

Hayu urang mimitian ku ningali kumaha kawijakan diterapkeun kana titik tungtung beban kerja (kubernetes pods atanapi OpenStack VMs), teras tingali pilihan kawijakan pikeun titik tungtung host.

Workload Endpoints

Kabijakan Titik Tungtung Tugas (1)

Ieu pilihan pikeun ngajaga pods kubernetes Anjeun. Calico ngadukung gawé bareng Kubernetes NetworkPolicy, tapi ogé nyayogikeun kawijakan tambahan - Calico NetworkPolicy sareng GlobalNetworkPolicy. Calico nyiptakeun ranté pikeun tiap pod (beban pagawean) jeung kait dina ranté INPUT jeung OUTPUT pikeun workload kana tabel filter ranté FORWARD.

Host Endpoints

Kabijakan Endpoint Host (2)

Salian CNI (antarmuka jaringan wadahna), kawijakan Calico nyadiakeun kamampuhan pikeun ngajaga host sorangan. Dina Calico, Anjeun bisa nyieun hiji titik tungtung host ku nangtukeun kombinasi antarbeungeut host na, lamun perlu, nomer port. Penegak kawijakan pikeun éntitas ieu dihontal nganggo méja saringan dina ranté INPUT sareng OUTPUT. Sakumaha anjeun tiasa tingali tina diagram, (2) aranjeunna dilarapkeun ka prosés lokal dina titik / host. Hartina, mun anjeun nyieun kawijakan anu lumaku pikeun host endpoint, éta moal mangaruhan lalulintas bade / ti pods Anjeun. Tapi éta nyayogikeun antarmuka / sintaksis tunggal pikeun ngahalangan lalu lintas pikeun host sareng pods anjeun nganggo kawijakan Calico. Ieu pisan nyederhanakeun prosés ngatur kawijakan pikeun jaringan hétérogén. Ngonpigurasikeun kawijakan titik tungtung host pikeun ningkatkeun kaamanan klaster mangrupikeun kasus panggunaan anu penting.

Kawijakan ApplyOnForward (3)

Pilihan ApplyOnForward sadia dina kawijakan jaringan global Calico pikeun ngidinan kawijakan pikeun dilarapkeun ka sadaya lalulintas ngaliwatan titik tungtung host, kaasup lalulintas nu bakal diteruskeun ku host. Ieu kalebet lalu lintas anu diteruskeun ka pod lokal atanapi dimana waé dina jaringan. Calico merlukeun setelan ieu diaktipkeun pikeun kawijakan maké PreDNAT na untracked, tingali bagian handap. Salaku tambahan, ApplyOnForward tiasa dianggo pikeun ngawas lalu lintas host dina kasus dimana router virtual atanapi software NAT dianggo.

Catet yén upami anjeun kedah nerapkeun kawijakan jaringan anu sami pikeun prosés host sareng pods, maka anjeun henteu kedah nganggo pilihan ApplyOnForward. Sadaya anu anjeun kedah laksanakeun nyaéta nyiptakeun labél pikeun hostendpoint sareng workload endpoint (pod). Calico cukup pinter pikeun ngalaksanakeun kawijakan dumasar kana labél, henteu paduli jinis titik (hostendpoint atanapi beban kerja).

Kawijakan PreDNAT (4)

Dina Kubernetes, palabuhan éntitas jasa tiasa kakeunaan sacara éksternal nganggo pilihan NodePorts atanapi, opsional (nalika nganggo Calico), ku ngaiklankeunana nganggo pilihan IP Kluster atanapi IP Eksternal. Kube-proxy nyaimbangkeun lalu lintas asup anu kabeungkeut kana jasa kana pods tina jasa anu saluyu nganggo DNAT. Kusabab ieu, kumaha anjeun ngalaksanakeun kawijakan pikeun lalu lintas anu ngalangkungan NodePorts? Pikeun mastikeun yén kawijakan ieu diterapkeun sateuacan lalu lintas diolah ku DNAT (anu mangrupikeun pemetaan antara host: port sareng jasa anu saluyu), Calico nyayogikeun parameter pikeun globalNetworkPolicy anu disebut "preDNAT: leres".

Nalika pre-DNAT diaktipkeun, kawijakan ieu dilaksanakeun di (4) dina diagram-dina tabel mangle tina ranté PREROUTING-langsung saméméh DNAT. Urutan kawijakan dawam teu dituturkeun di dieu, saprak aplikasi kawijakan ieu lumangsung leuwih saméméhna dina jalur processing lalulintas. Sanajan kitu, kawijakan preDNAT hormat urutan aplikasi diantara sorangan.

Nalika nyieun kawijakan kalawan pre-DNAT, hal anu penting pikeun ati ngeunaan lalulintas rék ngolah sarta ngidinan mayoritas ditolak. Lalu lintas anu ditandaan salaku 'ngawenangkeun' dina kawijakan pre-DNAT moal deui dipariksa ku kawijakan hostendpoint, sedengkeun lalu lintas anu gagal kawijakan pre-DNAT bakal diteruskeun ngaliwatan ranté sésana.
Calico parantos ngawajibkeun pikeun ngaktipkeun pilihan applyOnForward nalika nganggo preDNAT, sabab ku harti tujuan lalu lintas henteu acan dipilih. Lalu lintas tiasa diarahkeun kana prosés host, atanapi tiasa diteruskeun ka pod atanapi titik anu sanés.

Kabijakan Henteu Dilacak (5)

Jaringan sareng aplikasi tiasa gaduh bédana ageung dina kabiasaan. Dina sababaraha kasus ekstrim, aplikasi bisa ngahasilkeun loba sambungan pondok-cicing. Ieu tiasa nyababkeun conntrack (komponén inti tina tumpukan jaringan Linux) kahabisan mémori. Sacara tradisional, pikeun ngajalankeun jinis aplikasi ieu dina Linux, anjeun kedah ngonpigurasikeun atanapi nganonaktipkeun conntrack sacara manual, atanapi nyerat aturan iptables pikeun ngalangkungan conntrack. Kabijakan anu teu dilacak di Calico mangrupikeun pilihan anu langkung saderhana sareng langkung efisien upami anjeun hoyong ngolah sambungan gancang-gancang. Contona, upami anjeun nganggo masif memcache atawa salaku ukuran tambahan panyalindungan ngalawan DDOS.

Baca ieu post blog (atawa tarjamah urang) pikeun inpo nu leuwih lengkep, kaasup tés kinerja maké kawijakan untracked.

Nalika anjeun nyetél pilihan "doNotTrack: leres" dina Calico globalNetworkPolicy, éta janten kawijakan **untracked** sareng diterapkeun pisan dina jalur pipa pangolahan pakét Linux. Ningali diagram di luhur, kawijakan anu teu dilacak diterapkeun dina ranté PREROUTING sareng OUTPUT dina tabel atah sateuacan tracking sambungan (conntrack) dimimitian. Nalika pakét diidinan ku kawijakan anu teu dilacak, éta ditandaan pikeun nganonaktipkeun tracking sambungan pikeun pakét éta. Eta hartina:

  • Kabijakan anu teu dilacak diterapkeun dina dasar per-pakét. Henteu aya konsép sambungan (atanapi aliran). Kurangna sambungan ngagaduhan sababaraha akibat anu penting:
  • Upami anjeun hoyong ngijinkeun lalu lintas pamundut sareng réspon, anjeun peryogi aturan pikeun inbound sareng outbound (sabab Calico biasana nganggo conntrack pikeun nandaan lalu lintas réspon anu diidinan).
  • Kabijakan anu teu dilacak henteu tiasa dianggo pikeun beban kerja Kubernetes (pods), sabab dina hal ieu teu aya jalan pikeun ngalacak sambungan kaluar tina pod.
  • NAT henteu jalan leres sareng pakét anu henteu dilacak (saprak kernel nyimpen pemetaan NAT dina conntrack).
  • Nalika ngalangkungan aturan "ngidinan sadayana" dina kawijakan anu teu dilacak, sadaya pakét bakal ditandaan salaku henteu dilacak. Ieu ampir sok teu naon rék, jadi hal anu penting pikeun jadi pisan selektif ngeunaan pakét diwenangkeun ku kawijakan untracked (jeung ngidinan paling lalulintas ngaliwatan kawijakan dilacak normal).
  • Kabijakan anu teu dilacak diterapkeun dina awal jalur pipa ngolah pakét. Ieu penting pisan pikeun ngarti nalika nyieun kawijakan Calico. Anjeun tiasa gaduh kawijakan pod kalawan urutan: 1 sarta kawijakan untracked kalawan urutan: 1000. Éta moal masalah. Kawijakan Untracked bakal diterapkeun sateuacan kawijakan pikeun pod. Kabijakan anu teu dilacak ngan ukur hormat kana tatanan palaksanaan.

Kusabab salah sahiji tujuan kabijakan doNotTrack nyaéta pikeun ngalaksanakeun kabijakan awal pisan dina jalur pipa pangolahan pakét Linux, Calico ngajadikeun wajib pikeun netepkeun pilihan applyOnForward nalika nganggo doNotTrack. Ngarujuk kana diagram pamrosésan pakét, perhatikeun yén kawijakan anu henteu dilacak (5) diterapkeun sateuacan kaputusan routing. Lalu lintas tiasa diarahkeun kana prosés host, atanapi tiasa diteruskeun ka pod atanapi titik anu sanés.

hasil

Kami ningali rupa-rupa pilihan kawijakan (Host endpoint, ApplyOnForward, preDNAT, sareng Untracked) di Calico sareng kumaha aranjeunna diterapkeun sapanjang jalur pangolahan pakét. Ngartos kumaha aranjeunna tiasa dianggo ngabantosan ngembangkeun kawijakan anu efektif sareng aman. Kalayan Calico anjeun tiasa nganggo kawijakan jaringan global anu manglaku ka labél (kelompok titik sareng pods) sareng nerapkeun kawijakan sareng sababaraha parameter. Hal ieu ngamungkinkeun para profésional desain jaringan sareng kaamanan pikeun ngalindungan "sagala" (tipe endpoint) sakaligus nganggo basa kawijakan tunggal sareng kawijakan Calico.

Pangakuan: Abdi ngahaturkeun nuhun Sean Crampton и Alexa Pollitta pikeun review maranéhanana sarta informasi berharga.

sumber: www.habr.com

Tambahkeun komentar