Roghanna beartais líonra a thuiscint le Calico

Roghanna beartais líonra a thuiscint le Calico

Soláthraíonn breiseán líonra Calico raon leathan de bheartais líonra le comhréir aontaithe chun hóstach crua-earraí, meaisíní fíorúla agus pods a chosaint. Is féidir na beartais seo a chur i bhfeidhm laistigh d’ainmspás nó is féidir iad a bheith ina mbeartais líonra domhanda a bhaineann leo críochphointe óstach (chun feidhmchláir a ritheann go díreach ar an ósta a chosaint - is féidir leis an ósta a bheith ina fhreastalaí nó ina mheaisín fíorúil) nó críochphointe ualaigh oibre (chun feidhmchláir atá ag rith i gcoimeádáin nó meaisíní fíorúla óstáilte a chosaint). Ligeann beartais Calico duit bearta slándála a chur i bhfeidhm ag pointí éagsúla i gcosán paicéad ag baint úsáide as roghanna ar nós preDNAT, unraracked, agus applyOnForward. Is féidir le tuiscint a fháil ar an gcaoi a n-oibríonn na roghanna seo cabhrú le slándáil agus feidhmíocht do chórais iomlán a fheabhsú. Míníonn an t-alt seo bunbhrí na roghanna beartais Calico seo (preDNAT, unraracked and applyOnForward) a chuirtear i bhfeidhm ar chríochphointí óstaigh, le béim ar cad a tharlaíonn i gcosáin phróiseála paicéid (slabhraí iptabels).

Glacann an t-alt seo leis go bhfuil tuiscint bhunúsach agat ar conas a oibríonn polasaithe líonra Kubernetes agus Calico. Mura bhfuil, molaimid iarracht a dhéanamh air Teagaisc ar bheartas líonra bunúsach и Teagaisc ar chosaint óstach ag baint úsáide as Calico roimh léamh an alt seo. Táimid ag súil freisin go mbeidh tuiscint bhunúsach agat ar an obair iptables i linux.

Calico beartas líonra domhanda ligeann sé duit sraith rialacha rochtana a chur i bhfeidhm de réir lipéid (ar ghrúpaí óstaigh agus ualaí oibre/pods). Tá sé seo an-úsáideach má úsáideann tú córais ilchineálacha le chéile - meaisíní fíorúla, córas go díreach ar chrua-earraí, nó bonneagar kubernetes. Ina theannta sin, is féidir leat do bhraisle (nóid) a chosaint ag baint úsáide as sraith de bheartais dhearbhaitheacha agus polasaithe líonra a chur i bhfeidhm ar thrácht ag teacht isteach (mar shampla, tríd an tseirbhís NodePorts nó IPanna Seachtracha).

Ar leibhéal bunúsach, nuair a nascann Calico pod leis an líonra (féach an léaráid thíos), nascann sé leis an ósta ag baint úsáide as comhéadan Ethernet fíorúil (veth). Tagann an trácht a sheolann an pod chuig an ósta ón gcomhéadan fíorúil seo agus déantar é a phróiseáil ar an mbealach céanna amhail is dá mba ó chomhéadan líonra fisiceach a tháinig sé. De réir réamhshocraithe, ainmníonn Calico na comhéadain seo caliXXX. Ós rud é go dtagann an trácht tríd an gcomhéadan fíorúil, téann sé trí iptables amhail is dá mbeadh an pod hop amháin ar shiúl. Mar sin, nuair a thagann trácht chuig/ó phod, cuirtear ar aghaidh é ó thaobh an óstaigh de.

Ar nód Kubernetes a ritheann Calico, is féidir leat comhéadan fíorúil (veth) a mhapáil chuig ualach oibre mar seo a leanas. Sa sampla thíos is féidir leat a fheiceáil go bhfuil veth#10 (calic1cbf1ca0f8) ceangailte le cnx-manager-* san ainmspás monatóireachta calico.

[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
...

Roghanna beartais líonra a thuiscint le Calico

Ós rud é go gcruthaíonn Calico comhéadan veth do gach ualach oibre, conas a chuireann sé polasaithe i bhfeidhm? Chun seo a dhéanamh, cruthaíonn Calico crúcaí i slabhraí éagsúla den chonair phróiseála paicéad ag baint úsáide as iptables.

Taispeánann an léaráid thíos na slabhraí a bhaineann le próiseáil paicéad in iptables (nó an fochóras glanscagaire). Nuair a thagann paicéad trí chomhéadan líonra, téann sé tríd an slabhra PREROOUTING ar dtús. Déantar cinneadh ródaithe ansin, agus bunaithe air seo, téann an paicéad trí INPUT (dírithe chuig próisis óstaigh) nó AR AGHAIDH (treoraithe chuig pod nó nód eile ar an líonra). Ón bpróiseas áitiúil, téann an paicéad tríd an slabhra OUTPUT agus ansin POSTROUTING sula seoltar síos an cábla.

Tabhair faoi deara gur eintiteas seachtrach é an pod freisin (ceangailte leis an veth) i dtéarmaí próiseála iptables. Déanaimis achoimre:

  • Téann trácht ar aghaidh (nat, treo nó chuig/ó pod) trí na slabhraí ROGHNÚ - AR AIS - POSTROUTING.
  • Téann an trácht chuig an bpróiseas óstach áitiúil tríd an slabhra PREROuting - IONCHUR.
  • Téann trácht ón bpróiseas óstach áitiúil tríd an slabhra ASCHUIR - POSTROUTING.

Roghanna beartais líonra a thuiscint le Calico

Soláthraíonn Calico roghanna beartais a ligeann duit polasaithe a chur i bhfeidhm thar na slabhraí go léir. Agus é sin san áireamh, déanaimis féachaint ar na roghanna éagsúla cumraíochta beartais atá ar fáil in Calico. Freagraíonn na huimhreacha sa liosta roghanna thíos do na huimhreacha sa léaráid thuas.

  1. Beartas críochphointe ualaigh oibre (pod).
  2. Beartas críochphointe an óstaigh
  3. Rogha ApplyOnForward
  4. Beartas PreDNAT
  5. Beartas gan Rian

Tosaímid trí féachaint ar an gcaoi a gcuirtear beartais i bhfeidhm ar chríochphointí ualaigh oibre (pods Kubernetes nó OpenStack VMs), agus ansin féachaint ar na roghanna beartais le haghaidh críochphointí óstaigh.

Críochphointí Ualach Oibre

Beartas Críochphointe Ualach Oibre (1)

Is rogha é seo chun do pods kubernetes a chosaint. Tacaíonn Calico le bheith ag obair le Kubernetes NetworkPolicy, ach cuireann sé beartais bhreise ar fáil freisin - Calico NetworkPolicy agus GlobalNetworkPolicy. Cruthaíonn Calico slabhra do gach pod (ualach oibre) agus crúcaí sna slabhraí INPUT agus ASCHUIR don ualach oibre chuig tábla scagaire an tslabhra FORWARD.

Críochphointí Óstach

Beartas Críochphointe Óstach (2)

Chomh maith le CNI (comhéadan líonra coimeádán), soláthraíonn beartais Calico an cumas an t-óstach féin a chosaint. In Calico, is féidir leat críochphointe óstach a chruthú trí mheascán de chomhéadan an óstaigh a shonrú agus, más gá, uimhreacha poirt. Baintear feidhm as forghníomhú beartais don aonán seo trí úsáid a bhaint as tábla scagairí sna slabhraí IONCHUR agus ASCHAIR. Mar a fheiceann tú ón léaráid, (2) baineann siad le próisis áitiúla ar an nód/óstach. Is é sin, má chruthaíonn tú polasaí a bhaineann le críochphointe an óstaigh, ní bheidh tionchar aige ar an trácht a théann chuig/ó do pods. Ach cuireann sé comhéadan/chomhréir aonair ar fáil chun trácht a bhlocáil do d’óstach agus do phodaí ag baint úsáide as polasaithe Calico. Simplíonn sé seo go mór an próiseas chun beartais a bhainistiú do líonra ilchineálach. Is cás úsáide tábhachtach eile é polasaithe críochphointe óstaigh a chumrú chun slándáil bhraisle a fheabhsú.

Beartas Iarratas a Dhéanamh ar Aghaidh (3)

Tá an rogha ApplyOnForward ar fáil i mbeartas líonra domhanda Calico chun go bhféadfar beartais a chur i bhfeidhm ar gach trácht a théann trí chríochphointe an óstaigh, lena n-áirítear trácht a chuirfidh an t-óstach ar aghaidh. Áirítear leis seo trácht a chuirtear ar aghaidh chuig an pod áitiúil nó áit ar bith eile ar an líonra. Éilíonn Calico go mbeidh an socrú seo cumasaithe do bheartais a úsáideann PreDNAT agus gan a bheith rianaithe, féach na hailt seo a leanas. Ina theannta sin, is féidir ApplyOnForward a úsáid chun monatóireacht a dhéanamh ar thrácht óstaigh i gcásanna ina n-úsáidtear ródaire fíorúil nó bogearraí NAT.

Tabhair faoi deara, más gá duit an polasaí líonra céanna a chur i bhfeidhm ar na próisis óstacha agus ar na pods, ansin ní gá duit an rogha ApplyOnForward a úsáid. Níl le déanamh agat ach lipéad a chruthú don óstaighphointe riachtanach agus don chríochphointe ualaigh oibre (pod). Tá Calico cliste go leor chun beartas a fhorfheidhmiú bunaithe ar lipéid, beag beann ar an gcineál críochphointe (hostendpoint nó ualach oibre).

Beartas PreDNAT (4)

I Kubernetes, is féidir calafoirt aonáin seirbhíse a nochtadh go seachtrach ag baint úsáide as an rogha NodePorts nó, go roghnach (nuair a bhíonn Calico á úsáid), trí iad a fhógairt ag baint úsáide as na roghanna Cnuasach IP nó IPanna Seachtracha. Déanann Kube-seachfhreastalaí cothromaíocht a dhéanamh ar thrácht ag teacht isteach atá ceangailte le seirbhís chuig pods na seirbhíse comhfhreagrach ag baint úsáide as DNAT. Mar gheall air seo, conas a fhorfheidhmíonn tú polasaithe don trácht ag teacht trí NodePorts? Chun a chinntiú go gcuirtear na beartais seo i bhfeidhm sula ndéanann DNAT an trácht a phróiseáil (ar léarscáiliú é idir an t-óstach:port agus an tseirbhís chomhfhreagrach), soláthraíonn Calico paraiméadar do globalNetworkPolicy ar a dtugtar "preDNAT: true".

Nuair a bhíonn réamh-DNAT cumasaithe, cuirtear na beartais seo i bhfeidhm i (4) sa léaráid - i tábla mangle an slabhra PREROUTING - díreach roimh DNAT. Ní leantar gnáth-ord na mbeartas anseo, ó tharla go gcuirtear na polasaithe seo i bhfeidhm i bhfad níos luaithe sa chosán próiseála tráchta. Mar sin féin, tá meas ag beartais preDNAT ar an ord iarratais eatarthu féin.

Agus tú ag cruthú polasaithe le réamh-DNAT, tá sé tábhachtach a bheith cúramach faoin trácht a theastaíonn uait a phróiseáil agus ligean don chuid is mó a dhiúltú. Ní dhéanfaidh beartas an óstaighphointe an trácht atá marcáilte mar ‘ceadaigh’ sa bheartas réamh-DNAT a sheiceáil a thuilleadh, agus leanfaidh an trácht a theipeann ar an mbeartas réamh-DNAT trí na slabhraí eile.
Tá sé éigeantach ag Calico an rogha applyOnForward a chumasú agus preDNAT á úsáid, toisc nach bhfuil ceann scríbe na tráchta roghnaithe fós de réir sainmhínithe. Is féidir trácht a dhíriú chuig an bpróiseas óstach, nó is féidir é a chur ar aghaidh chuig pod nó nód eile.

Beartas Gan Rianú (5)

Is féidir difríochtaí móra iompair a bheith ag líonraí agus feidhmchláir. I gcásanna foircneacha áirithe, féadfaidh feidhmchláir go leor nasc gearrthéarmach a ghiniúint. D’fhéadfadh sé seo a chur faoi deara go n-imeodh conntrack (cuid lárnach den chruach líonraithe Linux) as cuimhne. Go traidisiúnta, chun na cineálacha seo feidhmchlár a rith ar Linux, bheadh ​​ort conntrack a chumrú nó a dhíchumasú de láimh, nó rialacha iptables a scríobh chun conntrack a sheachbhóthar. Is rogha níos simplí agus níos éifeachtaí é beartas gan rian in Calico más mian leat naisc a phróiseáil chomh tapa agus is féidir. Mar shampla, má úsáideann tú ollmhór memcache nó mar bheart breise cosanta in aghaidh DDOS.

Léigh é seo blog post (Nó ár n-aistriúchán(e) chun tuilleadh faisnéise a fháil, lena n-áirítear tástálacha feidhmíochta a úsáideann beartas gan rian.

Nuair a shocraíonn tú an rogha "doNotTrack: true" i Calico globalNetworkPolicy, déantar beartas **neamh-rianaithe** de agus cuirtear i bhfeidhm é go han-luath sa phíblíne próiseála paicéad Linux. Ag féachaint ar an léaráid thuas, cuirtear beartais neamh-rianta i bhfeidhm sna slabhraí PREROOUTING agus OUTPUT sa tábla amh sula gcuirtear tús le rianú nasc (conntrack). Nuair a cheadaítear paicéad leis an mbeartas neamhrianaithe, marcáiltear é chun rianú nasc a dhíchumasú don phaicéad sin. Ciallaíonn sé:

  • Cuirtear an beartas neamhrianta i bhfeidhm ar bhonn in aghaidh an phacáiste. Níl aon choincheap ann maidir le nasc (nó sreabhadh). Tá roinnt iarmhairtí tábhachtacha ag baint le heaspa naisc:
  • Más mian leat trácht iarratais agus freagartha araon a cheadú, beidh riail uait maidir le dul isteach agus amach (toisc go n-úsáideann Calico go hiondúil conntrack chun trácht freagartha a mharcáil mar a cheadaítear).
  • Ní oibríonn an polasaí gan rian le haghaidh ualaí oibre Kubernetes (pods), mar sa chás seo níl aon bhealach ann chun an nasc atá ag dul as oifig ón pod a rianú.
  • Ní oibríonn TAN i gceart le paicéid neamhrianta (ó stórálann an eithne an léarscáiliú NAT in conntrack).
  • Nuair a bheidh an riail "ceadaigh do chách" sa bheartas gan rian, marcálfar na paicéid go léir mar phaicéad gan rian. Ní hé seo a theastaíonn uait i gcónaí, agus mar sin tá sé tábhachtach a bheith an-roghnach faoi na paicéid a cheadaítear le polasaithe neamhrianaithe (agus ligean don chuid is mó den trácht dul trí ghnáthbheartais rianaithe).
  • Cuirtear beartais gan rian i bhfeidhm ag tús na píblíne próiseála paicéid. Tá sé seo an-tábhachtach a thuiscint agus polasaithe Calico á gcruthú. Féadfaidh tú polasaí pod le hordú:1 a bheith agat agus polasaí neamhrianaithe le hordú:1000. Ní bheidh sé ábhar. Cuirfear an beartas Neamhrianta i bhfeidhm roimh an mbeartas don pod. Ní bhaineann beartais neamhrianaithe ach le hordú forghníomhaithe eatarthu féin.

Toisc gurb é ceann de chuspóirí an bheartais doNotTrack an polasaí a fhorfheidhmiú go han-luath sa phíblíne próiseála paicéad Linux, déanann Calico éigeantach an rogha applyOnForward a shonrú agus doNotTrack á úsáid. Ag tagairt don léaráid phróiseála paicéid, tabhair faoi deara go gcuirtear an beartas neamhrianaithe(5) i bhfeidhm roimh aon chinneadh ródaithe. Is féidir trácht a dhíriú chuig an bpróiseas óstach, nó is féidir é a chur ar aghaidh chuig pod nó nód eile.

Torthaí

D’fhéachamar ar na roghanna beartais éagsúla (Host endpoint, ApplyOnForward, preDNAT, agus Untracked) in Calico agus conas a chuirtear i bhfeidhm iad feadh chonair phróiseála na bpaicéad. Cuidíonn tuiscint ar an gcaoi a n-oibríonn siad le polasaithe éifeachtacha agus sábháilte a fhorbairt. Le Calico, is féidir leat beartas líonra domhanda a úsáid a bhaineann le lipéad (grúpa nóid agus pods) agus polasaithe a chur i bhfeidhm le paraiméadair éagsúla. Ligeann sé seo do ghairmithe slándála agus dearadh gréasáin “gach rud” (cineálacha críochphointí) a chosaint go háisiúil ag baint úsáide as teanga beartais amháin le beartais Calico.

Admháil: Ba mhaith liom buíochas a ghabháil Sean Crampton и Alexa Pollitta as a n-athbhreithniú agus faisnéis luachmhar.

Foinse: will.com

Add a comment