Taispeánann do ríomhaire glúine tollán glas, deir log an chliaint gur brúdh róid, agus is é an t-aon seoladh a fhreagraíonn ná IP tolláin an fhreastalaí VPN féin. Faigheann pinganna níos faide bás is cuma cad a dhíríonn tú air, cibé acu ClusterIP é, seoladh pod eile nó óstainm poiblí. Tá an teaglaim sin diagnóiseach seach doiléir: oibríonn dí-theaghlach, agus ní oibríonn an dara léim.

Tháinig mé trasna air seo ar nód Debian ag rith íomhá OpenVPN suiteáilte le chart, agus ba é an tollán an chuid éasca. Fuair an cliant léas 10.8.0.x, d'fhreagair 10.8.0.1, agus chuaigh 10.96.0.10, seirbhís DNS an bhraisle, thar am. Ní raibh aon rud i log an fhreastalaí ag breathnú míshláintiúil, agus sin go díreach an fáth a dtosaíonn daoine ag athscríobh rialacha iptables nach raibh orthu riamh teagmháil leo.

Is ródaire é pod VPN, agus is fiú é sin a rá go lom. Tagann paicéid chriptithe isteach, dítheanntar iad i namespace líonra an phod féin, agus ansin caithfidh siad imeacht trí chomhéadan eile. Diúltaíonn Linux don dara céim sin mura bhfuil aistriú cumasaithe laistigh den namespace sin féin.

Cad is féidir leis an gcliant a bhaint amach agus cad nach féidir

Baineann an seoladh a fhreagraíonn le críochphointe an tolláin, agus tá sé ag an bpróiseas VPN go háitiúil, mar sin níl aon aistriú i gceist ar chor ar bith. Teastaíonn ó gach rud eile, lena n-áirítear pod eile, VIP seirbhíse nó an t-idirlíon, go n-aistreodh an t-eithne paicéad ó tun0 go eth0. Nuair a dhiúltaítear don aistriú sin, is é an tsiomptóm ciúnas aonfhoirmeach seach diúltú, óir ní ghineann aon rud earráid ICMP ar ais síos an tollán. Faigheann tú amanna caite, ní teachtaireachtaí neamhshroichte, agus sin an leid nach bhfuil aon duine ag ródú ar chor ar bith.

Cúngaíonn dhá nóiméad aicmiúcháin an ciseal. Má theipeann ar ainmneacha DNS agus pinganna amha a dhírítear ar IP seirbhíse ag éirí leo, tá an fhadhb i bpluiméireacht DNS, ní san aistriú. Má théann gach ceann scríbe thar sheoladh an phiara thar am, lena n-áirítear IP lom, tosaigh ag an namespace.

Léigh an socrú laistigh den namespace

Faigheann gach pod a namespace líonra féin, agus is sysctl in aghaidh an namespace é net.ipv4.ip_forward. Ní insíonn sé aon rud duit faoin gcoimeádán a athrú ar an nód, agus is bealach iontaofa é tráthnóna a chaitheamh ar an meaisín mícheart.

kubectl exec -it deploy/openvpn -- sysctl net.ipv4.ip_forward
# net.ipv4.ip_forward = 0

Deimhníonn nialas an diagnóis. Ní fhaightear an luach le hoidhreacht ó chumraíocht rite an nóid ach an oiread: tosaíonn sé ó réamhshocrú na híomhá gach uair a chruthaítear coimeádán. Mar sin imíonn réiteach a cuireadh i bhfeidhm de láimh le kubectl exec ... sysctl -w ag an gcéad atosú eile agus tagann sé ar ais mar locht a bhíonn eatramhach.

É a chumasú ionas go gcoimeádfaidh an mhanifest é

Is é an rogha marthanach coimeádán init a ritheann sa phod sandbox céanna agus a scríobhann an luach sula dtosaíonn coimeádán an VPN. Roinneann coimeádáin i bpod namespace líonra amháin, mar sin téann an socrú isteach sa phríomhchoimeádán.

initContainers:
- name: enable-forwarding
  image: busybox:1.36
  command: ["sysctl", "-w", "net.ipv4.ip_forward=1"]
  securityContext:
    privileged: true

Is é an privileged: true sin an líne a gcuireann léirmheastóirí ina coinne, agus tá an ceart acu. Teastaíonn pribhléid nó cumas caol teoranta chun sysctl a scríobh, agus féadfaidh braisle a ritheann an Pod Security Standard srianta coimeádán init pribhléideach a dhiúltú amach is amach. Má dhiúltaíonn admission don phod, foghlaimíonn tú ag am an chruthaithe é, rud atá ar a laghad macánta agus éasca le léamh.

Is é an rogha níos glaine an liosta securityContext.sysctls ar leibhéal an phod, a ligeann don kubelet sysctls le namespace a chur i bhfeidhm gan pribhléid a thabhairt d'aon choimeádán. Ní chlúdaíonn sé ach ainmneacha ar liosta ceadaithe na braisle. Braitheann sé ar conas a cumraíodh an kubelet an bhfuil net.ipv4.ip_forward ar an liosta sin, agus diúltaítear do phod a iarrann sysctl lasmuigh di ag admission nó fanann sé sáinnithe i CreateContainerConfigError agus an sandbox á atriail. Seiceáil an liosta ceadaithe sula dtuigeann tú go bhfuil an réimse briste.

Sula dtógfaidh tú ceachtar den dá chur chuige de láimh, féach an nochtann an chart an lasc cheana féin, go minic mar rud éigin cosúil le ipForwardInitContainer: true. Má úsáideann tú luach an chart fanann do chomhad sáraithe beag agus maireann sé an chéad uasghrádú eile, rud nach ndéanann eagarthóireacht Deployment a phaisteáiltear de láimh.

An dara leath: cosán ar ais agus beartas

Tá aistriú cumasaithe riachtanach, ní leor. Má úsáideann cliaint comhthiomsú príobháideach nach bhfuil aon ród ag líonra na braisle chuige, ní féidir le freagraí a mbealach a aimsiú ar ais isteach sa tollán, agus caithfidh an pod an trácht sin a mhaisiú i dtreo a chinn scríbe.

Suíonn beartas air sin. Déantar measúnú ar oibiachtú NetworkPolicy agus ar rialacha balla dóiteáin an néil i gcoinne an tseolta fhoinse a iompraíonn paicéad tar éis aistriúcháin, mar sin féadfaidh riail a scríobhadh don chomhthiomsú cliant stopadh de bheith ag teacht le chéile go ciúin nuair a chumasaítear maisiú.

Nuair nach dteastaíonn ó chliaint ach seirbhísí laistigh den bhraisle a bhaint amach, is dearadh níos lú é an VPN a chríochnú ag VIP na seirbhíse ná ródú isteach i líonra na bpod. Coinníonn sé an comhthiomsú cliant go hiomlán lasmuigh de thábla ródaithe an CNI freisin.

An léim mhainneach a leithlisiú ón gcliant

Oibrigh amach agus stop ag an gcéad chéim chiúin. Tosaigh leis an piara VPN, ansin bain triail as seoladh pod éigin, ansin VIP seirbhíse, agus níor ach ina dhiaidh sin ceann scríbe poiblí. Bogann gach rath an teorainn léim amháin, agus ainmníonn gach teip an ciseal is fiú scrúdú. Tar éis aon rolladh amach, téigh isteach le exec agus léigh an sysctl arís, óir tosaíonn pod a athsholáthraítear ó réamhshocrú na híomhá agus tá réiteach nár bhí riamh sa mhanifest imithe cheana féin.

Liostaíonn doiciméadú Kubernetes ar úsáid sysctls i mbraisle cé na hainmneacha is féidir a shocrú trí chomhthéacs slándála an phod, agus is é an chéad áit le breathnú nuair a dhiúltaíonn admission don athrú.

Ailt ghaolmhara